Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

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.

Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual).

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }

Si SET CURSOR_CLOSE_ON_COMMIT es ON, este valor cierra cualquier cursor abierto al confirmar o revertir de conformidad con ISO. Si SET CURSOR_CLOSE_ON_COMMIT es OFF, no se cierra el cursor cuando se confirma una transacción.

Nota 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 solo 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 Server Native Client para SQL Server y el controlador ODBC de SQL Server 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 habilita 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.

Para ver la configuración actual de este valor, ejecute la consulta siguiente.

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

Requiere la pertenencia al rol public.

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), (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
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft