Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'te
ambarMicrosoft Fabric'te SQL veritabanı
Bağlantı için modu BEGIN TRANSACTIONörtük olarak ayarlıyor.
Transact-SQL söz dizimi kuralları
Sözdizimi
SET IMPLICIT_TRANSACTIONS { ON | OFF }
Açıklamalar
Ne zaman ONsistem örtük işlem modundadır. Bu, aşağıdaki @@TRANCOUNT = 0Transact-SQL ifadelerinden herhangi birinin yeni bir işlem başlatması anlamına gelir. Bu, ilk olarak görünmeyen BEGIN TRANSACTION bir varlığın idam edilmesine eşdeğer:
ALTER TABLEBEGIN TRANSACTIONCREATEDELETEDROPFETCHGRANTINSERTMERGEOPENREVOKE-
SELECT(Bkz . açıklayıcı açıklama) TRUNCATE TABLEUPDATE
Ne OFFolduğunda, önceki T-SQL ifadelerinin her biri görünmeyen BEGIN TRANSACTION ve görünmeyen COMMIT TRANSACTION bir ifadeyle sınırlıdır. Ne OFFzaman ise, işlem modunun otomatik commit olduğunu söyleriz. Eğer T-SQL kodunuz görünür şekilde bir BEGIN TRANSACTION, veriyorsa, işlem modunun açık olduğunu söyleriz.
Anlaşılması gereken birkaç açıklık noktası vardır:
İşlem modu örtük olduğunda,
BEGIN TRANSACTIONzaten görünmez bir şey verilmez.@@TRANCOUNT > 0Ancak, açıkBEGIN TRANSACTIONifadeler yine@@TRANCOUNTde artıyor.Açıklamalarınız
INSERTve iş biriminizdeki diğer her şey tamamlandığında,COMMIT TRANSACTIONbeyanname vermeniz gerekir ve@@TRANCOUNTtekrar sıfıra indirilmelidir. Ya da bir taneROLLBACK TRANSACTIONverebilirsiniz.
SELECTTablodan seçilmeyen cümleler örtük işlemleri başlatmaz. Örneğin,SELECT GETDATE();işlem gerektirmez.SELECT 1, 'ABC';İpucu işlemler beklenmedik şekilde ANSI temerrütlerinden kaynaklanabilir
ON. Detaylar için bkz. SET ANSI_DEFAULTS.Ayarlamak
IMPLICIT_TRANSACTIONSONpopüler değil. Çoğu durumda,IMPLICIT_TRANSACTIONSONburada ise, çünküSET ANSI_DEFAULTS ONbelirlenmiştir.SQL Server Native Client OLE DB Provider for SQL Server ve SQL Server Native Client ODBC sürücüsü, bağlanırken otomatik
IMPLICIT_TRANSACTIONSolarak ayarlanırOFF. SQLClientIMPLICIT_TRANSACTIONSyönetilen sağlayıcı ile bağlantılar ve HTTP uç noktaları üzerinden alınan SOAP istekleri için varsayılan ayarları ayarlayınOFF.
Mevcut ayarı görmek IMPLICIT_TRANSACTIONSiçin aşağıdaki sorguyu çalıştırın.
DECLARE @IMPLICIT_TRANSACTIONS AS VARCHAR (3) = 'OFF';
IF ((2 & @@OPTIONS) = 2)
SET @IMPLICIT_TRANSACTIONS = 'ON';
SELECT @IMPLICIT_TRANSACTIONS AS IMPLICIT_TRANSACTIONS;
Örnekler
Aşağıdaki Transact-SQL scripti birkaç farklı test vakası çalıştırıyor. Ayrıca, her test vakasından elde edilen ayrıntılı davranış ve sonuçları gösteren metin çıktısı da sağlanır.
-- Preparations.
SET NOCOUNT ON;
SET IMPLICIT_TRANSACTIONS OFF;
GO
WHILE (@@TRANCOUNT > 0) COMMIT TRANSACTION;
GO
IF (OBJECT_ID(N'dbo.t1',N'U') IS NOT NULL) DROP TABLE dbo.t1;
GO
CREATE table dbo.t1 (a INT);
GO
PRINT N'-------- [Test A] ---- OFF ----';
PRINT N'[A.01] Now, SET IMPLICIT_TRANSACTIONS OFF.';
PRINT N'[A.02] @@TRANCOUNT, at start, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
SET IMPLICIT_TRANSACTIONS OFF;
GO
INSERT INTO dbo.t1 VALUES (11);
INSERT INTO dbo.t1 VALUES (12);
PRINT N'[A.03] @@TRANCOUNT, after INSERTs, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
PRINT N' ';
PRINT N'-------- [Test B] ---- ON ----';
PRINT N'[B.01] Now, SET IMPLICIT_TRANSACTIONS ON.';
PRINT N'[B.02] @@TRANCOUNT, at start, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
SET IMPLICIT_TRANSACTIONS ON;
GO
INSERT INTO dbo.t1 VALUES (21);
INSERT INTO dbo.t1 VALUES (22);
PRINT N'[B.03] @@TRANCOUNT, after INSERTs, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
COMMIT TRANSACTION;
PRINT N'[B.04] @@TRANCOUNT, after COMMIT, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
PRINT N' ';
PRINT N'-------- [Test C] ---- ON, then BEGIN TRAN ----';
PRINT N'[C.01] Now, SET IMPLICIT_TRANSACTIONS ON.';
PRINT N'[C.02] @@TRANCOUNT, at start, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
SET IMPLICIT_TRANSACTIONS ON;
GO
BEGIN TRANSACTION;
INSERT INTO dbo.t1 VALUES (31);
INSERT INTO dbo.t1 VALUES (32);
PRINT N'[C.03] @@TRANCOUNT, after INSERTs, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
COMMIT TRANSACTION;
PRINT N'[C.04] @@TRANCOUNT, after a COMMIT, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
COMMIT TRANSACTION;
PRINT N'[C.05] @@TRANCOUNT, after another COMMIT, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
PRINT N' ';
PRINT N'-------- [Test D] ---- ON, INSERT, BEGIN TRAN, INSERT ----';
PRINT N'[D.01] Now, SET IMPLICIT_TRANSACTIONS ON.';
PRINT N'[D.02] @@TRANCOUNT, at start, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
SET IMPLICIT_TRANSACTIONS ON;
GO
INSERT INTO dbo.t1 VALUES (41);
BEGIN TRANSACTION;
INSERT INTO dbo.t1 VALUES (42);
PRINT N'[D.03] @@TRANCOUNT, after INSERTs, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
COMMIT TRANSACTION;
PRINT N'[D.04] @@TRANCOUNT, after a COMMIT, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
COMMIT TRANSACTION;
PRINT N'[D.05] @@TRANCOUNT, after another COMMIT, == ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
GO
-- Clean up.
SET IMPLICIT_TRANSACTIONS OFF;
GO
WHILE (@@TRANCOUNT > 0) COMMIT TRANSACTION;
GO
DROP TABLE dbo.t1;
GO
Sonra, önceki Transact-SQL bebesinden çıkan metin çıktısıdır.
-------- [Test A] ---- OFF ----
[A.01] Now, SET IMPLICIT_TRANSACTIONS OFF.
[A.02] @@TRANCOUNT, at start, == 0
[A.03] @@TRANCOUNT, after INSERTs, == 0
-------- [Test B] ---- ON ----
[B.01] Now, SET IMPLICIT_TRANSACTIONS ON.
[B.02] @@TRANCOUNT, at start, == 0
[B.03] @@TRANCOUNT, after INSERTs, == 1
[B.04] @@TRANCOUNT, after COMMIT, == 0
-------- [Test C] ---- ON, then BEGIN TRAN ----
[C.01] Now, SET IMPLICIT_TRANSACTIONS ON.
[C.02] @@TRANCOUNT, at start, == 0
[C.03] @@TRANCOUNT, after INSERTs, == 2
[C.04] @@TRANCOUNT, after a COMMIT, == 1
[C.05] @@TRANCOUNT, after another COMMIT, == 0
-------- [Test D] ---- ON, INSERT, BEGIN TRAN, INSERT ----
[D.01] Now, SET IMPLICIT_TRANSACTIONS ON.
[D.02] @@TRANCOUNT, at start, == 0
[D.03] @@TRANCOUNT, after INSERTs, == 2
[D.04] @@TRANCOUNT, after a COMMIT, == 1
[D.05] @@TRANCOUNT, after another COMMIT, == 0
İlgili içerik
- ALTER TABLE (Transact-SQL)
- BAŞLAYIN (Transact-SQL)
- TABLO OLUŞTUR (Transact-SQL)
- SILME (Transact-SQL)
- DROP TABLE (Transact-SQL)
- GETIR (Transact-SQL)
- HİBE (Transact-SQL)
- INSERT (Transact-SQL)
- BIRLEŞME (Transact-SQL)
- AÇIK (Transact-SQL)
- İPTAL ETMEK (Transact-SQL)
- SEÇ (Transact-SQL)
- SET Deyimleri (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- @@TRANCOUNT (Transact-SQL)
- TRUNCATE MASA (Transact-SQL)
- GÜNCELLEME (Transact-SQL)