Batches

A batch is a group of one or more Transact-SQL statements sent at the same time from an application to SQL Server for execution.SQL Server compiles the statements of a batch into a single executable unit, called an execution plan.Instrukcje w realizacji planu są następnie wykonywany jeden na czas.

Każdy Transact-SQL Instrukcja powinno zostać zakończone średnikiem. This requirement is not enforced, but the ability to end a statement without a semicolon is deprecated and may be removed in a future version of Microsoft SQL Server.

Błąd kompilacji, takie jak błąd składniowy, uniemożliwia opracowanie planu wykonania.W związku z tym, nie instrukcji w partia są wykonywane.

błąd czas wykonania, takie jak Przepełnienie arytmetyczne lub naruszenie ograniczenia, ma jeden z następujących efektów:

  • Większość wykonywania-czas błędy zatrzymania bieżącej instrukcja i instrukcja, które po nim następują w instancji.

  • Niektóre błędy w czasie wykonywania, takie jak naruszeniach ograniczeń zatrzymanie bieżącej instrukcja.Wszystkie pozostałe instrukcje w partia są wykonywane.

Nie dotyczy instrukcja, które są wykonywane przed instrukcją, który napotkał błąd czas wykonania.Jedynym wyjątkiem jest błąd powoduje, że można wycofać transakcji, gdy jest partia w transakcji.W takim przypadek ewentualnych modyfikacji nieprzydzielonych dane wprowadzone przed błąd czas wykonania są przywracane.

Załóżmy na przykład, istnieją 10 instrukcji w partia.Piąty instrukcja zawiera błąd składniowy, wykonywane są nie instrukcji w instancji.Jeśli partia są kompilowane, a następnie druga instrukcja nie powiedzie się podczas uruchamiania, wyniki dla pierwszej instrukcji pozostają niezmienione, ponieważ została już wykonana.

SQL Server zawiera instrukcja poziom ponownej kompilacji.Oznacza to, jeśli oświadczenie wyzwala ponowną kompilację, tylko w tej instrukcja są ponownie kompilowane, a nie całej partia.To zachowanie różni się od SQL Server 2000. Proszę rozważyć następujący przykład zawierający CREATE TABLE Instrukcja i cztery INSERT instrukcje w tym samym partia.

CREATE TABLE dbo.t3(a int) ;
INSERT INTO dbo.t3 VALUES (1) ;
INSERT INTO dbo.t3 VALUES (1,1) ;
INSERT INTO dbo.t3 VALUES (3) ;
GO

SELECT * FROM dbo.t3 ;

Po pierwsze partia jest skompilowany.The CREATE TABLE instrukcja is compiled, but because the tabela dbo.t3 does not yet exist, the INSERT statements are not compiled.

Po drugie partia rozpoczyna się wykonać.Tabela jest tworzona.Pierwszy INSERT jest skompilowany i następnie wykonywane natychmiast. Tabela ma teraz jeden wiersz.Następnie w drugim INSERT Instrukcja jest skompilowany. Kompilacja zakończy się niepowodzeniem, a partia zostanie zakończona.The SELECT instrukcja returns one row.

W SQL Server 2000, partia rozpoczyna się wykonać i tworzona jest tabela. Trzy INSERT instrukcje są kompilowane jeden po drugim, ale nie są wykonywane. Ponieważ druga INSERT powoduje, że błąd kompilacji, całej partia jest zakończona. The SELECT instrukcja returns no rows.

Reguły dotyczące używania instancji

Do korzystania z serii obowiązują następujące reguły:

  • Nie można łączyć instrukcji CREATE DEFAULT, CREATE funkcja, CREATE PROCEDURE, CREATE RULE, CREATE SCHEMA, CREATE TRIGGER i CREATE VIEW z innych instrukcji w partia.instrukcja CREATE musi zaczynać się partia.Wszystkie inne instrukcje występujące w tym partia będzie interpretowana jako części definicji pierwszej instrukcja CREATE.

  • Nie można zmienić tabela, a następnie odwołanie do nowej kolumny w tym samym partia.

  • Jeśli Instrukcja wykonać jest pierwszą instrukcją w partia, słowo kluczowe wykonać nie jest wymagane.Słowo kluczowe wykonać jest wymagany, jeśli instrukcja wykonać nie jest pierwszą instrukcją w partia.

Important noteImportant Note:

Pliki partia może zawierać poświadczenia przechowywanych w postaci zwykłego tekstu.Poświadczenia mogą być echoed na ekranie użytkownika podczas wykonywania zadań wsadowych.