Comparteix a través de


Solución del error 20598 en la replicación transaccional

En este artículo se describe cómo solucionar el error 20598 en la replicación transaccional y proporciona soluciones alternativas para el problema.

Versión del producto original: SQL Server
Número de KB original: 3066750

Solución de problemas

Para solucionar este problema, siga estos pasos:

  1. En el monitor de replicación del Agente de distribución para el suscriptor, extraiga el número de secuencia de transacciones y el identificador de comando que encontraron el error:

    Captura de pantalla del mensaje de error en el monitor de replicación.

    Nota:

    Puede obtener el mismo número de secuencia de transacciones del servidor distribuidor mediante la consulta siguiente:

    Captura de pantalla de la entrada de consulta y el resultado.

  2. Extraiga los comandos que se asignan al número de secuencia de transacciones en el servidor distribuidor. Use el número de secuencia de transacciones del paso 1 como parámetro para este comando:

    Captura de pantalla de los comandos que se asignan al número de secuencia de transacciones en el servidor distribuidor.

  3. En la salida del paso 2, identifique el comando que produce un error mediante el identificador de comando del paso 1. Consulte la command_id columna del conjunto de resultados.

  4. Valide la información del artículo en el publicador. Use el identificador de artículo que obtenga del paso 2 y compruebe los detalles del artículo que está intentando actualizar:

    Captura de pantalla de los detalles de la información del artículo en el publicador.

  5. Valide la clave principal en el publicador.

    Tiene dos fragmentos de información: la tabla en la que intenta realizar la actualización y el valor de clave principal. Puede consultar la tabla mediante el valor de clave principal y buscar la fila en la base de datos del publicador. Por ejemplo:

    SELECT * FROM tbl_sample WHERE column_name = <primary_key_value>
    
  6. Compruebe el problema en el suscriptor.

    Ejecute la misma consulta en la base de datos del suscriptor y compárela con el resultado que recibe de la base de datos del publicador.

Solución alternativa

Para solucionar este problema, use los dos métodos siguientes:

  • Inserte manualmente la fila que falta en el suscriptor. Esto puede permitir que el Agente de distribución vuelva a intentar el comando con errores y continúe con la replicación.

    Nota:

    Es posible que falten otras filas y que tengan que insertarse manualmente en el suscriptor si hay más errores.

  • Indique al Agente de distribución omitir este error y continuar replicando el resto de los cambios. El Agente de distribución acepta el skiperrors parámetro . Puede usar este parámetro para pasar el código de error 20598. Esto puede mantener intacta la configuración de replicación mientras espera una oportunidad de sincronizar manualmente las filas que faltan.

    Nota:

    Debe evaluar cuidadosamente los efectos descendentes de la integridad referencial y los desencadenadores presentes en la tabla afectada antes de continuar.

Recopilación de datos para investigar la causa de este problema

Si este problema se produce repetidamente, debe recopilar los siguientes datos para su análisis por parte del equipo de soporte técnico de Microsoft SQL Server para que puedan intentar identificar la causa del problema:

  • Copia de seguridad de la base de datos de distribución cuando se produce este problema. (Esto debe ser después de que se notifique el error y antes de reinicializar la suscripción).

  • Copias de seguridad del registro de transacciones del publicador y del suscriptor. (Recopile los datos durante un mínimo de 24 horas antes del momento en que se produjo el problema).

  • Seguimientos del generador de perfiles que muestran la actividad de los agentes de replicación en el publicador, el suscriptor y el distribuidor. (Asegúrese de que el generador de perfiles se está ejecutando incluso antes de que se inicie el problema. Idealmente, debe iniciar el generador de perfiles aproximadamente al mismo tiempo que la hora de inicio del trabajo de reindexación).

  • Salidas de los cinco pasos anteriores para identificar la tabla afectada y el valor de clave principal que falta.

  • Salida de las vistas de catálogo de las bases de datos del publicador y del suscriptor:

    • sys.partitions
    • sys.allocation_units
    • sys.objects
  • Salidas detalladas de los registros del agente de replicación.

Problemas conocidos que se tratan

Los siguientes problemas se producen en versiones anteriores de SQL Server: