REVISIÓN: mensaje de error al ejecutar el agente de distribución para sincronizar los suscriptores con el Editor de Microsoft SQL Server 2005 o SQL Server 2008: "las datos tabulares entrantes secuencia llamada de procedimiento remoto (TDS) es incorrecta la secuencia de protocolo (RPC)"

Seleccione idioma Seleccione idioma
Id. de artículo: 973103 - Ver los productos a los que se aplica este artículo
Microsoft distribuye correcciones de Microsoft SQL Server 2005 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 incluidas en el anterior de SQL Server 2005.
Expandir todo | Contraer todo

En esta página

Síntomas

Usar la replicación transaccional en Microsoft SQL Server 2005. Cuando ejecuta el agente de distribución para sincronizar los suscriptores con el publicador, el agente de distribución puede fallar y recibe el siguiente mensaje de error en el historial del agente de distribución o en el registro de salida:

42000 Los datos tabulares entrantes secuencia llamada de procedimiento remoto (TDS) secuencia de protocolo (RPC) es incorrecto. Se proporcionaron demasiados parámetros en esta solicitud RPC. El máximo es de 2100. 8003

Cuando se producen estos errores repetidamente, el rendimiento puede verse afectado. Cuando se produce un error de tal, el agente de distribución se realizará reintento procesamiento pruebe los mismos comandos de nuevo. Por lo tanto, el agente de distribución utiliza más tiempo para sincronizar los suscriptores con el publicador porque cada lote problemático se intenta dos veces.

Causa

Cuando el agente de distribución procesa los comandos pendientes en la base de datos de distribución, utiliza el parámetro CommitBatchSize y por el parámetro CommitBatchThreshold para ayudar a determinar cómo muchos comandos son lotes juntos como una ejecución cuando envía los comandos a los suscriptores.

El parámetro CommitBatchSize es el número de transacciones que deben emitirse a los suscriptores antes de que se emita una instrucción COMMIT . El valor predeterminado es 100. El parámetro CommitBatchThreshold es el número de comandos de duplicación que deben emitirse a los suscriptores antes de que se emita una instrucción COMMIT . El valor predeterminado es 1000.

Debido a una única transacción puede contener un comando o puede contener muchos comandos, establezca el parámetro CommitBatchSize a 100 y el parámetro CommitBatchThreshold 1000 podrían permitir varios miles de comandos que se va a entregar en un solo lote de comandos.

Cuando se agrega un artículo a una publicación, el @ ins_cmd , @ upd_cmd y @ del_cmd se especifican parámetros del tipo de comando de replicación para el sp_addarticle almacenados procedimiento para determinar cómo enviar comandos al suscriptor. Además de los parámetros CommitBatchSize y CommitBatchThreshold , tiene el agente de distribución también tener en cuenta que existen requisitos máximo en proveedor de OLE DB de SQL Native Client en cuántos parámetros pueden enlazarse en un solo lote de comandos que envía al suscriptor.

Hay un máximo de parámetros de 2100 que puede utilizarse en un solo lote de comandos. El agente de distribución, por lo tanto, automáticamente divide lotes grandes en sólo suficiente instrucciones por lote de modo que no se supera el máximo de parámetros de 2100. A continuación, se mueven automáticamente los comandos restantes en el lote de comandos en el siguiente lote de ejecución.

Este problema se produce cuando el agente de distribución calcula incorrectamente el número de parámetros que son necesarios para entregar un lote de comandos. Esto sucede si el agente de distribución utiliza el procedimiento almacenado dinámico sp_executesql como un contenedor para un lote de muchos comandos duplicados.

Si el comando replicado contiene más de 2098 parámetros del comando por lotes y el comando de proceso por lotes se envuelve mediante el procedimiento almacenado sp_executesql para entregar el lote como una instrucción de Transact-SQL generada dinámicamente, el agente de distribución no incluye en el cálculo que la sp_executesql almacenado procedimiento necesidades dos enlazado parámetros adicionales para funcionar. Por lo tanto, el número total de parámetros puede supera los parámetros de 2100.

El agente de distribución puede utilizar esta opción de entrega de la instrucción Transact-SQL generada dinámicamente ajustada con el procedimiento almacenado sp_executesql en las situaciones siguientes:
  • El artículo contiene las columnas de objeto grande binario (BLOB) como texto o columnas de imagen.
  • Se utiliza más de un tipo de comando de replicación a través de todos los artículos. Por ejemplo, si un artículo utiliza el tipo de comando de duplicación de SQL entrega, pero otro artículo utiliza el procedimiento de sp_MSins_procedure almacenado como el tipo de comando de duplicación.

Solución

SQL Server 2005

