Autocommit hareketleri

Autocommit modu varsayılan işlem yönetimi modu olan SQL Server Veritabanı Altyapısı.Her Transact-SQL deyim kaydedilmiş veya geri tamamlandığında alınıyor.Bir deyim başarıyla tamamlarsa, taahhüt etmiştir; herhangi bir hatayla karşılaşırsa, geri alınır.Bir bağlantı için bir örnek , Veritabanı Altyapısı çalışır otomatik yürütme modu olduğunda bu varsayılan mod değil geçersiz tarafından doğrudan ya da dolaylı hareketleri.Autocommit modu da ado, ole db, odbc ve db Kitaplığı için varsayılan moddur.

Bir bağlantı için bir örnek , Veritabanı Altyapısı BEGIN TRANSACTION deyim başlayıncaya kadar otomatik yürütme modu bir belirtik işlem, veya kesin hareketin küme.Açık hareket tamamlandıktan veya geri alınmış veya zaman örtük işlem mod kapalı, bağlantı autocommit modu için verir.

Ne zaman, set IMPLICIT_TRANSACTIONS ayarlar bağlantı örtük işlem mod.Ne zaman kapalı, onu bağlantı autocommit hareket moda geri döner.

Derleme ve çalıştırma -saat hataları

otomatik yürütme modu, bazen göründüğü gibi bir örnek , Veritabanı Altyapısı toplu iş iş geri tüm bir toplu iş iş yerine yalnızca bir sql deyim.Böyle bir derleme hatası, olmayan bir çalışma - karşılaşılan hata ise,saat hata.Bir derleme hatası engeller Veritabanı Altyapısı yürütme planı oluştururken alınan bu nedenle toplu iş hiçbir şey yürütüldüğünde.Tüm ifadeleri bir hata üretmeden önce geri alınmış, görünür, ancak hata toplu iş iş ta yürütülmekte olan engelledi.Aşağıdaki örnekte, hiçbiri INSERT üçüncü toplu iş deyimleri çalıştırılır nedeniyle bir derleme hatası.Onu görünen ilk iki INSERT deyimleri toplu geri onlar hiçbir zaman yürütüldüğünde.

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

Aşağıdaki örnekte, üçüncü INSERT deyim oluşturur run -saat yinelenen birincil anahtar hata.İlk iki INSERT başarılı ve kabul edilen, ifadeleri run - sonra kalırlar dolayısıylasaat hata.

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

The Veritabanı Altyapısı uses deferred name resolution, in which object names are not resolved until execution time.Aşağıdaki örnekte, ilk iki INSERT deyimleri çalıştırılır ve kabul edilen ve bu iki satır kalır TestBatch sonra üçüncü bir tablo INSERT deyim oluşturur run -saat varolmayan bir tabloya başvuran tarafından hata.

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

Ayrıca bkz.

Kavramlar