Udostępnij za pośrednictwem


ZESTAW CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

Kontroluje zachowanie Transact-SQL ZATWIERDZIĆ transakcji instrukcja.Wartość domyślna tego ustawienia jest wyłączona.Oznacza to, że serwer nie zostanie zamknięte kursory, gdy podczas zatwierdzanie transakcji.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }

Uwagi

Gdy ustawienie CURSOR_CLOSE_ON_COMMIT jest włączone, to ustawienie powoduje zamknięcie otwartych kursorów na zatwierdzanie lub wycofywanie zgodnie z ISO.Po CURSOR_CLOSE_ON_COMMIT USTAWIONA jest wyłączona, kursor nie jest zamknięty, gdy transakcja zostanie zatwierdzona.

Ostrzeżenie

Ustaw CURSOR_CLOSE_ON_COMMIT on nie zamknie otwartych kursorów podczas wycofywania podczas wycofywania jest stosowany do savepoint_name ZAPISAĆ transakcji instrukcja.

Gdy ustawienie CURSOR_CLOSE_ON_COMMIT jest wyłączona, WYCOFYWANIA instrukcja zamyka tylko otwartych kursorów asynchronicznych, które nie są całkowicie wypełnione.STATYCZNE lub NIEWRAŻLIWE kursory, które zostały otwarte po zmiany zostały wprowadzone nie będzie już odzwierciedlać stan danych jeżeli modyfikacje są przywracane.

Ustaw CURSOR_CLOSE_ON_COMMIT kontroluje takie samo jak opcja bazy danych CURSOR_CLOSE_ON_COMMIT.Jeśli CURSOR_CLOSE_ON_COMMIT jest zestaw na ON lub OFF, jest ono używane w połączeniu.Jeśli zestaw CURSOR_CLOSE_ON_COMMIT nie został określony, wartość w is_cursor_close_on_commit_on kolumna w sys.databases stosuje się widok wykazu.

SQL Server Macierzystego klienta OLE DB Provider for SQL Server i SQL Server sterownika ODBC macierzystym klienta obu zestaw CURSOR_CLOSE_ON_COMMIT na OFF podczas nawiązywania połączenia.DB-biblioteki jest automatycznie zestaw wartość CURSOR_CLOSE_ON_COMMIT.

Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie CURSOR_CLOSE_ON_COMMIT jest włączone.

Ustawienie ustawianie CURSOR_CLOSE_ON_COMMIT jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

W poniższym przykładzie definiuje kursor w transakcji i próbuje użyć go po transakcja została zatwierdzona.

-- SET CURSOR_CLOSE_ON_COMMIT
-------------------------------------------------------------------------------
SET NOCOUNT ON

CREATE TABLE t1 (
   a INT
)
GO 

INSERT INTO t1 
VALUES (1)
INSERT INTO t1 
VALUES (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