MSSQL_ENG018752
Détails du message
Nom du produit |
SQL Server |
Version du produit |
10.0 |
Numéro de version |
|
ID d'événement |
18752 |
Source de l'événement |
MSSQLSERVER |
Composant |
Moteur de base de données SQL Server |
Nom symbolique |
|
Texte du message |
Un seul Agent de lecture du journal ou une seule procédure liée au journal (sp_repldone, sp_replcmds et sp_replshowcmds) peut se connecter à une base de données à la fois. Si vous avez exécuté une procédure liée au journal, supprimez la connexion à travers laquelle la procédure a été exécutée ou exécutez sp_replflush sur cette connexion avant de démarrer l'Agent de lecture du journal ou d'exécuter toute autre procédure liée au journal. |
Explication
Plusieurs connexions tentent actuellement d'exécuter l'une des procédures suivantes : sp_repldone, sp_replcmds ou sp_replshowcmds. Les procédures stockées sp_repldone (Transact-SQL) et sp_replcmds (Transact-SQL) sont utilisées par l'Agent de lecture du journal pour détecter 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 (Transact-SQL) est utilisée pour résoudre certains types de problèmes rencontrés en 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, cette 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 omet de fermer la connexion sur laquelle la procédure a été exécutée, cette erreur est émise lorsque l'Agent de lecture de journal tente de se connecter à la base de données.
Action de l'utilisateur
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 la consultation de l'état de l'Agent et sur les erreurs du 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).
Recherchez dans le résultat de sp_who (Transact-SQL) 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).
Redémarrez le service de l'Agent SQL Server (mettez-le hors ligne 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'autres instances SQL Server, redémarrez également l'Agent SQL Server pour ces instances. Pour plus d'informations, consultez Démarrage, arrêt et interruption du service Agent SQL Server.
Exécutez sp_replflush (Transact-SQL) 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 se reproduit, augmentez le niveau de journalisation de l'agent et spécifiez un fichier de sortie pour ce journal. Selon le contexte de l'erreur, ceci peut vous indiquer les étapes qui ont abouti à cette erreur et/ou d'autres messages d'erreur. Pour plus d'informations, consultez Agents de réplication (résolution des problèmes).
Voir aussi