La corrección para este problema se publicó por primera vez en 5 de actualización acumulativa para 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:
972511 Paquete 5 de la actualización acumulativa para SQL Server 2005 Service Pack 3
Nota Como las compilaciones son acumulativas, cada versión de revisión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior de SQL Server 2005. Microsoft recomienda que considere aplicar la versión de revisión más reciente que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960598Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 se crean las revisiones para los service Pack específicos de SQL Server. Debe aplicar una revisión de SQL Server 2005 Service Pack 3 a una instalación de SQL Server 2005 Service Pack 3. De forma predeterminada, cualquier revisión suministrada en un service pack se incluye en el siguiente service pack.

SQL Server 2008

SQL Server 2008

importante Debe utilizar esta revisión si está ejecutando la versión de lanzamiento de SQL Server 2008.

La corrección para este problema se publicó por primera vez en actualización acumulativa 7. 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:
973601Paquete de actualización acumulativa 7 de SQL Server 2008
Nota Como las compilaciones son acumulativas, cada versión de revisión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas con la anterior de SQL Server 2008. Recomendamos que considere aplicar la versión de revisión más reciente que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
956909SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008

SQL Server 2008 Service Pack 1 (SP1)

importante Debe utilizar esta revisión si está ejecutando SQL Server 2008 Service Pack 1 (SP1).

La corrección para este problema se publicó por primera vez en actualización acumulativa 4 para SQL Server 2008 Service Pack 1. 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:
973602Paquete de actualización acumulativa 4 para SQL Server 2008 Service Pack 1
Nota Como las compilaciones son acumulativas, cada versión de revisión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas con la anterior de SQL Server 2008. Microsoft recomienda que considere aplicar la versión de revisión más reciente que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365Compilaciones de SQL Server 2008 publicados después SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 se crean las revisiones para los service Pack específicos de SQL Server. Debe aplicar una revisión de Service Pack 1 de SQL Server 2008 a una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier revisión suministrada en un service pack se incluye en el siguiente service pack.

Solución

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

Método 1

Para ayudar a reducir las repeticiones de este error a un nivel más tolerable, disminuir el valor de los parámetros CommitBatchSize y CommitBatchThreshold para Agente de distribución. El objetivo es restringir el número máximo de comandos por lote de confirmación, para evitar excederse 2.100 parámetros por lotes de comandos.

Por ejemplo, el valor predeterminado del parámetro CommitBatchSize es 100. Puede cambiar a 10. El valor predeterminado del parámetro CommitBatchThreshold es 1000. Puede cambiar a 100.

Reducir estos valores puede afectar al rendimiento porque lotes no se entregan en el tamaño óptimo originalmente. Sin embargo, este método ayuda a evitar las condiciones de error que se describen en la sección causa.

Puede cambiar los parámetros CommitBatchSize y CommitBatchThreshold mediante uno de los métodos siguientes:
  • Agregar los parámetros CommitBatchSize y CommitBatchThreshold en el comando para el paso de trabajo de agente de distribución en el Agente SQL Server
  • Cambiar los parámetros CommitBatchSize y CommitBatchThreshold al crear un nuevo perfil de agente desde el cuadro de diálogo Propiedades del distribuidor o desde el Monitor de duplicación.
Para obtener más información acerca de cómo cambiar estos parámetros, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx


Si desea evitar completamente este error en reintento posterior del lote, debe planear la peor. Para ello, encontrar el artículo más ancho que tiene la mayoría de los número de columnas en la publicación. Por ejemplo, si tiene una tabla que tiene 100 columnas que se publica en la publicación transaccional, un único comando replicado frente a esa tabla puede contener 100 parámetros. Debe reducir el valor del parámetro CommitBatchThreshold para que el número máximo de parámetros que el agente de distribución tiene que enviar en un único lote máximo 2098. Si todas las columnas se ven afectadas por el comando, el valor del parámetro CommitBatchThreshold tiene que ser 20 o más pequeño para permitir un máximo de parámetros de 2000 por lote de 20 comandos en esa tabla.

Método 2

Utilizar el mismo tipo de comando de duplicación para todos los artículos de la publicación al configurar la publicación. Evite mezclar los mecanismos de entrega de comando para artículos en la misma publicación para reducir la necesidad del agente de distribución seleccionar la entrega del lote utilizando el procedimiento almacenado sp_executesql como un contenedor en un lote de comandos.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Para obtener más información acerca de duplicación Agente de distribución, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx

Para obtener más información acerca de perfiles de agente de duplicación, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx

Referencias

Para obtener más información acerca del modelo incremental de servicio para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible desde 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 3, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089Cómo obtener el service pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características de SQL Server 2005 SP3 y las mejoras de SQL Server 2005 SP3, visite el siguiente sitio Web de Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442
Para obtener más información sobre el 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:
822499Nuevo esquema de nomenclatura para los paquetes de actualización del software de Microsoft SQL Server
Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 973103 - Última revisión: lunes, 17 de agosto de 2009 - Versión: 1.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Palabras clave: 
kbmt kbsurveynew kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver KB973103 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 973103

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com