CORRECÇÃO: mensagem de erro quando executar o serviço de distribuição para sincronizar os subscritores com o Editor no Microsoft SQL Server 2005 ou SQL Server 2008: "O dados tabulares receber transmissão em sequência chamada de procedimento remoto (TDS) sequência de protocolo (RPC, Remote Procedure Call) está incorrecta"

Traduções de Artigos Traduções de Artigos
Artigo: 973103 - Ver produtos para os quais este artigo se aplica.
A Microsoft distribui correcções Microsoft SQL Server 2005 como um ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova versão contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Utiliza replicação transaccional no Microsoft SQL Server 2005. Quando executa o serviço de distribuição para sincronizar os subscritores com o fabricante, o serviço de distribuição poderão falhar e receber a seguinte mensagem de erro no registo do serviço de distribuição ou no registo de saída:

42000 Os dados em forma de tabela receber transmissão em sequência chamada de procedimento remoto (TDS) sequência de protocolo (RPC, Remote Procedure Call) está incorrecta. Foram fornecidos demasiados parâmetros no pedido de RPC. O máximo é 2100. 8003

Quando estes erros ocorrerem repetidamente, desempenho pode ser afectado. Quando ocorrer uma falha deste tipo, o serviço de distribuição fará volte a tentar processar tentar o mesmo comandos novamente. Por conseguinte, o serviço de distribuição utiliza mais tempo para sincronizar os subscritores com o fabricante porque cada lote problemático é tentado duas vezes.

Causa

Quando o serviço de distribuição processa os comandos pendentes na base de dados de distribuição, utiliza o parâmetro CommitBatchSize e o parâmetro CommitBatchThreshold para ajudar a determinar como muitos comandos são batched em conjunto como uma execução quando envia os comandos para os subscritores.

O parâmetro CommitBatchSize é o número de transacções de serem emitidos para os subscritores antes de uma declaração de CONSOLIDAÇÃO é emitida. O valor predefinido é 100. O parâmetro CommitBatchThreshold é o número de comandos de replicação de emissão para os subscritores antes de uma declaração de CONSOLIDAÇÃO é emitida. A predefinição é 1000.

Uma vez que uma única transacção pode conter um comando ou pode conter muitos comandos, definição do parâmetro CommitBatchSize para 100 e definindo o parâmetro CommitBatchThreshold para 1000 poderia para vários milhares comandos de ser entregue numa secção única de comandos.

Quando um artigo é adicionado a uma publicação, @ ins_cmd , @ upd_cmd e @ del_cmd parâmetros do tipo de comando de replicação são especificados para sp_addarticle armazenados procedimento para determinar como enviar comandos para o subscritor. Para além parâmetros CommitBatchSize e CommitBatchThreshold , o serviço de distribuição tem também em consideração que existem requisitos máximo no fornecedor de SQL Native Client OLE DB no quantos parâmetros podem ser vinculados numa secção única de comandos é enviada para o subscritor.

Existe um máximo de 2100 parâmetros que podem ser utilizados num batch único de comandos. O serviço de distribuição assim automaticamente divide grandes secções em apenas suficiente instruções por batch para que o máximo de parâmetros 2100 não seja excedido. Em seguida, os restantes comandos na secção de comando são automaticamente movidos para o próximo lote de execução.

Este problema ocorre quando o serviço de distribuição calcula incorrectamente o número de parâmetros que são necessários para entregar um lote de comandos. Isto acontece se o serviço de distribuição utiliza o procedimento armazenado dinâmico sp_executesql como um dispositivo de moldagem para um lote de muitos comandos replicados.

Se o comando replicado contém 2098 mais do que parâmetros o comando batch e o comando batch é moldado utilizando o procedimento armazenado sp_executesql para entregar a secção como uma instrução Transact-SQL dinamicamente incorporada, o Distribution Agent não inclui no cálculo que sp_executesql armazenado procedimento necessidades dois dependente parâmetros adicionais para funcionar. Por conseguinte, o número total de parâmetros poderá exceder 2100 parâmetros.

O serviço de distribuição poderá utilizar esta opção de entrega da instrução Transact-SQL dinamicamente incorporada moldada com o procedimento sp_executesql armazenados nas seguintes situações:
  • Este artigo contém colunas de objectos grandes binários (BLOB) como texto ou colunas de imagem.
  • Mais do que um tipo de comando de replicação é utilizado em todos os artigos. Por exemplo, se um artigo utiliza o tipo de comando de replicação de entrega SQL, mas outro artigo utiliza o procedimento sp_MSins_procedure armazenadas como o tipo de comando de replicação.

Resolução

