Freigeben über


MSSQL_ENG018752

Gilt für: SQL Server Azure SQL Managed Instance

Meldungsdetails

attribute Wert
Produktname SQL Server
Ereignis-ID 18752
Ereignisquelle MSSQLSERVER
Komponente SQL Server-Datenbank-Engine
Symbolischer Name
Meldungstext Nur jeweils ein Protokolllese-Agent oder eine protokollbezogene Prozedur (sp_repldone, sp_replcmds oder sp_replshowcmds) kann eine Verbindung mit einer Datenbank herstellen. Falls Sie eine protokollbezogene Prozedur ausgeführt haben, löschen Sie vor dem Starten des Protokolllese-Agents oder dem Ausführen einer weiteren protokollbezogenen Prozedur die Verbindung, über die sie ausgeführt wurde, oder führen Sie 'sp_replflush' über diese Verbindung aus.

Erklärung

Mehrere aktuelle Verbindungen versuchen, sp_repldone, sp_replcmdsoder sp_replshowcmdsauszuführen. Die gespeicherten Prozeduren sp_repldone (Transact-SQL) und sp_replcmds (Transact-SQL) sind gespeicherte Prozeduren, die vom Log Reader-Agent verwendet werden, um Informationen zu replizierten Transaktionen in einer veröffentlichten Datenbank zu suchen und zu aktualisieren. Die gespeicherte Prozedur sp_replshowcmds (Transact-SQL) wird verwendet, um bestimmte Arten von Problemen mit der Transaktionsreplikation zu behandeln.

Dieser Fehler wird in folgenden Situationen ausgelöst:

  • Wenn der Protokolllese-Agent für eine veröffentlichte Datenbank ausgeführt und versucht wird, einen zweiten Protokolllese-Agent für dieselbe Datenbank auszuführen, wird der Fehler für den zweiten Agent ausgelöst und im Agentverlauf angezeigt.

    In einer Situation, in der offenbar mehrere Agents vorhanden sind, kann es sein, dass einer dieser Agents das Ergebnis eines verwaisten Prozesses ist.

  • Wenn der Protokolllese-Agent für eine veröffentlichte Datenbank gestartet wird und ein Benutzer sp_repldone, sp_replcmdsoder sp_replshowcmds für dieselbe Datenbank ausführt, wird der Fehler in der Anwendung ausgelöst, in der die gespeicherte Prozedur ausgeführt wurde (z. B. sqlcmd).

  • Wenn für eine veröffentlichte Datenbank kein Protokolllese-Agent ausgeführt wird und ein Benutzer sp_repldone, sp_replcmdsoder sp_replshowcmds ausführt, ohne anschließend die Verbindung zu schließen, über die die Prozedur ausgeführt wurde, wird der Fehler ausgelöst, wenn der Protokolllese-Agent versucht, eine Verbindung mit der Datenbank herzustellen.

Benutzeraktion

Folgende Schritte können Ihnen bei der Problembehandlung behilflich sein. Wenn der Protokolllese-Agent in einem beliebigen Schritt ohne Fehler gestartet werden kann, müssen die verbleibenden Schritte nicht mehr ausgeführt werden.

  • Überprüfen Sie den Verlauf des Protokolllese-Agents für alle anderen Fehler, die möglicherweise zu diesem Fehler beitragen. Informationen zum Anzeigen des Agent-Status und der Fehlerinformationen im Replikationsmonitor finden Sie unter View information and perform tasks using Replication Monitor (Anzeigen von Informationen und Ausführen von Aufgaben mit dem Replikationsmonitor).

  • Überprüfen Sie die Ausgabe von sp_who (Transact-SQL) auf bestimmte Prozessidentifikationsnummern (SPIDs), die mit der veröffentlichten Datenbank verbunden sind. Schließen Sie alle Verbindungen, mit denen sp_repldone, sp_replcmdsoder sp_replshowcmdsmöglicherweise ausgeführt wurden.

  • Starten Sie den Protokolllese-Agent neu. Weitere Informationen finden Sie unter Starten und Beenden eines Replikations-Agents (SQL Server Management Studio).

  • Starten Sie den SQL Server-Agent-Dienst neu (bringen Sie ihn offline oder online in einem Cluster) auf dem Distributor. Wenn es möglich ist, dass ein geplanter Auftrag sp_repldone, sp_replcmds oder sp_replshowcmds von einer anderen SQL Server-Instanz ausgeführt haben könnte, starten Sie die SQL Server-Agent auch für diese Instanzen neu. Weitere Informationen finden Sie unter Starten, Beenden oder Anhalten des SQL Server-Agent-Dienstes.

  • Führen Sie sp_replflush (Transact-SQL) in Publisher in der Publikationsdatenbank aus, und starten Sie dann den Protokollleser-Agent neu.

  • Wenn der Fehler weiterhin auftritt, erhöhen Sie die Protokollierungsstufe des Agents, und geben Sie eine Ausgabedatei für das Protokoll an. Je nach Zusammenhang, in dem der Fehler auftritt, finden Sie hier möglicherweise die Schritte, die zum Fehler führen, und/oder weitere Fehlermeldungen.