La replica del database è in corso da parte di un altro agente di lettura dei log.
È in corso da parte di più connessioni il tentativo di eseguire una delle stored procedure seguenti: sp_repldone, sp_replcmds o sp_replshowcmds. Le stored procedure sp_repldone e sp_replcmds vengono usate dall'agente di lettura log per trovare e aggiornare le informazioni sulle transazioni replicate in un database pubblicato. La stored procedure sp_replshowcmds viene usata per la risoluzione di alcuni tipi di problemi relativi alla replica transazionale.
Questo errore viene generato nelle circostanze seguenti:
Se l'agente di lettura log di un database pubblicato è in esecuzione e un secondo agente di lettura log tenta l'esecuzione sullo stesso database, per il secondo agente viene generato l'errore, che appare nella cronologia dell'agente.
In una situazione in cui compaiono più agenti, è possibile che uno di loro sia il risultato di un processo orfano.
Se l'agente di lettura log di un database pubblicato viene avviato e un utente esegue sp_repldone, sp_replcmds o sp_replshowcmds sullo stesso database, viene generato l'errore nell'applicazione in cui è stata eseguita la stored procedure (ad esempio sqlcmd).
Se l'agente di lettura log di un database pubblicato viene avviato e un utente esegue sp_repldone, sp_replcmds o sp_replshowcmds e non chiude la connessione su cui è stata eseguita la procedura, quando l'agente di lettura log prova a connettersi al database viene generato l'errore.
Si noti che in una situazione in cui sono presenti più agenti, uno di questi può essere il risultato di un processo isolato che non viene visualizzato come processo o agente aggiuntivo in Management Studio.
I passaggi seguenti possono contribuire alla risoluzione del problema. Se uno dei passaggi consente l'avvio senza errori dell'agente di lettura log, non è necessario completare i passaggi rimanenti.
Verificare nella cronologia dell'agente di lettura log la presenza di eventuali altri errori che potrebbero contribuire a questo errore. Per informazioni sui dettagli di stato e di errore dell'agente di visualizzazione in monitoraggio replica, vedere "procedura: Visualizzare le informazioni ed eseguire attività per gli agenti associati a una pubblicazione (monitoraggio replica)" nella documentazione online di SQL Server.
Verificare nell'output di sp_who la presenza di numeri di identificazione di processo (SPID) connessi al database pubblicato. Chiudere le connessioni che potrebbero aver eseguito sp_repldone, sp_replcmds o sp_replshowcmds.
Riavviare l'agente di lettura log. Per ulteriori informazioni, vedere "procedura: Avviare e arrestare un agente di replica (SQL Server Management Studio)" nella documentazione online di SQL Server.
Riavviare il servizio Agent (portarlo offline oppure online in un cluster) per il database di distribuzione. Se vi è una possibilità che un processo pianificato abbia eseguito sp_repldone, sp_replcmds o sp_replshowcmds da altre istanze, riavviare l'Agent anche per tali istanze. Per altre informazioni, vedere l'argomento "Avvio, arresto e sospensione del servizio SQL Server Agent" nella documentazione online di SQL Server.
Eseguire sp_replflush nel server di pubblicazione per il database di pubblicazione, quindi riavviare l'agente di lettura log.
Se l'errore continua a verificarsi, aumentare il livello di dettaglio per la registrazione delle operazioni dell'agente e specificare un file di output per il log. A seconda del contesto dell'errore, in questo modo si potrebbero ottenere ulteriori informazioni sui passaggi che conducono all'errore e/o messaggi di errore aggiuntivi. Per ulteriori informazioni, vedere "Agenti di replica (Risoluzione dei problemi)" nella documentazione online di SQL Server.
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Priorità | Definisce la priorità dell'avviso. | 2 |
Gravità | Definisce la gravità dell'avviso. | 2 |
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>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>