Transakcje AUTOCOMMIT wynosi
Tryb AUTOCOMMIT wynosi jest domyślny tryb zarządzania transakcji z Aparat baz danych programu SQL Server.Każdy Transact-SQL instrukcja zostanie przekazana lub wycofywany po zakończeniu.Jeśli instrukcja zakończy się pomyślnie, jest zobowiązana; Jeśli wykryje jakiś błąd go przywracana jest.Połączenie z wystąpienie Aparat baz danych działa tryb autozatwierdzania wynosi zawsze, gdy ten tryb domyślny nie został zastąpiony przez transakcje bezpośrednie lub pośrednie.Tryb AUTOCOMMIT wynosi jest także tryb domyślny dla obiektów ADO, OLE DB, ODBC i biblioteki bazy danych.
Połączenie z wystąpienie Aparat baz danych działa tryb autozatwierdzania wynosi, dopóki nie rozpocznie się instrukcja transakcji rozpocząć transakcja jawna, lub niejawnej transakcji jest zestaw na.Gdy transakcja jawna jest przekazana lub wycofana lub transakcja niejawna tryb jest wyłączony, połączenie powróci do trybu AUTOCOMMIT wynosi.
Kiedy, ustaw IMPLICIT_TRANSACTIONS ustawia połączenie transakcja niejawna tryb.Kiedy OFF, zwraca połączenie AUTOCOMMIT wynosi tryb transakcji.
Kompilacji i uruchom -czas błędów
tryb autozatwierdzania wynosi Czasami występuje jako Jeśli wystąpienie Aparat baz danych została wycofana cały partia zamiast tylko jednej instrukcja języka SQL.W takim przypadku błąd kompilacji, nie Uruchom - wystąpił błądczas błąd.Błąd kompilacji zapobiega Aparat baz danych z budynku plan wykonania, więc nic w partia jest wykonywany.Chociaż wydaje się, że wszystkie instrukcje przed jednym generującego błąd zostały wycofane, błąd uniemożliwił cokolwiek w partia wykonywany.W poniższym przykładzie żadna z INSERT instrukcji w trzecim partia są wykonywane, ponieważ błąd kompilacji.Wydaje się, że dwa pierwsze INSERT instrukcji jest wycofywany po nigdy nie są one wykonywane.
USE AdventureWorks2008R2;
GO
CREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3));
GO
INSERT INTO TestBatch VALUES (1, 'aaa');
INSERT INTO TestBatch VALUES (2, 'bbb');
INSERT INTO TestBatch VALUSE (3, 'ccc'); -- Syntax error.
GO
SELECT * FROM TestBatch; -- Returns no rows.
GO
W poniższym przykładzie trzeciego INSERT instrukcja generuje duplikat run-czas klucz podstawowy błąd.Dwa pierwsze INSERT instrukcje są pomyślne i popełnione, są więc nadal po uruchomieniu -czas błąd.
USE AdventureWorks2008R2;
GO
CREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3));
GO
INSERT INTO TestBatch VALUES (1, 'aaa');
INSERT INTO TestBatch VALUES (2, 'bbb');
INSERT INTO TestBatch VALUES (1, 'ccc'); -- Duplicate key error.
GO
SELECT * FROM TestBatch; -- Returns rows 1 and 2.
GO
Aparat baz danych Używa odroczone rozpoznawania nazw, w obiekcie, których nazwy nie są rozpoznawane do czasu wykonania czas.W poniższym przykładzie pierwsze dwie INSERT sprawozdania są wykonywane i zatwierdzone i te dwa wiersze pozostają w TestBatch tabela po trzecim INSERT instrukcja generuje Uruchom -czas błąd, odwołując się do tabela, która nie istnieje.
USE AdventureWorks2008R2;
GO
CREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3));
GO
INSERT INTO TestBatch VALUES (1, 'aaa');
INSERT INTO TestBatch VALUES (2, 'bbb');
INSERT INTO TestBch VALUES (3, 'ccc'); -- Table name error.
GO
SELECT * FROM TestBatch; -- Returns rows 1 and 2.
GO