REVISIÓN: Algunos cambios pueden no replicarse en el suscriptor correctamente en SQL Server 2005 o en SQL Server 2008 cuando excede de la suma de los parámetros de 2.100

Nº de error: 50004054 (revisión SQL); 50004028 (revisión SQL)

Microsoft distribuye Microsoft SQL Server 2005 o SQL Server 2008 corrige como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior SQL Server 2005 o SQL Server 2008.

Síntomas

Imagine el siguiente escenario:
  • En Microsoft SQL Server 2005 o Microsoft SQL Server 2008, configurar la duplicación transaccional.
  • La replicación transaccional contiene algunos artículos.
  • Uno de los artículos, utilice procedimientos almacenados para ofrecer el comando Insertar, el comando update y el comando Eliminar. Por ejemplo, establecer entrega de instrucción para usar llame < procedimiento almacenado > en la ventana Propiedades de artículo. O bien, especifique los comandos mediante el parámetro @ins_cmd , el parámetro @del_cmd , y el parámetro @upd_cmd de la sp_addarticle procedimiento almacenado.
  • Para otro artículo, utilice los comandos de Transact-SQL para entregar las instrucciones.
  • Realizar algunos cambios a los artículos. Los cambios se entregan al suscriptor en el mismo lote de ejecución.
  • La suma de los parámetros que se deben entregar el lote supera 2.100.

    Nota: Si utilizas una traza del analizador de SQL para capturar una traza, puede encontrar el procedimiento almacenado sp_executesql para el lote que llama al agente de distribución.
  • Sincronizar los datos.
En este escenario, algunos cambios pueden no replicarse en el suscriptor correctamente.

Nota: Puede comprobar que este problema se produce con la herramienta de comparación de tabla (Tablediff.exe).

Además, se pierde la instrucción que se produce al final del lote. De forma predeterminada, un lote contiene 100 transacciones.

Nota: Puede ver los comandos duplicados mediante el procedimiento almacenado sp_browsereplcmds en la base de datos de distribución.

En esta situación, si la instrucción perdida realiza una operación de INSERCIÓN, puede pasarse una fila en el suscriptor. A continuación, si se producen operaciones de DML posteriores en la fila perdida en el publicador, el agente de distribución falla y recibirá el siguiente mensaje de "error 20598":
No se encontró la fila en el suscriptor al aplicar el comando replicado.

Causa

Agente de distribución debe detectar si se supera el límite máximo del parámetro 2.100 para procedimientos almacenados. A continuación, el agente de distribución debe mover los comandos desborde al siguiente lote de ejecución. Sin embargo, debido a un error, el último comando se omite y no se procesa.

Solución

SQL Server 2005 Service Pack 2

Importante: Debe utilizar esta revisión si está ejecutando SQL Server 2005 Service Pack 2.


La corrección para este problema se publicó en primer lugar en 11 de actualización acumulativa para SQL Server 2005 Service Pack 2. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 11 de actualización de 958735 acumulativa para SQL Server 2005 Service Pack 2
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
937137 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2005 Service Pack 2 a una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.


Nota: Para suscripciones de inserción, se aplican 11 acumulativo de actualización en el servidor de distribución. Para suscripciones de extracción, 11 acumulativo de actualización se aplican en los suscriptores.

SQL Server 2005 Service Pack 3

Importante: Debe utilizar esta revisión si está ejecutando SQL Server 2005 Service Pack 3.


La corrección para este problema también aparece más adelante se publicó en actualización acumulativa 1 de SQL Server 2005 Service Pack 3. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 1 de actualización de 959195 acumulativa para SQL Server 2005 Service Pack 3
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
960598 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de Service Pack 3 de SQL Server 2005 a una instalación de SQL Server 2005 Service Pack 3. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.


Nota: Para suscripciones de inserción, aplicar la actualización acumulativa 1 en el servidor de distribución. Para suscripciones de extracción, aplicar la actualización acumulativa 1 en los suscriptores.

SQL Server 2008

En primer lugar, la corrección para este problema se publicó en actualización acumulativa 3. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960484 acum actualizar paquete 3 para SQL Server 2008
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008
Nota: Para suscripciones de inserción, aplicar la actualización acumulativa 3 en el servidor de distribución. Para suscripciones de extracción, aplicar la actualización acumulativa 3 en los suscriptores.

Solución alternativa

Para evitar este problema, utilice uno de los métodos siguientes.

Método 1

Disminuya el valor del parámetro CommitBatchSize de agente de distribución. Por lo tanto, no puede exceder 2.100 parámetros por lote de transacciones confirmadas.

Método 2

Utilice el mismo mecanismo de entrega de comando para todos los artículos de la publicación. Evite mezclar los mecanismos de entrega de comando para los artículos de la misma publicación.

Para evitar el error 20598

Puede producirse el error 20598 como un efecto secundario de este problema. Para evitar el error 20598, puede utilizar el modificador - SkipErrors 20598 . Después de habilitar este modificador, el agente de distribución registra el error y, a continuación, sigue procesando las filas adicionales que deben entregarse. Después de que el agente de distribución se omite el error 20598, integridad de los datos permanece en peligro debido a la falta de fila. Tendrá que eliminar la fila y, a continuación, inserte de nuevo la fila en el publicador para entregar los cambios a todos los suscriptores.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

SQL Server 2005

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquete 11 de actualización de 958735 acumulativa para SQL Server 2005 Service Pack 2

SQL Server 2008

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960484 acum actualizar paquete 3 para SQL Server 2008

Referencias

Para obtener más información acerca de la lista de compilaciones disponibles después de SQL Server Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897 un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca de cómo obtener SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089 cómo obtener el service pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características y mejoras de SQL Server 2005 Service Pack 2, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquetes de actualización de 822499 nuevo esquema de nomenclatura para software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft
Propiedades

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

Comentarios