Megosztás a következőn keresztül:


SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Szabályozza a Transact-SQL COMMIT TRANSACTION utasítás viselkedését. Ennek az alapértelmezett értéke KIKAPCSOLVA. Ez azt jelenti, hogy a szerver nem zárja le a kurzorokat, amikor tranzakciót kötünk el.

Transact-SQL szintaxis konvenciók

Szemantika

  
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }  

Megjegyzések

Amikor a SET CURSOR_CLOSE_ON_COMMIT be van kapcsolva, ez a beállítás lezárja az összes nyitott kurzort commit vagy rollback esetén az ISO-nak megfelelően. Amikor a SET CURSOR_CLOSE_ON_COMMIT KIKAPCSOLVA, a kurzor nem záródik le egy tranzakció elvégzése után.

Megjegyzés:

A BEON CURSOR_CLOSE_ON_COMMIT beállítása nem zárja be a nyitott kurzorokat visszagörgetéskor, ha a visszafordítást egy SAVE TRANSACTION utasításból származó savepoint_name-re alkalmazzák.

Ha a SET CURSOR_CLOSE_ON_COMMIT KIKAPCSOLVA, a ROLLBACK utasítás csak olyan aszinkron kurzorokat zár be, amelyek nincsenek teljesen feltöltve. A módosítások után megnyitott STATIC vagy INSENSITIVE kurzorok már nem tükrözik az adatok állapotát, ha a módosításokat visszafordítjuk.

A SET CURSOR_CLOSE_ON_COMMIT ugyanazt a viselkedést szabályozza, mint a CURSOR_CLOSE_ON_COMMIT adatbázis opció. Ha CURSOR_CLOSE_ON_COMMIT be vagy KIKAPCSOLVA van, akkor ezt a beállítást használják a kapcsolaton. Ha a SET CURSOR_CLOSE_ON_COMMIT nem volt megadva, akkor a sys.databases katalógusnézet is_cursor_close_on_commit_on oszlopának értéke érvényes.

Az SQL Server Native Client OLE DB Provider for SQL Server és az SQL Server Native Client ODBC illesztőprogram is OFF-ra állítja CURSOR_CLOSE_ON_COMMIT-t kapcsolódáskor. DB-Library nem állítja be automatikusan a CURSOR_CLOSE_ON_COMMIT értéket.

Amikor a SET ANSI_DEFAULTS be van kapcsolva, a SET CURSOR_CLOSE_ON_COMMIT be van kapcsolva.

A SET CURSOR_CLOSE_ON_COMMIT beállítása végrehajtási vagy futási időben van beállítva, nem parze-időben.

A jelenlegi beállítás megtekintéséhez futtasd le a következő lekérdezést.

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

Permissions

A nyilvános szerepkör tagságát igényli.

Példák

A következő példa kurzort határoz meg egy tranzakcióban, és megpróbálja használni azt a tranzakció elkötelezése után.

-- 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  

Lásd még:

ADATBÁZIS MÓDOSÍTÁSA (Transact-SQL)
TRANZAKCIÓ INDÍTÁSA (Transact-SQL)
ZÁRT (Transact-SQL)
VÉGLEGESÍTÉSI TRANZAKCIÓ (Transact-SQL)
VISSZAÁLLÍTÁSI TRANZAKCIÓ (Transact-SQL)
SET-utasítások (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)