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 à: Azure Synapse Analytics
Analytics Platform System (PDW)
Une transaction est un groupe d’une ou plusieurs instructions de base de données entièrement validées ou restaurées. Chaque transaction est atomique, cohérente, isolée et durable (ACID). Si la transaction réussit, toutes les instructions qu’elle contient sont validées. Si la transaction échoue, autrement dit si au moins une des instructions du groupe échoue, la totalité du groupe est restauré.
Notes
La SET AUTOCOMMIT commande n’est pas prise en charge dans Microsoft Fabric Data Warehouse. Pour plus d’informations sur les transactions, l’isolation, la concurrence et la cohérence dans Microsoft Fabric Data Warehouse, consultez à la place Transactions dans Fabric Data Warehouse.
Le début et la fin des transactions dépendent du AUTOCOMMIT paramètre et des BEGIN TRANSACTIONinstructions , COMMITet ROLLBACK .
Les types de transactions suivants sont pris en charge :
Les transactions explicites commencent par l’instruction
BEGIN TRANSACTIONet se terminent par l’instruction ouROLLBACKl’instructionCOMMIT.Les transactions de validation automatique démarrent automatiquement au sein d’une session et ne commencent pas par l’instruction
BEGIN TRANSACTION.- Lorsque le
AUTOCOMMITparamètre estONdéfini, chaque instruction s’exécute dans une transaction et n’est pas expliciteCOMMITouROLLBACKn’est nécessaire. - Lorsque le
AUTOCOMMITparamètre estOFFdéfini, une instruction ouROLLBACKuneCOMMITinstruction est requise pour déterminer le résultat de la transaction. Les transactions de validation automatique commencent immédiatement après uneCOMMITouROLLBACKune instruction, ou après uneSET AUTOCOMMIT OFFinstruction.
- Lorsque le
Conventions de la syntaxe Transact-SQL
Syntaxe
BEGIN TRANSACTION [;]
COMMIT [ TRAN | TRANSACTION | WORK ] [;]
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]
SET AUTOCOMMIT { ON | OFF } [;]
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]
Arguments
DÉBUT DE TRANSACTION
Indique le point de départ d’une transaction explicite.
COMMIT [ WORK ]
Marque la fin d’une transaction explicite ou de validation automatique. Cette instruction a pour effet de valider définitivement les modifications apportées à la transaction dans la base de données. L’instruction COMMIT est identique à COMMIT WORK, COMMIT TRANet COMMIT TRANSACTION.
ROLLBACK [ WORK ]
Restaure une transaction au début de cette transaction. Aucune modification apportée à la transaction n’est validée dans la base de données. L’instruction ROLLBACK est identique à ROLLBACK WORK, ROLLBACK TRANet ROLLBACK TRANSACTION.
SET AUTOCOMMIT { ON | OFF }
Détermine la façon dont les transactions peuvent commencer et se terminer.
Si vous modifiez le AUTOCOMMIT paramètre dans une transaction active, le paramètre affecte la transaction actuelle et ne prend effet qu’une fois la transaction terminée.
Si AUTOCOMMIT c’est ONle cas, l’exécution d’une autre SET AUTOCOMMIT ON instruction n’a aucun effet. De même, si AUTOCOMMIT c’est OFFle cas, l’exécution d’une autre SET AUTOCOMMIT OFF n’a aucun effet.
ACTIVÉ
Chaque instruction s’exécute sous sa propre transaction et aucune instruction explicite ou ROLLBACK aucune instruction n’est COMMIT nécessaire. Les transactions explicites sont autorisées quand AUTOCOMMIT c’est ON.
OFF
Azure Synapse Analytics lance automatiquement une transaction lorsqu’une transaction n’est pas déjà en cours. Toutes les instructions suivantes sont exécutées dans le cadre de la transaction et une ou ROLLBACK est COMMIT nécessaire pour déterminer le résultat de la transaction. Dès qu’une transaction valide ou restaure sous ce mode d’opération, le mode reste OFF, une nouvelle transaction est lancée. Les transactions explicites ne sont pas autorisées quand AUTOCOMMIT c’est OFF.
SET IMPLICIT_TRANSACTIONS { ON | OFF }
Cela bascule les mêmes modes que SET AUTOCOMMIT. Quand ON, SET IMPLICIT_TRANSACTIONS définit la connexion en mode transaction implicite. Quand OFF, elle retourne la connexion en mode de validation automatique. Pour plus d’informations, consultez SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Autorisations
Aucune autorisation spécifique n’est nécessaire pour exécuter les instructions relatives aux transactions. En revanche, des autorisations sont nécessaires pour exécuter les instructions au sein de la transaction.
Gestion des erreurs
Si COMMIT ou ROLLBACK sont exécutés et qu’il n’y a pas de transaction active, une erreur est générée.
Si une BEGIN TRANSACTION opération est exécutée pendant qu’une transaction est déjà en cours, une erreur est générée. Cela peut se produire si un BEGIN TRANSACTION événement se produit après une instruction réussie BEGIN TRANSACTION ou lorsque la session est sous SET AUTOCOMMIT OFF.
Si une erreur autre qu’une erreur d’instruction d’exécution empêche la réussite d’une transaction explicite, le moteur de base de données annule automatiquement la transaction et libère toutes les ressources détenues par la transaction. Par exemple, si la connexion réseau du client est interrompue ou si le client se déconnecte de l’application, toutes les transactions non validées pour la connexion sont restaurées lorsque le réseau avertit l’instance de l’arrêt.
Si une erreur d’instruction au moment de l’exécution se produit dans un lot, Azure Synapse Analytics se comporte cohérent avec SQL Server XACT_ABORT défini ON sur et la transaction entière est restaurée. Pour plus d’informations sur le XACT_ABORT paramètre, consultez SET XACT_ABORT (Transact-SQL).
Remarques
Une session ne peut exécuter qu’une seule transaction à un moment donné ; les points de sauvegarde et les transactions imbriquées ne sont pas pris en charge.
Il incombe au programmeur de émettre COMMIT uniquement à un moment où toutes les données référencées par la transaction sont logiquement correctes.
Quand une session est arrêtée avant la fin d’une transaction, cette dernière est restaurée.
Les modes de transaction sont gérés session par session. Par exemple, si une session commence une transaction explicite ou définit AUTOCOMMITOFFsur , ou définit IMPLICIT_TRANSACTIONSONsur , elle n’a aucun effet sur les modes de transaction d’une autre session.
Limites
Vous ne pouvez pas restaurer une transaction après l’émission d’une COMMIT instruction, car les modifications de données ont été apportées à une partie permanente de la base de données.
Les commandes CREATE DATABASE et DROP DATABASE (Transact-SQL) ne peuvent pas être utilisées à l’intérieur d’une transaction explicite.
Azure Synapse Analytics n’a pas de mécanisme de partage de transactions. Cela implique qu’à tout moment, une seule session peut travailler sur une même transaction dans le système.
Comportement de verrouillage
Le verrouillage garantit l’intégrité des transactions et gère la cohérence des bases de données quand plusieurs utilisateurs accèdent simultanément aux données. Le verrouillage est utilisé à la fois par les transactions implicites et explicites. Chaque transaction demande des verrous de différents types sur les ressources, comme les tables ou les bases de données dont elle dépend.
Tous les verrous se trouvent au niveau de la table ou au-dessus. Les verrous demandés empêchent les autres transactions d'apporter aux ressources des modifications susceptibles de nuire à la transaction. Chaque transaction libère ses verrous quand elle ne dépend plus des ressources verrouillées ; les transactions explicites conservent les verrous jusqu’à la fin de la transaction, une fois que celle-ci est validée ou restaurée.
Examples
R. Utiliser une transaction explicite
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
B. Restaurer une transaction ouverte
L’exemple suivant montre l’effet de la restauration d’une transaction. Dans cet exemple, l’instruction ROLLBACK restaure l’instruction INSERT , mais la table créée existe toujours.
CREATE TABLE ValueTable (id INT);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
C. Définir AUTOCOMMIT
L’exemple suivant définit le AUTOCOMMIT paramètre sur ON.
SET AUTOCOMMIT ON;
L’exemple suivant définit le AUTOCOMMIT paramètre sur OFF.
SET AUTOCOMMIT OFF;
D. Utiliser une transaction multi-instruction implicite
SET AUTOCOMMIT OFF;
CREATE TABLE ValueTable (id INT);
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
COMMIT;