Partager via


MSSQLSERVER_7399

S'applique à : SQL Server

Attribut Valeur
Produit SQL Server
ID de l’événement 7399
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique RMT_HRESULT_FAIL
Texte du message Le fournisseur OLE DB « %ls » pour le serveur lié « %ls » a signalé une erreur.%ls

Explication

Cette erreur se produit lorsqu’une requête de serveur lié échoue en raison d’une erreur générée sur le serveur distant.

L’erreur 7399 est un message d’erreur générique du fournisseur. Dans certains cas, vous pouvez activer l’indicateur de trace 7300 pour obtenir un message d’erreur plus détaillé du fournisseur. Si vous recevez plus d’informations dépend du fournisseur OLE DB (liaison d’objets et incorporation, base de données) que vous utilisez. Pour activer l’indicateur de trace, exécutez la commande suivante avant d’exécuter la requête qui provoque l’erreur :

DBCC TRACEON (7300, 3604);

Action utilisateur

Même si l’erreur 7399 est une erreur générique qui inclut un message plus spécifique dans celui-ci, une erreur spécifique couramment observée est « Expiration du délai d’expiration ». Il existe deux options de délai d’expiration configurables qui affectent les requêtes distantes : l’option de délai d’expiration de connexion à distance et l’option de délai d’expiration des requêtes distantes. Voici des exemples de la façon dont vous pouvez voir l’erreur de délai d’expiration générée dans le délai d’attente 7399 et comment y remédier :

IDBInitialize::Initialize

Serveur : Msg 7399, Level 16, State 1, Line 1 du fournisseur OLE DB « SQLOLEDB » a signalé une erreur. [Message retourné par le fournisseur OLE/DB : expiration du délai d’expiration] Trace d’erreur OLE DB [OLE/DB Provider 'SQLOLEDB' IDBInitialize ::Initialize retourné 0x80004005 : ].

Ce message d’erreur se rapporte à la IDBInitialize::Initialize méthode. Elle se produit si le temps nécessaire à la requête pour établir une connexion au serveur distant dépasse la valeur de l’option de délai d’expiration de connexion à distance.

Pour contourner cette erreur, définissez la valeur du délai d’expiration de connexion à distance sur 30 secondes en exécutant le code suivant :

sp_configure 'remote login timeout', 30;
GO
RECONFIGURE WITH OVERRIDE;
GO

ICommandText ::Execute

Serveur : Msg 7399, Level 16, State 1, Line 1 du fournisseur OLE DB « SQLOLEDB » a signalé une erreur. Exécution arrêtée par le fournisseur parce qu'une limite de ressources a été atteinte. [Message retourné par le fournisseur OLE/DB : expiration du délai d’expiration] Trace d’erreur OLE DB [OLE/DB Provider 'SQLOLEDB' ICommandText ::Execute retourné 0x80040e31 : Exécution terminée par le fournisseur car une limite de ressources a été atteinte.].

Ce message d’erreur se rapporte à la ICommandText::Execute méthode. Il indique que la requête a fallu plus de temps pour traiter que le temps spécifié dans le paramètre de configuration du délai d’expiration de la requête distante.

La valeur du délai d’expiration de la requête distante par défaut est 600 (10 minutes).

Pour contourner cette erreur, désactivez le délai d’expiration en définissant la valeur 0 de délai d’expiration de la requête distante sur (attente infinie) en exécutant le code suivant :

sp_configure 'remote query timeout', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO