Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Regelt het gedrag van de Transact-SQL COMMIT TRANSACTION-instructie. De standaardwaarde voor deze instelling is UIT. Dit betekent dat de server de cursors niet zal sluiten wanneer je een transactie uitvoert.
Transact-SQL syntaxis-conventies
Syntaxis
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }
Opmerkingen
Wanneer SET CURSOR_CLOSE_ON_COMMIT AAN staat, sluit deze instelling alle open cursors bij commit of rollback in overeenstemming met ISO. Wanneer SET CURSOR_CLOSE_ON_COMMIT UIT is, wordt de cursor niet gesloten wanneer een transactie wordt gecommit.
Opmerking
SET CURSOR_CLOSE_ON_COMMIT op ON sluit geen open cursors bij rollback wanneer de rollback wordt toegepast op een savepoint_name vanuit een SAVE TRANSACTION-statement.
Wanneer SET CURSOR_CLOSE_ON_COMMIT UIT is, sluit een ROLLBACK-instructie alleen open asynchrone cursors die niet volledig zijn ingevuld. STATISCHE of ONGEVOELIGE cursors die na aanpassingen zijn geopend, zullen de status van de data niet langer weergeven als de wijzigingen worden teruggedraaid.
SET CURSOR_CLOSE_ON_COMMIT beheert hetzelfde gedrag als de CURSOR_CLOSE_ON_COMMIT database-optie. Als CURSOR_CLOSE_ON_COMMIT op AAN of UIT staat, wordt die instelling op de verbinding gebruikt. Als SET CURSOR_CLOSE_ON_COMMIT niet is gespecificeerd, geldt de waarde in de kolom is_cursor_close_on_commit_on in de sys.databases-catalogusweergave .
De SQL Server Native Client OLE DB Provider voor SQL Server en de SQL Server Native Client ODBC-driver zetten CURSOR_CLOSE_ON_COMMIT beide op UIT wanneer ze verbinden. DB-Library stelt de CURSOR_CLOSE_ON_COMMIT waarde niet automatisch in.
Wanneer SET ANSI_DEFAULTS AAN staat, is SET CURSOR_CLOSE_ON_COMMIT ingeschakeld.
De instelling van SET CURSOR_CLOSE_ON_COMMIT wordt ingesteld tijdens execute- of run-tijd en niet tijdens parsetijd.
Om de huidige instelling voor deze instelling te bekijken, voert u de volgende query uit.
DECLARE @CURSOR_CLOSE VARCHAR(3) = 'OFF';
IF ( (4 & @@OPTIONS) = 4 ) SET @CURSOR_CLOSE = 'ON';
SELECT @CURSOR_CLOSE AS CURSOR_CLOSE_ON_COMMIT;
Permissions
Vereist lidmaatschap van de openbare rol.
Voorbeelden
Het volgende voorbeeld definieert een cursor in een transactie en probeert deze te gebruiken nadat de transactie is gecommit.
-- 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
Zie ook
ALTER DATABASE (Transact-SQL)
BEGIN TRANSACTIE (Transact-SQL)
SLUIT (Transact-SQL)
DOORVOERTRANSACTIE (Transact-SQL)
TRANSACTIE voor terugdraaien (Transact-SQL)
SET-instructies (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)