KB2519358 - CORREÇÃO: Erro "O valor inteiro está fora do intervalo" quando você passa um valor bigint como o argumento last_sync_version da função CHANGETABLE no SQL Server 2008 ou no SQL Server 2008 R2

Aplica-se A
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express

A Microsoft distribui as correções do Microsoft SQL Server 2008 Service Pack 1 (SP1) e do Microsoft SQL Server 2008 R2 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 SP1 e SOL Server 2008 R2 corrigir lançamento.

Sintomas

Tenha em conta o seguinte cenário:

  • Ativar o registo de alterações numa tabela no SQL Server 2008 ou no SQL Server 2008 R2.

  • Executar uma consulta que utiliza a função CHANGETABLE em conjunto com o argumento last_sync_version para devolver informações de controlo das alterações ocorridas na tabela.

  • Um valor bigint é passado como o argumento last_sync_version.

Por exemplo, pode executar a consulta seguinte depois de ativar o controlo de alterações numa tabela:

SELECT * FROM CHANGETABLE(changes dbo.t1, 2222222222) as ct

Nesse cenário, a execução da consulta falha e você recebe as seguintes informações:

Nota

Msg 1080, Nível 15, Estado 1, Linha 1
O valor inteiro , o valor bigint , está fora do intervalo.

Notas

  • O tipo do argumento last_sync_version é definido como bigint. Portanto, espera-se que a consulta seja executada com êxito.
  • O valor Bigint é um marcador de posição que representa o valor Bigint que é passado como o argumento last_sync_version.

Resolução

Informações de atualização cumulativa

SQL Server 2008 R2 Service Pack 1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 1 para SQL Server 2008 R2 Service Pack 1. Para mais informações sobre como obter este pacote de actualização cumulativa, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2544793 Pacote de Atualização Cumulativa 1 para SQL Server 2008 R2 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 anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos 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:

2567616 As compilações do SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2 Service Pack 1

SQL Server 2008 Service Pack 2

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 4 para SQL Server 2008 Service Pack 2. 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:

2527180 Pacote de atualizações cumulativas 4 para SQL Server 2008 Service Pack 2Nota 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:

2402659 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 2 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 2 a uma instalação do SQL Server 2008 Service Pack 2. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

SQL Server 2008 R2

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

2507770 pacote de atualização cumulativa 7 para SQL Server 2008 R2 Observação 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 anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos 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:

981356 As compilações SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 13. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 SP1, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2497673 Pacote de atualizações cumulativas 13 para SQL Server 2008 Service Pack 1
Observação 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 lançamento anterior da correção do SQL Server 2008 SP1. Recomendamos 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

Estado

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

Solução

Para contornar esse problema, crie uma variável do tipo bigint e, em seguida, passe a variável como o argumento last_sync_version da função CHANGETABLE. Por exemplo, pode executar com êxito a seguinte consulta:

DECLARE @v3 bigint = 2222222222
SELECT * FROM CHANGETABLE(changes dbo.t1, @v3 ) as ct

Mais Informações

Para obter mais informações sobre a função CHANGETABLE para Transact-SQL, visite o seguinte site da Microsoft Development Network (MSDN):

Informações gerais sobre a função CHANGETABLE para Transact-SQL