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 pendant que le XACT_ABORT
paramètre de session 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 de la façon dont SQL Server gère les requêtes distribuées (DQs) 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 utilisateur
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