MSSQL_ENG018752
Si applica a: SQL Server Istanza gestita di SQL di Azure
Dettagli messaggio
Attributo | Valore |
---|---|
Nome prodotto | SQL Server |
ID evento | 18752 |
Origine evento | MSSQLSERVER |
Componente | Motore di database di SQL Server |
Nome simbolico | |
Testo del messaggio | A un database può connettersi un solo agente di lettura log o una sola procedura correlata ai log (sp_repldone, sp_replcmds e sp_replshowcmds) alla volta. Se è stata eseguita una procedura correlata ai log, eliminare la connessione utilizzata per eseguire la procedura oppure eseguire sp_replflush tramite tale connessione prima di avviare l'agente di lettura log o di eseguire un'altra procedura relativa ai log. |
Spiegazione
È in corso da parte di più connessioni il tentativo di eseguire una delle procedure seguenti: sp_repldone, sp_replcmdso sp_replshowcmds. Le stored procedure sp_repldone (Transact-SQL) e sp_replcmds (Transact-SQL) sono stored procedure usate dall'agente di lettura log per individuare e aggiornare le informazioni sulle transazioni replicate in un database pubblicato. La stored procedure sp_replshowcmds (Transact-SQL) viene usata per risolvere determinati 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_replcmdso 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_replcmdso sp_replshowcmds e non chiude la connessione su cui è stata eseguita la procedura, quando l'agente di lettura log tenta di connettersi al database viene generato l'errore.
Azione utente
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 Visualizzare le informazioni ed eseguire attività usando Monitoraggio replica.
Controllare l'output di sp_who (Transact-SQL) per specificare i numeri di identificazione dei processi (SPID) connessi al database pubblicato. Chiudere le connessioni che potrebbero aver eseguito sp_repldone, sp_replcmdso sp_replshowcmds.
Riavviare l'agente di lettura log. Per altre informazioni, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio).
Riavviare il servizio SQL Server Agent (portarlo offline o online in un cluster) nel server di distribuzione. Se è possibile che un processo pianificato possa aver eseguito sp_repldone, sp_replcmds o sp_replshowcmds da qualsiasi altra istanza di SQL Server, riavviare anche SQL Server Agent per tali istanze. Per altre informazioni, vedere Avviare, arrestare o sospendere il servizio SQL Server Agent.
Eseguire sp_replflush (Transact-SQL) nel database di pubblicazione del server di pubblicazione e 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.