Aracılığıyla paylaş


SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Transact-SQL COMMIT TRANSACTION ifadesinin davranışını kontrol eder. Bu ayar için varsayılan değer KAPALIDIR. Bu, bir işlem yaptığınızda sunucunun imleci kapatmayacağı anlamına gelir.

Transact-SQL söz dizimi kuralları

Sözdizimi

  
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }  

Açıklamalar

SET CURSOR_CLOSE_ON_COMMIT AÇIKSA, bu ayar ISO ile uyumlu olarak commit veya rollback üzerindeki açık imleci kapatır. SET CURSOR_CLOSE_ON_COMMIT KAPALI olduğunda, işlem yapıldığında imleç kapanmaz.

Uyarı

ON olarak AYARLANT CURSOR_CLOSE_ON_COMMIT geri alma işlemi bir SAVE TRANSACTION ifadesinden bir savepoint_name'ye geri alındığında geri dönüş sırasında açık imleci kapatmaz.

SET CURSOR_CLOSE_ON_COMMIT KAPALI olduğunda, bir ROLLBACK ifadesi yalnızca tam doldurulmamış açık asenkron imleci kapatır. Değişiklikler yapıldıktan sonra açılan STATİK veya DUYARSIZ İLemler, değişiklikler geri alındığında verinin durumunu yansıtmaz.

SET CURSOR_CLOSE_ON_COMMIT, CURSOR_CLOSE_ON_COMMIT veritabanı seçeneğiyle aynı davranışı kontrol eder. Eğer CURSOR_CLOSE_ON_COMMIT AÇIK veya KAPALI olarak ayarlanmışsa, bu ayar bağlantıda kullanılır. SET CURSOR_CLOSE_ON_COMMIT belirtilmemişse, sys.databases katalog görünümündeki is_cursor_close_on_commit_on sütunundaki değer uygulanır.

SQL Server Native Client OLE DB Provider for SQL Server ve SQL Server Native Client ODBC sürücüsü, bağlandıklarında CURSOR_CLOSE_ON_COMMIT OFF olarak ayarlanır. DB-Library otomatik olarak CURSOR_CLOSE_ON_COMMIT değerini belirlemez.

SET ANSI_DEFAULTS AÇIKKEN SET CURSOR_CLOSE_ON_COMMIT etkinleştirilir.

SET CURSOR_CLOSE_ON_COMMIT ayarı işleme veya çalışma zamanında ayarlanır, ayrıştırma zamanında değil.

Bu ayarın mevcut ayarını görmek için aşağıdaki sorguyu çalıştırın.

DECLARE @CURSOR_CLOSE VARCHAR(3) = 'OFF';  
IF ( (4 & @@OPTIONS) = 4 ) SET @CURSOR_CLOSE = 'ON';  
SELECT @CURSOR_CLOSE AS CURSOR_CLOSE_ON_COMMIT;  

Permissions

"" genel "" rolüne üyelik gerektirir.

Örnekler

Aşağıdaki örnek, bir işlemde bir imleci tanımlar ve işlem tamamlandıktan sonra onu kullanmaya çalışır.

-- SET CURSOR_CLOSE_ON_COMMIT  
-------------------------------------------------------------------------------  
SET NOCOUNT ON;  
  
CREATE TABLE t1 (a INT);  
GO   
  
INSERT INTO t1   
VALUES (1), (2);  
GO  
  
PRINT '-- SET CURSOR_CLOSE_ON_COMMIT ON';  
GO  
SET CURSOR_CLOSE_ON_COMMIT ON;  
GO  
PRINT '-- BEGIN TRAN';  
BEGIN TRAN;  
PRINT '-- Declare and open cursor';  
DECLARE testcursor CURSOR FOR  
    SELECT a FROM t1;  
OPEN testcursor;  
PRINT '-- Commit tran';  
COMMIT TRAN;  
PRINT '-- Try to use cursor';  
FETCH NEXT FROM testcursor;  
CLOSE testcursor;  
DEALLOCATE testcursor;  
GO  
PRINT '-- SET CURSOR_CLOSE_ON_COMMIT OFF';  
GO  
SET CURSOR_CLOSE_ON_COMMIT OFF;  
GO  
PRINT '-- BEGIN TRAN';  
BEGIN TRAN;  
PRINT '-- Declare and open cursor';  
DECLARE testcursor CURSOR FOR  
    SELECT a FROM t1;  
OPEN testcursor;  
PRINT '-- Commit tran';  
COMMIT TRAN;  
PRINT '-- Try to use cursor';  
FETCH NEXT FROM testcursor;  
CLOSE testcursor;  
DEALLOCATE testcursor;  
GO  
DROP TABLE t1;  
GO  

Ayrıca Bkz.

VERİ TABANINI DEĞİŞTİR (Transact-SQL)
BAŞLAYIN (Transact-SQL)
CLOSE (Transact-SQL)
İŞLEME İŞLEMI (Transact-SQL)
GERI ALMA İŞLEMI (Transact-SQL)
SET Deyimleri (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)