ZESTAW IMPLICIT_TRANSACTIONS (Transact-SQL)
Ustawia tryb transakcja niejawna dla połączenia.
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
Zobacz także