Sdílet prostřednictvím


NASTAVTE CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Řídí chování příkazu COMMIT TRANSACTION Transact-SQL. Výchozí hodnota tohoto nastavení je VYPNUTO. To znamená, že server nezavírá kurzory, když provedete transakci.

Transact-SQL konvence syntaxe

Syntaxe

  
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }  

Poznámky

Když je NASTAVENO CURSOR_CLOSE_ON_COMMIT zapnuté, toto nastavení uzavře všechny otevřené kurzory při commit nebo rollback v souladu s ISO. Když je NASTAVIT CURSOR_CLOSE_ON_COMMIT VYPNUTO, kurzor se při potvrzení transakce nezavře.

Poznámka:

SET CURSOR_CLOSE_ON_COMMIT to ON neuzavře otevřené kurzory při návratu zpět, pokud je vrácení aplikováno na savepoint_name z příkazu ULOŽIT TRANSAKCE.

Když je SET CURSOR_CLOSE_ON_COMMIT vypnutý, příkaz ROLLBACK uzavře pouze otevřené asynchronní kurzory, které nejsou plně obsazené. STATICKÉ nebo NECITLIVÉ kurzory, které byly otevřeny po provedení úprav, již nebudou odrážet stav dat, pokud jsou úpravy vráceny zpět.

SET CURSOR_CLOSE_ON_COMMIT řídí stejné chování jako volba CURSOR_CLOSE_ON_COMMIT databáze. Pokud je CURSOR_CLOSE_ON_COMMIT nastaveno na ZAPNUTO nebo VYPNUTO, toto nastavení se použije na připojení. Pokud SET CURSOR_CLOSE_ON_COMMIT nebyl specifikován, platí hodnota ve sloupci is_cursor_close_on_commit_on v katalogu sys.databases .

SQL Server Native Client OLE DB Provider pro SQL Server a SQL Server Native Client ODBC ovladač CURSOR_CLOSE_ON_COMMIT při připojení oba vypnuto. DB-Library automaticky nenastavuje hodnotu CURSOR_CLOSE_ON_COMMIT.

Když je NASTAVIT ANSI_DEFAULTS ZAPNUTO, NASTAVIT CURSOR_CLOSE_ON_COMMIT je zapnuté.

Nastavení SET CURSOR_CLOSE_ON_COMMIT je nastaveno při spuštění nebo běhu a nikoli při parse.

Pro zobrazení aktuálního nastavení tohoto nastavení spusťte následující dotaz.

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

Povolení

Vyžaduje členství ve veřejné roli .

Examples

Následující příklad definuje kurzor v transakci a snaží se jej použít po potvrzení transace.

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

Viz také

ALTER DATABASE (Transact-SQL)
ZAČÁTEK TRANSAKCE (Transact-SQL)
ZAVŘÍT (Transact-SQL)
transakce potvrzení (Transact-SQL)
transakce vrácení zpět (Transact-SQL)
Příkazy SET (Transact-SQL)
NASTAVTE ANSI_DEFAULTS (Transact-SQL)