Compartir a través de


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
    

    Captura de pantalla de los resultados de la tabla publisher.

  • Convierta la columna (col1) en la tabla de base de datos suscriptor:

    SELECT id, col1, ASCII(col1) FROM SubscriberTable
    

    Captura de pantalla de los resultados de las tablas de suscriptor.

Solución alternativa

  • Para solucionar este problema con la replicación transaccional, siga estos pasos:

    1. Abra SQL Server Management Studio y conéctese al servidor que actúa como distribuidor.

    2. En Explorador de objetos, expanda Agente SQL Server y, a continuación, expanda Trabajos.

    3. 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.

    4. En la ventana Propiedades del paso de trabajo, agregue -NativeBcpFileFormatVersion 100 al final del comando y seleccione Aceptar para guardar los cambios.

    5. 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.

    6. 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.

    7. 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:

    1. Aplique la actualización acumulativa 15 (CU15) de SQL Server 2019 o una versión posterior en el servidor distribuidor.

    2. Siga todos los pasos que se aplican al problema de replicación transaccional.