SQL Server 2005

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 5 para o SQL Server 2005 Service Pack 3. Para obter mais informações sobre este pacote de actualização cumulativa, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
972511 Pacote de actualização cumulativa 5 para o SQL Server 2005 Service Pack 3
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento. A Microsoft recomenda que considerar a aplicação a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
960598Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 são criadas correcções para service packs do SQL Server específicos. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 3 para uma instalação do SQL Server 2005 Service Pack 3. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

SQL Server 2008

SQL Server 2008

importante Tem de utilizar esta correcção se estiver a executar a versão do SQL Server 2008.

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 7. Para obter mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
973601Pacote de actualização cumulativa 7 para o SQL Server 2008
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2008 anterior corrigir lançamento. Recomendamos que considere aplicar a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
956909O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008

SQL Server 2008 Service Pack 1 (SP1)

importante Tem de utilizar esta correcção se estiver a executar o SQL Server 2008 Service Pack 1 (SP1).

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 4 para o SQL Server 2008 Service Pack 1. Para obter mais informações sobre este pacote de actualização cumulativa, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
973602Pacote de actualização cumulativa 4 para o SQL Server 2008 Service Pack 1
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2008 anterior corrigir lançamento. A Microsoft recomenda que considerar a aplicação a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
970365O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 correcções são criadas para service packs do SQL Server específicos. Tem de aplicar uma correcção do SQL Server 2008 Service Pack 1 para uma instalação do SQL Server 2008 Service Pack 1. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

Como contornar

Para contornar este problema, utilize um dos seguintes métodos:

Método 1

Para ajudar a reduzir ocorrências deste erro para um nível mais toleráveis, diminua o valor dos parâmetros CommitBatchSize e CommitBatchThreshold ' Serviço de distribuição. O objectivo é restringir o número máximo de comandos por lote de consolidação, para evitar exceder 2,100 parâmetros por lote de comandos.

Por exemplo, o valor predefinido do parâmetro CommitBatchSize é 100. Pode ser alterado para 10. O valor predefinido do parâmetro CommitBatchThreshold é 1000. Pode alterá-lo para 100.

Diminuir estes valores pode afectar o desempenho porque secções não são entregues em tamanhos originalmente ideais. No entanto, este método ajuda a evitar as condições de erro descritas na secção causa.

Pode alterar os parâmetros CommitBatchSize e CommitBatchThreshold utilizando um dos seguintes métodos:
  • Adicionar os parâmetros CommitBatchSize e CommitBatchThreshold no comando para o passo de tarefa de serviço de distribuição no SQL Server Agent
  • Altere os parâmetros CommitBatchSize e CommitBatchThreshold quando cria um novo perfil de agente da caixa de diálogo Propriedades do distribuidor ou do Monitor de replicação.
Para obter mais informações sobre como alterar estes parâmetros, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx


Se pretender evitar completamente este erro na tentativa posterior da secção, deve planear o pior cenário de caso. Para efectuar este procedimento, encontrar o artigo maior que tenha maior número de colunas na publicação. Por exemplo, se tiver uma tabela com 100 colunas que é publicada na publicação transaccional, um único comando replicado essa tabela pode conter 100 parâmetros. Tem de reduzir a definição de parâmetro CommitBatchThreshold para que o número máximo de parâmetros com o serviço de distribuição para enviar por qualquer processo único no máximo 2098. Se todas as colunas são afectadas pelo comando, a definição de parâmetro CommitBatchThreshold tem de ser 20 ou mais pequeno para permitir um máximo de parâmetros de 2000 por lote de 20 comandos contra nessa tabela.

Método 2

Utilizam o mesmo comando tipo de replicação para todos os artigos na publicação quando configurou a publicação. Evite misturar os mecanismos de entrega comandos para artigos na mesma publicação para reduzir a necessidade do serviço de distribuição seleccionar entregar a secção utilizando o procedimento sp_executesql armazenado como um wrapper num lote de comandos.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Para obter mais informações sobre replicação Distribution Agent, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx

Para obter mais informações sobre perfis de agente de replicação, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx

Referências

Para obter mais informações sobre o modelo de assistência incremental para o SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
935897Um modelo de assistência incremental está disponível a equipa do SQL Server para proporcionar correcções para problemas comunicados
Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 3, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
913089Como obter o service pack mais recente para o SQL Server 2005
Para obter mais informações sobre as novas funcionalidades do SQL Server 2005 SP3 e sobre os melhoramentos no SQL Server 2005 SP3, visite o seguinte Web site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442
Para obter mais informações sobre o esquema de atribuição de nomes para as actualizações do SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes de ficheiros para pacotes de actualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia de actualização de software, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 973103 - Última revisão: 17 de agosto de 2009 - Revisão: 1.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • 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 2005 Server Workgroup
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Palavras-chave: 
kbmt kbsurveynew kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver KB973103 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 973103

Submeter comentários

 

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