Symptômes
Supposez que vous créez une publication transactionnelle à l’aide de la procédure stockée sp_addpublication dans SQL Server 2014 ou 2016 et que vous définissez la propriété @allow_drop sur true. Lorsque vous déposez une table publiée dans la composition et supprimez manuellement l’article obsolète de la composition, vous pouvez recevoir un message d’erreur qui ressemble à ce qui suit :
Le serveur distant "(null)" n’existe pas.
Par exemple, ce problème se produit dans le scénario suivant :
-
Vous publiez une table dans une composition transactionnelle, puis vous définissez la propriété @allow_drop sur true.
-
Vous supprimez la table publiée.
-
Pour que l’agent de lecture du journal traite les enregistrements liés à la commande drop table, vous devez nettoyer l’article obsolète en utilisant l’une des procédures stockées suivantes :
-
sp_MSdropobsoletearticle
-
sp_droparticle
-
sp_droppublication
-
Dans ce cas, les messages d’erreur suivants sont enregistrés dans un journal détaillé :
État : 0, code : 1007, texte : 'le processus n’a pas pu exécuter « sp_MSadd_replcmds » sur «SQL_SERVER_INSTANCE». Le processus n’a pas pu exécuter « sp_MSadd_replcmds » sur «SQL_SERVER_INSTANCE». État de l’agent REPL : 6Status : 0, code : 1007, texte : 'le serveur distant "(null)" n’existe pas ou n’a pas été désigné comme éditeur valide ou vous ne disposez pas des autorisations nécessaires pour afficher les éditeurs disponibles. '. État : 4, code : 6001, texte : « le thread d’arrière-plan de la «charge de commande » est en cours de fermeture.». État : 0, code : 22020, texte : 'les lots n’ont pas été validés sur le distributeur. '. État : 0, code : 22037, texte : « la dernière étape n’a pas pu enregistrer un message ! ».
Remarque La prise en charge de drop table (DDL DROP TABLE) a été ajoutée à SQL Server 2014 Service Pack 2. Pour plus d’informations sur la prise en charge de drop table, consultez l’article suivant de la base de connaissances Microsoft :
3170123 Prend en charge DROP TABLE DDL pour les articles inclus dans la réplication transactionnelle dans SQL Server 2014
Résolution
Ce problème a été résolu dans les mises à jour cumulatives de SQL Server suivantes :
Mise à jour cumulative 1 pour SQL server 2014 Service Pack 2- mise à jour cumulative 2 pour SQL Server 2016
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Dernière mise à jour cumulative pour SQL server 2014 dernière mise à jour cumulative pour SQL Server 2016
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Apprenez-en davantage sur la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.