Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

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.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.