Ein anderer Protokollleser repliziert die Datenbank.
Mehrere aktuelle Verbindungen versuchen, sp_repldone, sp_replcmds oder sp_replshowcmds auszuführen. Die gespeicherten Prozeduren sp_repldone und sp_replcmds werden vom Protokolllese-Agent verwendet, um Informationen zu replizierten Transaktionen in einer veröffentlichten Datenbank zu finden und zu aktualisieren. Die gespeicherte Prozedur sp_replshowcmds wird für die Behandlung bestimmter Probleme einer Transaktionsreplikation verwendet.
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_replcmds oder 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_replcmds oder 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.
In Situationen, in denen mehrere Agents vorhanden sind, kann es sich bei einem der Agents um das Ergebnis eines verwaisten Prozesses handeln, der in Management Studio nicht als separater Auftrag oder Agent angezeigt wird.
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 Agentstatus und der Fehlerinformationen im Replikationsmonitor finden Sie unter "Vorgehensweise: Anzeigen von Informationen und Ausführen von Aufgaben für die einer Veröffentlichung zugeordneten Agents (Replikationsmonitor)" in der SQL Server-Onlinedokumentation.
Überprüfen Sie die Ausgabe von sp_who für spezielle SPIDs, die mit der veröffentlichten Datenbank verbunden sind. Schließen Sie alle Verbindungen, mit denen sp_repldone, sp_replcmds oder sp_replshowcmds möglicherweise ausgeführt wurden.
Starten Sie den Protokolllese-Agent neu. Weitere Informationen finden Sie unter "Vorgehensweise: Starten und Beenden eines Replikations-Agents (SQL Server Management Studio)" in der SQL Server-Onlinedokumentation.
Starten Sie den Agent-Dienst auf dem Verteiler neu (schalten Sie ihn in einem Cluster offline oder online). Wenn eine Möglichkeit besteht, dass sp_repldone, sp_replcmds oder sp_replshowcmds durch einen geplanten Auftrag von einer anderen Instanz ausgeführt wurde, starten Sie den Agent für die betreffenden Instanzen ebenfalls neu. Weitere Informationen finden Sie unter "Starten, Beenden und Anhalten des SQL Server-Agent-Dienstes" in der SQL Server-Onlinedokumentation.
Führen Sie auf dem Verleger in der Veröffentlichungsdatenbank sp_replflush aus, und starten Sie den Protokolllese-Agent anschließend 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. Weitere Informationen finden Sie unter "Replikations-Agents (Problembehandlung)" in der SQL Server-Onlinedokumentation.
Target | Microsoft.SQLServer.2008.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | High | ||
Remotable | True | ||
Alert Message |
|
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.SQLServer.2008.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2008.AnotherLogReaderIsReplicatingDatabaseRule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.SQLServer.2008.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<PublisherName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</PublisherName>
<EventNumber>18752</EventNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.AnotherLogReaderIsReplicatingDatabaseRule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>