W programie SQL Server partia to grupa składająca się z co najmniej jednej instrukcji T-SQL wysyłana w tym samym czasie z aplikacji do programu SQL Server w celu wykonania.
Jeśli napotkasz taki błąd:
Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.
Dzieje się tak prawdopodobnie dlatego, że łączysz instrukcję z innymi instrukcjami w tej samej wiązce, co nie jest dozwolone w partiach.
Pierwsza część komunikatu o błędzie będzie zależeć od rzeczywistego oświadczenia, którego używasz w swojej partii. W moim przypadku jest to CREATE VIEW
, ale równie dobrze może to być CREATE PROCEDURE
, CREATE FUNCTION
, itp., jeśli są to stwierdzenia, których używasz.
Przykład
Oto przykład kodu, który może spowodować ten błąd:
DROP VIEW IF EXISTS vAllCustomers;
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
Wynik:
Msg 111, Level 15, State 1, Line 3 'CREATE VIEW' must be the first statement in a query batch.
W moim przypadku próbuję uruchomić dwa stwierdzenia; DROP VIEW
oświadczenie i CREATE VIEW
oświadczenie.
Reguły partii T-SQL stwierdzają, że CREATE VIEW
wyciągu nie można łączyć z innymi wyciągami w tej samej partii.
Innymi słowy, CREATE VIEW
może być jedyną instrukcją w swojej partii.
Jak naprawić błąd
Możemy naprawić powyższy błąd, po prostu dodając separator partii po pierwszej instrukcji.
W SQL Server, GO
słowo kluczowe sygnalizuje koniec partii. Dokładniej, narzędzia SQL Server interpretują GO
jako sygnał, że powinni wysłać bieżącą partię instrukcji T-SQL do instancji SQL Server.
Możemy więc zmienić poprzednie stwierdzenie na to:
DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO
Dodawanie GO
rozwiązuje problem, rozdzielając instrukcje na dwie oddzielne partie.
Zwróć uwagę, że GO
nie jest w rzeczywistości częścią T-SQL. Jest to polecenie rozpoznawane przez narzędzia SQL Server w celu rozdzielania instrukcji na partie.
Możesz mieć możliwość zmiany separatora wsadowego, w zależności od narzędzia używanego do łączenia się z SQL Server. Na przykład w SSMS możesz znaleźć tę opcję, przechodząc do:Narzędzia> Opcje> Wykonywanie zapytania> Serwer SQL i poszukaj opcji, która mówi coś w stylu „Określ słowo lub znak, którego można użyć do oddzielenia partii”.