Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Détermine le comportement de l'instruction Transact-SQL COMMIT TRANSACTION. La valeur par défaut de ce paramètre est OFF, ce qui signifie que le serveur ne ferme pas les curseurs lorsque vous validez une transaction.
Conventions de la syntaxe Transact-SQL
Syntaxe
SET CURSOR_CLOSE_ON_COMMIT { ON | OFF }
Notes
Lorsque SET CURSOR_CLOSE_ON_COMMIT c’est activé, ce paramètre ferme tous les curseurs ouverts lors du commit ou du rollback conformément à l’ISO. Lorsque SET CURSOR_CLOSE_ON_COMMIT la transaction est OFF, le curseur n’est pas fermé lorsqu’une transaction est engagée.
Notes
SET CURSOR_CLOSE_ON_COMMIT à ON ne fermera pas les curseurs ouverts lors du retour en arrière lorsque le rollback est appliqué à un savepoint_name à partir d’une instruction SAVE TRANSACTION.
Lorsqu’il SET CURSOR_CLOSE_ON_COMMIT est DÉSACTIVÉ, une instruction ROLLBACK ne ferme que les curseurs asynchrones ouverts qui ne sont pas entièrement remplis. Les curseurs statiques et non sensitifs ouverts après des modifications ne reflètent plus l'état des données si les modifications sont ensuite annulées.
SET SET CURSOR_CLOSE_ON_COMMIT Contrôle le même comportement que l’option CURSOR_CLOSE_ON_COMMIT base de données. Si CURSOR_CLOSE_ON_COMMIT elle est réglée sur ON ou OFF, ce réglage est utilisé sur la connexion. Si SET CURSOR_CLOSE_ON_COMMIT n’a pas été spécifié, la valeur dans la colonne is_cursor_close_on_commit_on de la vue catalogue sys.databases s’applique.
Le SQL Server fournisseur OLE DB Native Client pour SQL Server et le pilote ODBC SQL Server Native Client sont tous deux désactivés CURSOR_CLOSE_ON_COMMIT lors de leur connexion. DB-Library ne définit pas automatiquement la CURSOR_CLOSE_ON_COMMIT valeur.
Quand SETSET ANSI_DEFAULTS on est ACTIVÉ, SETSET CURSOR_CLOSE_ON_COMMIT est activé.
Le paramètre est défini au moment de SET CURSOR_CLOSE_ON_COMMIT l’exécution ou de l’exécution et non au moment de l’analyse.
Pour afficher la valeur actuelle de ce paramètre, exécutez la requête suivante.
DECLARE @CURSOR_CLOSE VARCHAR(3) = 'OFF';
IF ( (4 & @@OPTIONS) = 4 ) SET @CURSOR_CLOSE = 'ON';
SELECT @CURSOR_CLOSE AS CURSOR_CLOSE_ON_COMMIT;
Autorisations
Nécessite l'appartenance au rôle public .
Exemples
L'exemple suivant définit un curseur dans une transaction, puis tente de l'utiliser après la validation de cette dernière.
-- 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
Voir aussi
ALTER DATABASE (Transact-SQL)
DÉBUT DE LA TRANSACTION (Transact-SQL)
FERMER (Transact-SQL)
TRANSACTION COMMIT (Transact-SQL)
ANNULATION DE LA TRANSACTION (Transact-SQL)
SET Instructions (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)