Udostępnij za pośrednictwem


ZESTAW IMPLICIT_TRANSACTIONS (Transact-SQL)

Ustawia tryb transakcja niejawna dla połączenia.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET IMPLICIT_TRANSACTIONS { ON | OFF }

Uwagi

Po USTAWIENIU ON, IMPLICIT_TRANSACTIONS ustawia połączenie w trybie transakcja niejawna .Kiedy OFF, zwraca połączenie AUTOCOMMIT wynosi tryb transakcji.

Gdy połączenie jest w trybie transakcja niejawna i połączenie nie jest aktualnie w transakcji, dowolne z następujących instrukcji wykonywania rozpocznie transakcję:

ALTER TABLE

FETCH

ODWOŁYWANIE

ROZPOCZĘCIE TRANSAKCJI

UDZIEL

WYBIERZ

TWORZENIE

WSTAW

OBCINANIE TABELI

USUŃ

OTWÓRZ

AKTUALIZACJA

UPUŚĆ

Jeśli połączenie jest już otwartych transakcji, oświadczeń nie rozpoczynaj nowej transakcji.

Transakcje, które są automatycznie otwierane jako wynik to ustawienie, przy czym na musi być jawnie przekazana lub wycofana przez użytkownika po zakończeniu transakcji.W przeciwnym razie transakcji i wszystkie zmiany danych, które zawiera są wycofywany po rozłącza użytkownika.Po transakcja została zatwierdzona, jedną z powyższych instrukcji wykonywania rozpoczyna nową transakcję.

Tryb niejawnej transakcji pozostaje, dopóki połączenie wykonuje SET IMPLICIT_TRANSACTIONS OFF instrukcja, która zwraca połączenie w tryb autozatwierdzania.W tryb autozatwierdzaniawszystkie poszczególne instrukcje są zobowiązane, jeśli one ukończone pomyślnie.

SQL Server Macierzystego klienta OLE DB Provider for SQL Server i SQL Server sterownika ODBC macierzystym klienta automatycznie zestaw IMPLICIT_TRANSACTIONS na OFF podczas łączenia.Ustaw IMPLICIT_TRANSACTIONS domyślnie wyłączona dla połączeń z SQLClient zarządzanego dostawcai dla żądań protokołu SOAP otrzymane za pośrednictwem protokołu HTTP punkty końcowe.

Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie IMPLICIT_TRANSACTIONS jest włączone.

Ustawienie ustawianie IMPLICIT_TRANSACTIONS jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.

Przykłady

Poniższy przykład ilustruje transakcji, które są uruchamiane jawnie i niejawnie ze IMPLICIT_TRANSACTIONS zestaw ON.Używa on @@TRANCOUNT funkcja do wykazania otwartych i zamkniętych transakcji.

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