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