Utilice el "-SkipErrors" parámetro en el agente de distribución con precaución

Resumen

Microsoft SQL Server 2000 y versiones posterior incluye el nuevo parámetro -SkipErrors en el agente de distribución que permite que el agente de distribución para omitir el error indicado en la duplicación transaccional y continuar el proceso de distribución.

El siguiente extracto proviene el tema "Control de errores de agente" en los libros en pantalla de SQL Server:

En el proceso de duplicación habitual, no debe producirse cualquier error que necesite omitir. La capacidad de omitir errores durante la duplicación transaccional está disponible para aquellas circunstancias donde espera que los errores y no desea que afecte a la replicación (por ejemplo, cuando se conmuta a un publicador secundario durante el trasvase de registros).
Microsoft recomienda que utilice este parámetro con precaución y sólo cuando haya una buena comprensión de las acciones siguientes:

  • ¿Qué indica el error.
  • ¿Por qué se produce el error.
  • ¿Por qué es mejor omitir el error en lugar de resolverlo.
Si no conoce las respuestas a estos elementos, inadecuados uso del parámetro - SkipErrors podría producirse una incoherencia de datos entre el publicador y el suscriptor. Este artículo describe algunos problemas que pueden producirse al utilizar el parámetro - SkipErrors incorrectamente.

Más información

En la duplicación transaccional, se propagan los cambios de datos en el publicador al suscriptor en la unidad de transacción.

En una transacción, puede haber varios comandos. De forma predeterminada, si se produce un error en un comando, toda replicación deshace la transacción en el suscriptor. Si agrega el parámetro - SkipErrors para permitir que el agente de distribución para omitir ciertos errores, el comando individual que produce este error no se aplica al suscriptor, pero todos los demás comandos en las mismas transacciones se aplican. En esta situación, la transacción de duplicación se aplica sólo parcialmente al suscriptor, que, por tanto, puede causar la inconsistencia de los datos entre el publicador y el suscriptor.

Por ejemplo:

Tiene una transacción a la espera de ser duplicadas para la tabla del suscriptor denominada T1. Esta transacción incluye 100 instrucciones insert. Cuando se aplica al suscriptor, inserta el primero 90 procesa correctamente; Sin embargo, la primera de noventa inserte la instrucción produce un error y se produce el error 2627 de infracción de clave principal.

Cuando no utiliza el "-SkipErrors" parámetro (comportamiento predeterminado):

De forma predeterminada, toda la transacción se deshace y ninguno de los 100 nuevos registros se insertan en la tabla de suscripción. En esta situación, debe corregir el error de replicación para que la transacción pueda volver a aplicar al suscriptor.

Cuando se utiliza el "-SkipErrors" parámetro:

El agente de distribución se registra el error en el historial del agente de distribución, se omite este error y continúa el proceso de distribución. Por lo tanto, excepto la primera de noventa nuevo registro que causó el error, los otros 99 nuevos registros se insertan en la tabla de suscripción. Esta transacción no se vuelve a aplicar el agente de distribución, incluso después de corregir manualmente el error en el suscriptor. Por lo tanto, en este caso, el suscriptor falta el nuevo registro de noventa en primer lugar y se produce un problema de inconsistencia de datos.

También debe tener en cuenta que, en SQL Server 2000 normalmente el agente de distribución es compartido por varias publicaciones (de forma predeterminada, hay un agente de distribución por par de base de datos de suscripción y la base de datos de publicación), por lo que si agrega el parámetro - SkipErrors en el trabajo del agente de distribución, afecta a todas las publicaciones que da servicio a este agente. En las versiones de SQL 2005 y 2008 de SQL, la duplicación transaccional utiliza a agentes independientes de forma predeterminada para las publicaciones creadas con el Asistente para nueva publicación. Para publicaciones creadas mediante procedimiento sp_addpublication almacenado, el comportamiento predeterminado es usar un agente compartido.



Para utilizar el parámetro - SkipErrors para una publicación específica, utilice a un agente independiente, que sólo sirve a una suscripción. Para utilizar a un agente independiente, siga los pasos para su versión:

SQL 2000

  1. En el Administrador corporativo de SQL Server, haga clic en la publicación, haga clic en Propiedadesy, a continuación, en la ficha Opciones de suscripción , haga clic en la opción de utilizar un agente de distribución que es independiente de otras publicaciones de esta base de datos .
    Nota: no se activa esta opción después de agregar las suscripciones a esta publicación.
  2. Agregue el parámetro - SkipErrors en el agente de distribución de una suscripción específica.

SQL 2005 y 2008 de SQL

  1. En management studio de SQL Server, vaya a replicación , a continuación, en la sección de Publicaciones locales , haga clic en la publicación, haga clic en Propiedadesy, a continuación, en la página Opciones de suscripción , cambie el valor de Agente de distribución independiente de False a True.
    Nota: no se activa esta opción después de agregar las suscripciones a esta publicación.
  2. Agregue el parámetro - SkipErrors en el Agente de distribución de una suscripción específica.
Para obtener más información consulte lo siguiente:


Administración de agentes de duplicación: http://technet.Microsoft.com/en-us/library/ms152762.aspx
Omitir errores en la duplicación transaccional: http://technet.Microsoft.com/en-us/library/ms151331.aspx
sp_addpublication (Transact-SQL) http://technet.Microsoft.com/en-us/library/ms188738.aspx
CORREGIR 956376 : el agente de distribución de SQL Server 2005 y el agente de distribución de SQL Server 2008 no Omitir error 20598 cuando configura una publicación transaccional de SQL Server 2000 para omitir error 20598

Referencias

Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

896609 la skipperrors - parámetro de agente de distribución para SQL Server 2000 puede omitir comandos más de lo esperado

Propiedades

Id. de artículo: 327817 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios