set IMPLICIT_TRANSACTIONS (Transact-SQL)
örtük işlem modu bağlantı için ayarlar.
Sözdizimi
SET IMPLICIT_TRANSACTIONS { ON | OFF }
Açıklamalar
on, set IMPLICIT_TRANSACTIONS bağlantı örtük işlem moduna ayarlar.Ne zaman kapalı, onu bağlantı autocommit hareket moda geri döner.
örtük işlem modunda bir bağlantıdır ve bağlantı değil şu anda bir hareket olduğunda aşağıdaki ifadelerden birini yürütülürken bir hareket başlatır:
TABLO DEĞİŞTİRME |
GETİRME |
İPTAL ETME |
BAŞLANGIÇ İŞLEM |
GRANT |
SEÇİN |
OLUŞTURMA |
EKLE |
TRUNCATE TABLE |
SİL |
AÇIK |
GÜNCELLEŞTİRME |
BIRAK |
Bağlantı açık bir işlemde ise, yeni bir hareket ifadeler başlatmayın.
AÇIK olan bu ayarı sonucunda otomatik olarak açılan hareketleri açıkça kabul edilen veya hareket sonunda kullanıcı tarafından geri gerekir.Aksi takdirde geri kullanıcı bağlantıyı kestiğinde hareket ve içerdiği tüm veri değişiklikleri alınır.Bir hareket kararlıdır sonra yukarıdaki deyimlerden yürütme yeni bir hareket başlatır.
Kesin hareketin modunu, bağlantı bağlantı otomatik yürütme modudöndüğünde bir set IMPLICIT_TRANSACTIONS off deyimyürütür kadar yürürlükte kalır.otomatik yürütme modubaşarıyla tamamlanması durumunda tüm tek tek ifadelerini edilendir.
SQL Server Yerel istemci ole DB sağlayıcısı için SQL Server ve SQL Server yerel istemci odbc sürücüsü otomatik olarak küme IMPLICIT_TRANSACTIONS bağlanırken off için.off set IMPLICIT_TRANSACTIONS varsayılanlarına bağlantılar için SQLClient yönetilen sağlayıcıve http bitiş noktaları. alınan soap istekleri
set ANSI_DEFAULTS on olarak ayarlandığında, set IMPLICIT_TRANSACTIONS açık'tır.
set IMPLICIT_TRANSACTIONS ayarı yürütmek sırasında küme veya çalışma saat ve ayrıştırma saatzaman.
Örnekler
Aşağıdaki örnek, açık ve örtülü ile başlatılan hareketleri gösterir IMPLICIT_TRANSACTIONS küme ON.Kullandığı açık ve kapatılan hareketleri göstermek için@@TRANCOUNTişlev .
USE AdventureWorks2008R2;
GO
SET NOCOUNT ON;
GO
SET IMPLICIT_TRANSACTIONS OFF;
GO
PRINT N'Tran count at start = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
IF OBJECT_ID(N'dbo.t1',N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
CREATE table dbo.t1 (a int);
GO
INSERT INTO dbo.t1 VALUES (1);
GO
PRINT N'Use explicit transaction.';
BEGIN TRANSACTION;
GO
INSERT INTO dbo.t1 VALUES (2);
GO
PRINT N'Tran count in explicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
COMMIT TRANSACTION;
GO
PRINT N'Tran count after explicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
PRINT N'Setting IMPLICIT_TRANSACTIONS ON.';
GO
SET IMPLICIT_TRANSACTIONS ON;
GO
PRINT N'Use implicit transactions.';
GO
-- No BEGIN TRAN needed here.
INSERT INTO dbo.t1 VALUES (4);
GO
PRINT N'Tran count in implicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
COMMIT TRANSACTION;
PRINT N'Tran count after implicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
PRINT N'Nest an explicit transaction with IMPLICIT_TRANSACTIONS ON.';
GO
PRINT N'Tran count before nested explicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
BEGIN TRANSACTION;
PRINT N'Tran count after nested BEGIN TRAN in implicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
INSERT INTO dbo.t1 VALUES (5);
COMMIT TRANSACTION;
PRINT N'Tran count after nested explicit transaction = '
+ CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
-- Commit outstanding transaction.
COMMIT TRANSACTION;
GO
Ayrıca bkz.