Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Controla el comportamiento de la instrucción COMMIT TRANSACTION de Transact-SQL. El valor predeterminado de esta configuración es OFF. Indica que el servidor no cerrará los cursores cuando se confirme una transacción.
Convenciones de sintaxis de Transact-SQL (Transact-SQL)
Sintaxis
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }
Notas
Si SET CURSOR_CLOSE_ON_COMMIT es ON, esta opción cierra los cursores que estén abiertos al confirmarse o revertirse una transacción, como indica SQL-92. Si SET CURSOR_CLOSE_ON_COMMIT es OFF, el cursor no se cierra al confirmarse una transacción.
[!NOTA] Si SET CURSOR_CLOSE_ON_COMMIT es ON, no se cierran los cursores abiertos al revertir si la reversión se aplica a savepoint_name desde una instrucción SAVE TRANSACTION.
Si SET CURSOR_CLOSE_ON_COMMIT es OFF, la instrucción ROLLBACK cierra sólo los cursores asincrónicos que no se han terminado de llenar. Los cursores STATIC o INSENSITIVE abiertos después de realizar modificaciones ya no reflejarán el estado de los datos si las modificaciones se revierten.
SET CURSOR_CLOSE_ON_COMMIT controla el mismo comportamiento que la opción de base de datos CURSOR_CLOSE_ON_COMMIT. Si CURSOR_CLOSE_ON_COMMIT se establece en ON u OFF, esa configuración se utiliza en la conexión. Si no se ha especificado SET CURSOR_CLOSE_ON_COMMIT, se aplica el valor de la columna is_cursor_close_on_commit_on de la vista de catálogo sys.databases.
Al conectarse, el proveedor OLE DB de SQL Native Client para SQL Server y el controlador ODBC de SQL Native Client establecen CURSOR_CLOSE_ON_COMMIT en OFF. DB-Library no establece automáticamente el valor de CURSOR_CLOSE_ON_COMMIT.
Si SET ANSI_DEFAULTS es ON, se activa SET CURSOR_CLOSE_ON_COMMIT.
La opción SET CURSOR_CLOSE_ON_COMMIT se establece en tiempo de ejecución, no en tiempo de análisis.
Permisos
Debe pertenecer a la función public.
Ejemplos
En este ejemplo se define un cursor en una transacción y se intenta utilizar después de confirmar la transacción.
-- 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
Vea también
Referencia
ALTER DATABASE (Transact-SQL)
BEGIN TRANSACTION (Transact-SQL)
CLOSE (Transact-SQL)
COMMIT TRANSACTION (Transact-SQL)
ROLLBACK TRANSACTION (Transact-SQL)
SET (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)
Otros recursos
Configurar las opciones de la base de datos