CORRECÇÃO: Mensagem de erro quando executa uma aplicação baseada no SQL Server 2008 que chama a função SQLBindParameter: "O fluxo de protocolo de chamada de procedimento remoto (RPC) de fluxo de dados tabulares de entrada (TDS) está incorrecto"

A Microsoft distribui correções do Microsoft SQL Server 2008 como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 corrigir lançamento.

Sintomas

Em um aplicativo, você usa o driver SQL Server 2008 Native Client. Você chama a função SQLBindParameter para vincular um parâmetro de um tipo de dados de caractere largo para uma consulta. Por exemplo, você vincula um parâmetro do tipo de dados NCHAR ou do tipo de dados NVARCHAR. O aplicativo passa um valor maior que 4.000 para o parâmetro ColumnSize da função SQLBindParameter. Quando executa a consulta na aplicação, recebe a seguinte mensagem de erro:

Nota

O fluxo do protocolo de chamada de procedimento remoto (RPC) do fluxo de dados tabulares de entrada (TDS) está incorreto. Parâmetro 1 (""): o tipo de dados 0xE7 tem um comprimento de dados ou comprimento de metadados inválido.

Observação Esta mensagem de erro é uma mensagem de erro do lado do servidor. Se o aplicativo usa o driver SQL Server 2005 Native Client em vez disso, você recebe a seguinte mensagem de erro do lado do cliente, conforme esperado:

Nota

[Microsoft][SQL Native Client]Valor de precisão inválido

Causa

Este problema ocorre porque o controlador do Cliente Nativo do SQL Server 2008 não executa uma verificação de tempo de execução do tamanho da coluna de entrada para a função SQLBindParameter. Além disso, o controlador duplica o tamanho da coluna se o tamanho da coluna de entrada for superior a 4 000 e o parâmetro for um tipo de dados de carateres largos. Portanto, SQL Server retorna um erro do lado do servidor que o parâmetro excede o limite superior (8.000).

Observação O driver SQL Server 2005 Native Client executa uma verificação de tempo de execução para o tamanho da coluna de entrada. Consequentemente, se o tamanho da coluna de entrada for superior a 8000, o controlador SQL Server 2005 Native Client devolve um erro do lado do cliente.

Resolução

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 3 para SQL Server 2008 Service Pack 1. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

971491 Pacote de atualizações cumulativas 3 para SQL Server 2008 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server anterior 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

970365 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 1
Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 1 a uma instalação do SQL Server 2008 Service Pack 1. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

Estado

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

Referências

Para obter mais informações sobre o modelo de manutenção incremental para SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

935897 Um modelo de manutenção incremental está disponível na equipe de SQL Server para fornecer hotfixes para problemas relatados

Para obter mais informações sobre o esquema de nomenclatura para atualizações SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

822499 Novo esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL Server

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft