CORRECÇÃO: Mensagem de erro quando executa a instrução DBCC CHECKTABLE ou a instrução DBCC CHECKDB no Microsoft SQL Server 2005: "valor da coluna '<columnname>' está fora do intervalo para o tipo de dados 'flutuação'"

Traduções de Artigos Traduções de Artigos
Artigo: 942904 - Ver produtos para os quais este artigo se aplica.
Erro: # 50001847 (correcção SQL)
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

No SQL Server 2005, quando executa a instrução DBCC CHECKTABLE ou a instrução DBCC CHECKDB para efectuar uma verificação de consistência física numa tabela, receber uma mensagem de erro semelhante à seguinte:
DBCC resultados de '<tablename>'.
Msg 2570, 16 de nível 3 de estado, linha 1 página (1:73) ranhura 2 no objecto 2073058421 ID, índice de ID 1, partição 72057594038321152 ID, unidade de atribuição da ID 72057594043301888 (tipo "na linha de dados"). Valor da coluna "<columnname>" está fora do intervalo de dados de tipo "float". Actualize a coluna para um valor legal.
Nota Nesta mensagem de erro, TableName representa o nome real da tabela e ColumnName representa o nome real da coluna.

Causa

Este problema ocorre porque uma instrução INSERT ou uma instrução UPDATE passa valores que estão fora do intervalo para uma coluna que é uma coluna de tipo de dados FLOAT. Esta condição pode ocorrer se a instrução INSERT ou a instrução UPDATE não envia os valores que são inseridos ou que estão a ser actualizados como literais. Por exemplo, este problema poderá ocorrer se utilizar uma variável para transmitir um valor inválido para uma instrução INSERT ou numa instrução UPDATE .

Resolução

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 4. Para obter mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005 Service Pack 2, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
941450Pacote de actualização cumulativa 4 para o SQL Server 2005 Service Pack 2
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:
937137Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 2
As correcções Microsoft SQL Server 2005 são criadas para service packs do SQL Server específicos. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 2 para uma instalação do SQL Server 2005 Service Pack 2. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

Para obter mais informações sobre os ficheiros que são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de actualização cumulativa que contém a correcção que é descrita neste artigo da base de dados de conhecimento da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
941450Pacote de actualização cumulativa 4 para o SQL Server 2005 Service Pack 2

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

Depois de aplicar esta correcção, SQL Server não impede introduzir valores inválidos em colunas com colunas de tipo de dados FLOAT. Depois de aplicar esta correcção, os valores inválidos não são indicados como erros na instrução DBCC CHECKTABLE ou na instrução DBCC CHECKDB .

Passos para reproduzir o problema

  1. Abra o SQL Server Management Studio e, em seguida, ligar a uma instância do SQL Server 2005.
  2. Crie uma nova consulta e, em seguida, execute as seguintes instruções:
    create table tb1 (c float)
    go
    
    declare @f float
    set @f=1E-307*0.01
    insert tb1 values (@f)
    go
    select * from tb1
    go
    Viso que o seguinte valor inválido foi inserido na tabela:
    1E 309
  3. Execute as seguintes instruções:
    DBCC CHECKTABLE ('tb1')
    go
    É apresentada a mensagem de erro que descreve a secção "Sintomas".
  4. Execute as seguintes instruções:
    insert tb1 values (1E-309)
    go
    se recebe uma das seguintes mensagens, consoante a compilação do SQL Server:

    mensagem 1
    Aviso: o flutuante aponte 1E-309' Valor' é demasiado pequena. Será interpretado como 0.
    mensagem 2
    A flutuar aponte 1E-309' Valor' está fora do intervalo de representação do computador (8 bytes).
    Neste caso, o valor inválido não se encontra na tabela uma vez que envia o valor como um literal.
  5. Execute as seguintes instruções para examinar o valor que é inserido a tabela no passo 4:
    select * from tb1
    go
    Viso que 0 é inserida em vez do valor inválido.

Referências

Para obter mais informações sobre a resolução de problemas erro DBCC 2750 (pureza de dados), clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
923247Resolução de problemas erro DBCC 2570 no SQL Server 2005
Para obter mais informações sobre a lista de compilações disponíveis depois de SQL Server Service Pack 2, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
937137Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 2
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 2, 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 mais informações sobre as novas funcionalidades e melhorias no SQL Server 2005 Service Pack 2, visite o seguinte Web site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId=71711
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: 942904 - Última revisão: 14 de novembro de 2007 - Revisão: 2.4
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 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
Palavras-chave: 
kbmt kbsql2005engine kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced KB942904 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: 942904

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