Partager via


MSSQLSERVER_3989

S’applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 3989
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique XACT_UNSUPPORT_PARALLEL_TRAN3
Texte du message Le démarrage d'une nouvelle demande n'est pas autorisé car celle-ci doit être accompagnée d'un descripteur de transaction valide.

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 3989, niveau 16, état 1, ligne #
Le démarrage d'une nouvelle demande n'est pas autorisé car celle-ci doit être accompagnée d'un descripteur de transaction valide.

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