MSSQLSERVER_3988
S’applique à :SQL Server
Détails
Attribut | Valeur |
---|---|
Nom du produit | SQL Server |
ID de l’événement | 3988 |
Source de l’événement | MSSQLSERVER |
Composant | SQLEngine |
Nom symbolique | XACT_UNSUPPORT_PARALLEL_TRAN2 |
Texte du message | Une nouvelle transaction n'est pas autorisée parce que d'autres threads sont en cours d'exécution dans la session. |
Explication
Cette erreur se produit lorsque vous exécutez une requête distribuée qui joint plusieurs tables hébergées par des instances distantes de SQL Server, alors que le paramètre de session XACT_ABORT
est activé. Un message d’erreur semblable au suivant est signalé à l’utilisateur :
Message 3988, niveau 16, état 1, ligne #
Une nouvelle transaction n'est pas autorisée parce que d'autres threads sont en cours d'exécution dans la session.
Cause
Il existe certaines limitations de conception dans la façon dont SQL Server gère les requêtes distribuées (DQ) lorsque les conditions suivantes sont remplies :
- SQL Server joint plusieurs tables d’une source de données SQL Server distante.
- La session qui émet la requête n’est pas inscrite dans une transaction distribuée.
Dans ce cas, une tentative d’exécution de la requête peut déclencher l’une ou l’autre des deux erreurs mentionnées dans la section Explication.
Action requise
Pour contourner ce problème, mettez la requête distribuée dans une instruction « begin distributed transaction » :
BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour