Opisywanie partii

Ukończone

Partie języka T-SQL to kolekcje co najmniej jednej instrukcji języka T-SQL przesyłanej do programu SQL Server przez klienta jako pojedynczą jednostkę. Program SQL Server działa na wszystkich instrukcjach w partii w tym samym czasie podczas analizowania, optymalizowania i wykonywania kodu.

Jeśli jesteś osobą piszącą raporty, która zwykle pisze zapytania przy użyciu instrukcji SELECT, a nie procedur, nadal ważne jest, aby zrozumieć granice oddzielania operacji batch. Te granice będą mieć wpływ na twoją pracę nad zmiennymi i parametrami w procedurach składowanych i innych rutynach. Na przykład zmienna musi być zadeklarowana w tej samej sekcji, w której jest używana. Dlatego ważne jest, aby rozpoznać, co znajduje się w partii.

Partie są rozdzielane przez aplikację kliencką. Sposób oznaczania końca partii zależy od ustawień klienta. W przypadku klientów firmy Microsoft, w tym programu SQL Server Management Studio (SSMS), programu Azure Data Studio i narzędzia SQLCMD słowo kluczowe to GO.

W tym przykładzie istnieją dwie odrębne partie, z których każda kończy się poleceniem GO.

CREATE NEW <view_name>
AS ...
GO
CREATE PROCEDURE <procedure_name>
AS ...
GO

Terminator wsadowy GO nie jest słowem kluczowym T-SQL, ale jest rozpoznawany przez program SSMS w celu wskazania końca partii.

Podczas pracy z partiami języka T-SQL należy pamiętać o dwóch ważnych kwestiach:

  • Serie to granice zakresu zmiennych, co oznacza, że zmienna zdefiniowana w jednej serii może być przywołana tylko przez inny kod w tej samej serii.
  • Niektóre instrukcje, zazwyczaj instrukcje definicji danych, takie jak CREATE VIEW, CREATE FUNCTION i CREATE PROCEDURE, mogą nie być łączone z innymi w tej samej partii.

Praca z partiami

Partia to kolekcja instrukcji języka T-SQL przesłanych do programu SQL Server na potrzeby analizowania i wykonywania. Zrozumienie sposobu analizowania partii będzie przydatne podczas identyfikowania komunikatów o błędach i zachowania. Gdy partia jest przesyłana przez klienta, na przykład po naciśnięciu przycisku Wykonaj w programie SSMS, partia jest analizowana pod kątem błędów składni przez aparat programu SQL Server. Wszystkie znalezione błędy spowodują odrzucenie całej partii danych; w partii nie będzie częściowego wykonywania poleceń.

Jeśli partia przejdzie sprawdzanie składni, program SQL Server uruchamia inne kroki, rozpoznawanie nazw obiektów, sprawdzanie uprawnień i optymalizowanie kodu do wykonania. Po zakończeniu tego procesu i rozpoczęciu wykonywania, każda instrukcja kończy się powodzeniem lub niepowodzeniem oddzielnie. Jest to ważny kontrast w sprawdzaniu składni. Jeśli w jednym wierszu wystąpi błąd środowiska uruchomieniowego, może zostać wykonany następny wiersz, chyba że dodano obsługę błędów do kodu.

Na przykład następująca partia zawiera błąd składni:

INSERT INTO dbo.t1 VALUE(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO

Zostanie wyświetlony następujący komunikat o błędzie:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'VALUE'.

Wystąpił błąd w wierszu 1, ale cała partia jest odrzucana, a wykonanie nie jest kontynuowane z wierszem 2. Nawet jeśli każda z instrukcji INSERT została odwrócona i wystąpił błąd składniowy w drugim wierszu, pierwszy wiersz nie zostanie wykonany, ponieważ cała partia zostanie odrzucona.

W poprzednim przykładzie ta partia nie zawiera błędu:

INSERT INTO dbo.t1 VALUES(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO

W poprzednich przykładach użyliśmy instrukcji INSERT, a nie SELECT, ponieważ jest to bardziej typowe, aby instrukcje modyfikacji były grupowane w partiach niż instrukcje SELECT.