La fonction ASCII retourne des résultats différents dans les tables de base de données Publisher et Abonné
S’applique à : SQL Server 2019
Cet article fournit des solutions de contournement pour le problème que la ASCII
fonction retourne différents résultats dans les tables de base de données publisher et Abonné.
Symptômes
Examinez le cas suivant :
Vous utilisez la réplication transactionnelle ou de fusion dans SQL Server 2019.
Le schéma initial et les données sont appliqués via l’Agent d’instantané de réplication.
Dans la base de données Publisher, une colonne définie en tant que type de données caractères inclut une valeur NULL - Caractère ASCII 0
char(0)
.
Dans ce scénario, lorsque vous utilisez la ASCII
fonction pour convertir la colonne dans les tables de base de données Serveur de publication et Abonné, différents résultats sont retournés. Vous pouvez faire référence à l’exemple suivant :
Convertissez la colonne (
col1
) dans la table de base de données Publisher :SELECT id, col1, ASCII(col1) FROM PublisherTable
Convertissez la colonne (
col1
) dans la table de base de données de l’Abonné :SELECT id, col1, ASCII(col1) FROM SubscriberTable
Solution de contournement
Pour contourner ce problème pour la réplication transactionnelle, procédez comme suit :
Ouvrez SQL Server Management Studio et connectez-vous au serveur agissant en tant que serveur de distribution.
Sous l’Explorateur d’objets, développez SQL Server Agent, puis développez Travaux.
Sélectionnez le travail de l’agent d’instantané pour la publication affectée, cliquez dessus avec le bouton droit, puis sélectionnez Étapes>de propriétés>, étape 2>Modifier.
Dans la fenêtre Propriétés de l’étape de travail, ajoutez
-NativeBcpFileFormatVersion 100
à la fin de la commande et sélectionnez OK pour enregistrer les modifications.Appliquez le dernier pilote Microsoft OLE DB :
Si l’agent de distribution (ou agent de fusion) s’exécute pour les abonnements Push, appliquez-le sur le serveur de distribution.
Si l’agent de distribution (ou agent de fusion) s’exécute pour les abonnements par extraction, appliquez-le sur le serveur Abonné.
Renommez le fichier msoledbsql.dll dans le dossier C :\Program Files\Microsoft SQL Server\150\COM :
S’il s’agit d’un abonnement Push, renommez le fichier dans le dossier sur le serveur de distribution.
S’il s’agit d’un abonnement par extraction, renommez le fichier dans le dossier sur le serveur Abonné.
Copiez le fichier msoledbsql.dll à partir du dossier C :\Windows\System32\ et collez-le dans le dossier C :\Program Files\Microsoft SQL Server\150\COM .
Pour contourner ce problème pour la réplication de fusion, procédez comme suit :
Appliquez sql Server 2019 Cumulative Update 15 (CU15) ou une version ultérieure sur le serveur de distribution.
Suivez toutes les étapes appliquées au problème de réplication transactionnelle.