La función ASCII devuelve resultados diferentes en tablas de base de datos publicador y suscriptor
Se aplica a: SQL Server 2019
En este artículo se proporcionan soluciones alternativas para el problema que la ASCII
función devuelve resultados diferentes en las tablas de base de datos publicador y suscriptor.
Síntomas
Considere el caso siguiente:
La replicación transaccional o de mezcla se usa en SQL Server 2019.
El esquema inicial y los datos se aplican a través del Agente de instantáneas de replicación.
En la base de datos del publicador, una columna definida como tipo de datos de caracteres incluye un valor NULL: carácter ASCII 0
char(0)
.
En este escenario, cuando se usa la ASCII
función para convertir la columna en las tablas de base de datos Publisher y Subscriber, se devuelven resultados diferentes. Puede consultar el ejemplo siguiente:
Convierta la columna (
col1
) en la tabla de base de datos publisher:SELECT id, col1, ASCII(col1) FROM PublisherTable
Convierta la columna (
col1
) en la tabla de base de datos suscriptor:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Solución alternativa
Para solucionar este problema con la replicación transaccional, siga estos pasos:
Abra SQL Server Management Studio y conéctese al servidor que actúa como distribuidor.
En Explorador de objetos, expanda Agente SQL Server y, a continuación, expanda Trabajos.
Seleccione el trabajo del agente de instantáneas para la publicación afectada, haga clic con el botón derecho en ella y, a continuación, seleccione Pasos>de propiedades>Paso 2>Editar.
En la ventana Propiedades del paso de trabajo, agregue
-NativeBcpFileFormatVersion 100
al final del comando y seleccione Aceptar para guardar los cambios.Aplique la versión más reciente del controlador OLE DB de Microsoft:
Si el agente de distribución (o agente de mezcla) se ejecuta para suscripciones de inserción, aplíquelo en el servidor distribuidor.
Si el agente de distribución (o agente de mezcla) se ejecuta para suscripciones de extracción, aplíquelo en el servidor de suscriptor.
Cambie el nombre del archivo msoledbsql.dll en la carpeta C:\Archivos de programa\Microsoft SQL Server\150\COM :
Si se trata de una suscripción de inserción, cambie el nombre del archivo en la carpeta del servidor distribuidor.
Si se trata de una suscripción de extracción, cambie el nombre del archivo en la carpeta del servidor de suscriptor.
Copie el archivo msoledbsql.dll de la carpeta C:\Windows\System32\ y péguelo en la carpeta C:\Archivos de programa\Microsoft SQL Server\150\COM .
Para solucionar este problema con la replicación de mezcla, siga estos pasos:
Aplique la actualización acumulativa 15 (CU15) de SQL Server 2019 o una versión posterior en el servidor distribuidor.
Siga todos los pasos que se aplican al problema de replicación transaccional.