Un autre lecteur de journal est en train de répliquer la base de données.
Plusieurs connexions tentent actuellement d'exécuter une des procédures suivantes : sp_repldone, sp_replcmds ou sp_replshowcmds. L'Agent de lecture du journal utilise les procédures stockées sp_repldone et sp_replcmds pour localiser et mettre à jour les informations relatives aux transactions répliquées dans une base de données publiée. La procédure stockée sp_replshowcmds est utilisée pour résoudre certains problèmes rencontrés avec la réplication transactionnelle.
Cette erreur se produit dans les circonstances suivantes :
Si l'Agent de lecture du journal d'une base de données publiée est en cours d'exécution et si un deuxième Agent de lecture de journal tente de s'exécuter sur la même base de données, cette erreur est émise pour le second agent et apparaît dans l'historique de l'agent.
Dans les situations où plusieurs agents sont impliqués, il est possible que l'un d'entre eux résulte d'un processus orphelin.
Si l'Agent de lecture du journal d'une base de données publiée est démarré et qu'un utilisateur exécute sp_repldone, sp_replcmds ou sp_replshowcmds sur la même base de données, l'erreur est émise dans l'application où la procédure stockée a été exécutée (par exemple sqlcmd).
Si aucun Agent de lecture de journal n'est en cours d'exécution sur une base de données publiée et si un utilisateur exécute sp_repldone, sp_replcmds ou sp_replshowcmds, puis ne ferme pas la connexion sur laquelle la procédure a été exécutée, cette erreur est générée quand l'Agent de lecture de journal tente de se connecter à la base de données.
Notez qu'en présence de plusieurs agents, l'un d'eux peut résulter d'une sorte de processus orphelin qui n'apparaît pas comme un agent ou un travail supplémentaire dans Management Studio.
La procédure suivante peut vous aider à résoudre ce problème. Si l'une des étapes permet à l'Agent de lecture de journal de démarrer sans erreur, il n'est pas nécessaire d'exécuter le reste de la procédure.
Vérifiez dans l'historique de l'Agent de lecture de journal s'il y a d'autres erreurs qui pourraient être cause de cette erreur. Pour plus d'informations sur l'affichage de l'état de l'agent et sur les détails de l'erreur dans le moniteur de réplication, consultez « Procédure : afficher des informations et effectuer des tâches pour les agents associés à une publication (moniteur de réplication) » dans la Documentation en ligne de SQL Server.
Recherchez dans la sortie de sp_who s'il existe des numéros spécifiques d'identification de processus (SPID) relatifs à la base de données publiée. Fermez toute connexion susceptible d'avoir exécuté sp_repldone, sp_replcmds ou sp_replshowcmds.
Redémarrez l'Agent de lecture du journal. Pour plus d'informations, consultez « Procédure : démarrer et arrêter un agent de réplication (SQL Server Management Studio) » dans la Documentation en ligne de SQL Server.
Redémarrez le service de l'Agent (mettez-le hors connexion ou en ligne dans un cluster) sur le serveur de distribution. S'il est possible qu'une tâche planifiée ait exécuté sp_repldone, sp_replcmds ou sp_replshowcmds à partir d'une autre instance, redémarrez également l'Agent pour ces instances. Pour plus d'informations, consultez « Démarrage, arrêt et interruption du service SQL Server Agent » dans la documentation en ligne de SQL Server.
Exécutez sp_replflush dans le serveur de publication sur la base de données de publication, puis redémarrez l'Agent de lecture du journal.
Si l'erreur continue de se produire, augmentez le facteur de journalisation de l'agent et spécifiez un fichier de sortie pour le journal. En fonction du contexte de l'erreur, cette action peut fournir des pistes conduisant à l'erreur et/ou à d'autres messages d'erreur. Pour plus d'informations, consultez « Agents de réplication (dépannage) » dans la Documentation en ligne de SQL Server.
ID d'événement SQL Server 18752
Nom | Description | Valeur par défaut |
Activé | Active ou désactive le flux de travail. | Oui |
Priorité | Définit la priorité de l'alerte. | 2 |
Gravité | Définit la gravité de l'alerte. | 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>