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 SET CURSOR_CLOSE_ON_COMMIT BEKAPCSOLVA, ez a beállítás lezárja a nyitott kurzorokat commit vagy rollback korán az ISO megfelelően. Ha SET CURSOR_CLOSE_ON_COMMIT KIKAPCSOLVA, a kurzor nem záródik le egy tranzakció elvégzése esetén.

Megjegyzés:

SET CURSOR_CLOSE_ON_COMMIT to ON nem zárja be a nyitott kurzorokat rollback-kor, amikor a visszafordítást egy SAVE TRANSACTION utasításból származó savepoint_name-re alkalmazzák.

Amikor SET CURSOR_CLOSE_ON_COMMIT OFF, egy 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.

SET SET CURSOR_CLOSE_ON_COMMIT ugyanazt a viselkedést szabályozza, mint az adatbázis CURSOR_CLOSE_ON_COMMIT opció. Ha CURSOR_CLOSE_ON_COMMIT be vagy KIKAPCSOLVA, akkor ezt a beállítást használják a kapcsolaton. Ha 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őszer is CURSOR_CLOSE_ON_COMMIT OFF állapotba van állítva, amikor csatlakoznak. DB-Library nem állítja be automatikusan az CURSOR_CLOSE_ON_COMMIT értéket.

Amikor SETSET ANSI_DEFAULTS BEKAPCSOLT, SETSET CURSOR_CLOSE_ON_COMMIT engedélyezve van.

A SET CURSOR_CLOSE_ON_COMMIT beállítása végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.

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:

ALTER DATABASE (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)