Share via


küme IMPLICIT_TRANSACTIONS (Transact-SQL)

Bağlantı için örtülü bir işlem modunu ayarlar.

Topic link iconTransact-SQL sözdizimi kuralları

SET IMPLICIT_TRANSACTIONS { ON | OFF }

Remarks

ON, küme IMPLICIT_TRANSACTIONS bağlantıyı örtük işlem moduna ayarlar.Ne zaman OFF, bu bağlantıyı autocommit işlem moduna döndürür.

örtük işlem modunda bir bağlantıdır ve bağlantı şu anda bir işlem içinde değil, aþaðýdaki birini yürütülürken bir hareket başlatır:

TABLO DEĞİŞTİRME

GETİRME

İPTAL ETME

BAŞLANGIÇ HAREKET

VERME

SEÇİN

OLUŞTURMA

EKLEME

TABLOYU KES

SİLME

Açık

GÜNCELLEŞTİRME

BIRAKMA

Ifadeleri, bağlantı içinde açık bir hareketi ise, yeni bir işlem başlatılmaz.

Hareketler otomatik olarak AÇıK olan bu ayarın sonucu olarak açılan olmalı açıkça kaydedilmiş veya işlem sonunda kullanıcı tarafından geri alındı.Aksi halde geri kullanıcı bağlantıyı kestiğinde hareket ve içerdiği veri değişikliklerini alınır.Yukarıdaki ifadelerden birini çalıştırmak, bir hareketin amaç edinmiştir sonra yeni bir hareket başlatır.

örtük işlem modu bağlantı bağlantı döndüren bir küme IMPLICIT_TRANSACTIONS OFF deyim yürütür kadar etkin kalır otomatik yürütme modu.Hatasız tamamlanabilmesi için tüm tek tek ifadeleri autocommit modunda edilendir.

The SQL Server Native istemci OLE DB sağlayıcı for SQL Server and the SQL Server Native istemci ODBC driver automatically küme IMPLICIT_TRANSACTIONS to OFF when connecting. küme IMPLICIT_TRANSACTIONS varsayılanlarına KAPALı bağlantılar için SQLClient yönetilen bir sağlayıcı ve HTTP bitiş noktası alınan SOAP istekleri.

küme ANSI_DEFAULTS AÇıK olduğunda, küme IMPLICIT_TRANSACTIONS AÇıK'tır.

küme IMPLICIT_TRANSACTIONS ayarını ayarlayın yürütmek veya saat ve çözümleme saat değil.

Örnekler

Aşağıdaki örnek, açık ve örtülü olarak ile başlatılan hareketleri gösterir IMPLICIT_TRANSACTIONS küme ON. Kullandığı @@TRANCOUNT işlev, açık ve kapatılan hareketleri göstermek için.

USE AdventureWorks;
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 tran.
COMMIT TRANSACTION;
GO