Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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)