2012-03-22 11 views
5

sprawieNie można ustawić IDENTITY_INSERT w partii

Obecnie pracuję nad bazy wysiewu skryptu, wykonany z sqlcmd. Na przykład ten przykładowy skrypt:

IF (SELECT COUNT(*) FROM Genders)=0 
BEGIN 
    PRINT N'Seeding table Genders...' 

    SET IDENTITY_INSERT Genders ON 
    GO 

    INSERT INTO Genders (GenderId, Description) VALUES (0, 'Onbekend'); 
    INSERT INTO Genders (GenderId, Description) VALUES (1, 'Vrouw'); 
    INSERT INTO Genders (GenderId, Description) VALUES (2, 'Man'); 
    INSERT INTO Genders (GenderId, Description) VALUES (3, 'Onzijdig'); 
    INSERT INTO Genders (GenderId, Description) VALUES (4, 'Vrouwman'); 
    INSERT INTO Genders (GenderId, Description) VALUES (5, 'Manvrouw'); 

    SET IDENTITY_INSERT Genders OFF 
END 
GO 

Problem

Jednak gdybym go wykonać z sqlcmd trybie w SQL Server Management Studio, to daje mi ten błąd:

Msg 102, Poziom 15, Stan 1, Wiersz 5 Niepoprawna składnia w pobliżu "WŁ.".

Msg 102, Poziom 15, Stan 1, Wiersz 10 Niepoprawna składnia w pobliżu "KONIEC".

Wyszukałem niektóre z nich, ale nie mogę określić, co robię źle. Bez IF/BEGIN/END, jeśli działa, ale najpierw chciałbym wykonać test.

Pytania:

  • coś robię źle?
  • Jeśli to niemożliwe, dostępne obejście jest dostępne?

Z góry dziękuję !!

+3

Usuń GO po zestaw identity_insert (...) –

+1

Czy działa bez "GO"? –

+0

Och, to było głupie ... teraz działa, dlaczego GO nie jest teraz potrzebny? –

Odpowiedz

5

Nie możesz mieć GO w obrębie BEGIN i END. Wypróbuj następujące

SET IDENTITY_INSERT Genders ON 

IF (SELECT COUNT(*) FROM Genders)=0 
BEGIN 
    PRINT N'Seeding table Genders...' 

    INSERT INTO Genders ... 

END 

SET IDENTITY_INSERT Genders OFF 
GO 
Powiązane problemy