KB2359606 - CORRECÇÃO: Mensagem de erro "System.OverflowException: O valor era muito grande ou muito pequeno para um Int32" ocorre quando tenta gerar um relatório no Microsoft SQL Server 2008 R2 Reporting Services

Aplica-se A
SQL Server 2008 R2

A Microsoft distribui as correções 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 R2 corrigir lançamento.

Sintomas

Tenha em conta o seguinte cenário:

  • Você tem um arquivo RDL (Report Definition Language) que contém um controle Tablix no Microsoft SQL Server 2008 R2 Reporting Services.
  • Adicione um grupo de linhas ou um grupo de colunas ao controlo Tablix e, em seguida, defina uma expressão de grupo para os dados do grupo utilizando uma coluna com um tipo de dados numérico.
  • Esta coluna contém um valor que não está no intervalo do tipo de dados Int32. Por exemplo, um valor da coluna é 9000001777400270.

Nesse cenário, você recebe a seguinte mensagem de erro ao tentar gerar o relatório:

Nota

Ocorreu um erro durante o processamento do relatório local.
     Ocorreu um erro durante o processamento do relatório.
     O valor era demasiado grande ou demasiado pequeno para um Int32.

      

Resolução

Informações de atualização cumulativa

SQL Server 2008 R2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 4. 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:

2345451 pacote de atualizações cumulativas 4 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

Solução

Para contornar esse problema, converta o tipo de dados numéricos para o tipo de dados Double ou para o tipo de dados Int64. Para fazê-lo, siga estes passos:

  1. Faça duplo clique no grupo no painel Grupos de Linhas ou Grupos de Colunas para abrir as propriedades do Grupo .

  2. No separador Geral , altere a expressão de grupo para a seguinte expressão de tipo de dados System.Double:

    CDbl(Campos!<Nome> do campo. Valor)Alternativamente, altere a expressão de grupo para o seguinte tipo de dados System.Int64:

    CLng(Campos!<Nome> do campo. Valor)

Estado

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

Referências

Para mais informações sobre tipos de dados, visite os seguintes sites:

Informações gerais sobre a estrutura "Decimal"

Informações gerais sobre a estrutura "Int32"

Informações gerais sobre a estrutura "Int64"

Informações gerais sobre a estrutura "Double"