MSSQLSERVER_7399

Gilt für:SQL Server

attribute Wert
Produkt SQL Server
Ereignis-ID 7399
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name RMT_HRESULT_FAIL
Meldungstext Der OLE DB-Anbieter "%ls" für den verknüpften Server "%ls" hat einen Fehler gemeldet.%ls

Erklärung

Dieser Fehler tritt auf, wenn eine verknüpfte Serverabfrage aufgrund eines Fehlers fehlschlägt, der auf dem Remoteserver generiert wird.

Fehler 7399 ist eine generische Fehlermeldung des Anbieters. In einigen Fällen können Sie die Ablaufverfolgungskennzeichnung 7300 aktivieren, um eine detailliertere Fehlermeldung vom Anbieter zu erhalten. Ob Sie weitere Informationen erhalten, hängt vom verwendeten OLE DB-Anbieter (Object Linking and Embedding, Database) ab. Führen Sie zum Aktivieren des Ablaufverfolgungskennzeichnungs den folgenden Befehl aus, bevor Sie die Abfrage ausführen, die den Fehler verursacht:

DBCC TRACEON (7300, 3604);

Aktion des Benutzers

Obwohl Fehler 7399 ein allgemeiner Fehler ist, der eine spezifischere Nachricht enthält, ist ein häufig beobachteter bestimmter Fehler "Timeout abgelaufen". Es gibt zwei konfigurierbare Timeoutoptionen, die sich auf Remoteabfragen auswirken: Option für Remoteanmeldungstimeout und Timeoutoption für Remoteabfragen. Im Folgenden finden Sie Beispiele dafür, wie Sie den in 7399 ausgelösten Timeoutfehler sehen und wie sie behandelt werden:

IDBInitialize::Initialize

Server: Msg 7399, Level 16, State 1, Line 1 OLE DB-Anbieter 'SQLOLEDB' hat einen Fehler gemeldet. [OLE/DB-Anbieter hat eine Nachricht zurückgegeben: Timeout abgelaufen] OLE DB-Fehlerablaufverfolgung [OLE/DB-Anbieter 'SQLOLEDB' IDBInitialize::Initialize zurückgegeben 0x80004005: ].

Diese Fehlermeldung bezieht sich auf die IDBInitialize::Initialize Methode. Dies tritt auf, wenn die Von der Abfrage benötigte Zeit, um eine Verbindung mit dem Remoteserver herzustellen, den Timeout-Wert der Remoteanmeldung überschreitet.

Um diesen Fehler zu umgehen, legen Sie den Timeoutwert für die Remoteanmeldung auf 30 Sekunden fest, indem Sie den folgenden Code ausführen:

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

ICommandText::Execute

Server: Msg 7399, Level 16, State 1, Line 1 OLE DB-Anbieter 'SQLOLEDB' hat einen Fehler gemeldet. Die Ausführung wurde vom Anbieter beendet, da ein Ressourcenlimit erreicht wurde. [OLE/DB-Anbieter hat eine Nachricht zurückgegeben: Timeout abgelaufen] OLE DB-Fehlerablaufverfolgung [OLE/DB-Anbieter 'SQLOLEDB' ICommandText::Execute zurückgegeben 0x80040e31: Ausführung vom Anbieter beendet, weil ein Ressourcenlimit erreicht wurde.].

Diese Fehlermeldung bezieht sich auf die ICommandText::Execute Methode. Es weist darauf hin, dass die Abfrage länger verarbeitet wurde als die in der Konfigurationseinstellung für Remoteabfragetimeout angegebene Zeit.

Der standardmäßige Timeoutwert für Remoteabfragen lautet 600 (10 Minuten).

Um diesen Fehler zu umgehen, deaktivieren Sie das Timeout, indem Sie den Timeoutwert für Remoteabfragen auf 0 (unendliches Warten) festlegen, indem Sie den folgenden Code ausführen:

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