ID do artigo: 923247 - Última revisão: quinta-feira, 22 de março de 2012 - Revisão: 1.0 Solução de problemas erro DBCC 2570 no SQL Server 2005 e versões posteriores
Nesta páginaINTRODUÇÃOEste artigo descreve o erro SQL Server 2570, o que causa
o erro e como resolver o problema. Mais InformaçõesVerificações DATA_PURITYSQL Server 2005, foi adicionada uma nova opção, DATA_PURITY, para os comandos DBCC CHECKDB e DBCC CHECKTABLE. Quando você executar um DBCC CHECKDB ou o comando DBCC CHECKTABLE com essa opção ativada, o comando executará validações de "pureza de dados" em cada valor de coluna de todas as linhas da tabela ou tabelas no banco de dados. Essas novas verificações são executadas para garantir que o valores armazenados nas colunas são válidas (isto é, que os valores não são fora do intervalo para o domínio associado ao tipo de dados de coluna). O a natureza da validação executada depende do tipo de dados da coluna. O lista parcial a seguir fornece alguns exemplos:Recolher esta tabela
As verificações de validação de pureza de dados não estão ativadas automaticamente para todos os bancos de dados. As verificações são habilitadas dependendo de vários fatores:
SINTOMASDados inválidos ou fora do intervalo tem foi armazenados na SQL Banco de dados de servidor em versões anteriores pelos seguintes motivos:
Alguns dos sintomas pode notar devido à presença de dados inválidos incluem (mas não estão limitados a) o:
Relatório de problema DATA_PURITYQuando você executa um comando DBCC CHECKDB ou DBCC CHECKTABLE com a opção DATA_PURITY ativada (ou a pureza dados verificações são executadas automaticamente) e dados inválidos existem nas tabelas verificadas pelo DBCC comandos, a saída do DBCC inclui mensagens adicionais que indicam o problemas com os dados. Algumas mensagens de erro de exemplo que indicam a pureza de dados problemas são mostrados abaixo:Resultados do DBCC para
"account_history". MSG 2570, nível 16, estado 2, linha 1 Página (1:1073) slot 33 no objeto 1977058079 ID, ID de índice 0, partição ID 129568478265344, unidade de alocação 129568478265344 de identificação (tipo "dados na linha"). Coluna "account_name_japan" valor está fora do intervalo para tipo de dados "nvarchar". Coluna de atualização para um valor válido. MSG 2570, nível 16, estado 2, linha 1 Página (1:1156), slot 120 no objeto 1977058079 ID, ID de índice 0, partição ID 129568478265344, ID de unidade de alocação 129568478265344 (digite "Na linha dados"). O valor da coluna "account_name_japan" está fora do intervalo para tipo de dados "nvarchar". Coluna de atualização para um valor válido. Há são 153137 linhas nas páginas 1080 de objeto "account_history". CHECKDB encontrado 0 erros de alocação e erros de consistência 338 na tabela "account_history" (objeto 1977058079 ID). CHECKDB encontrado erros de alocação de 0 e 338 erros de consistência no banco de dados 'BadUnicodeData'. Execução de DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, contate o administrador do sistema. Resultados do DBCC para 'table1'. MSG 2570, nível 16, Estado 3, linha 1 Página (1:154), slot 0 em objeto 2073058421 ID, ID de índice 0, partição ID 72057594038321152, unidade de alocação identificação 72057594042318848 (tipo "Na linha dados"). O valor da coluna "col2" está fora do intervalo para tipo de dados "real". Coluna de atualização para um valor válido. Há 4 linhas em 2 páginas de objeto "table1". CHECKDB encontrado erros de alocação de 0 e 1 consistência erros tabela 'table1' (objeto 2073058421 ID). CHECKDB encontrado 0 erros de alocação e 1 consistência erros no banco de dados 'realdata'. Execução de DBCC foi concluída. Se DBCC imprimiu erro mensagens, contate o administrador do sistema. Resultados do DBCC para 'table2'. MSG 2570, nível 16, Estado 3, linha 1 Página (1:155), slot 0 em objeto 2105058535 ID, ID de índice 0, partição ID 72057594038452224, unidade de alocação identificação 72057594042449920 (tipo "Na linha dados"). O valor da coluna "col2" está fora do intervalo para tipo de dados "decimal". Coluna de atualização para um valor válido. Há 4 linhas em páginas de 1 objeto "tabela2". CHECKDB encontrado erros de alocação de 0 e 1 consistência erros tabela 'table2' (objeto 2105058535 ID). CHECKDB encontrado 0 erros de alocação e 1 consistência erros no banco de dados 'realdata'. Execução de DBCC foi concluída. Se DBCC imprimiu erro mensagens, contate o administrador do sistema. Resultados do DBCC para 'Tabela3'. MSG 2570, nível 16, Estado 3, linha 1 Página (1:157), slot 0 em objeto 2121058592 ID, ID de índice 0, partição ID 72057594038517760, unidade de alocação identificação 72057594042515456 (tipo "Na linha dados"). O valor da coluna "col2" está fora do intervalo para tipo de dados "datetime". Coluna de atualização para um valor válido. Existem 3 linhas nas páginas 1 objeto "Tabela3". CHECKDB encontrado erros de alocação de 0 e 1 consistência erros tabela 'Tabela3' (objeto 2121058592 ID). CHECKDB encontrado 0 erros de alocação e 1 consistência erros no banco de dados 'realdata'. Execução de DBCC foi concluída. Se DBCC imprimiu erro mensagens, contate o administrador do sistema. Corrigindo o problema de pureza de dadosOs erros 2570 não podem ser reparados usando qualquer DBCC repair opções. Isso ocorre porque é impossível para DBCC determinar qual valor deve ser usado para substituir o valor de coluna inválido. Assim, o valor da coluna deve ser atualizado manualmente.Para executar uma atualização manual, você precisa encontrar a linha que tem o problema. Há duas maneiras de fazer isso.
Depois de encontrar o linha correta, uma decisão precisa ser feita no novo valor que será usado para Substitua os dados inválidos existentes. Essa decisão deve ser feito com muito cuidado com base no intervalo de valores que funcionam para o aplicativo, bem como o que faz sentido lógico dessa linha específica de dados. As opções disponíveis são:
Localizando linhas com valores inválidos usando consultas T-SQLO tipo de consulta que você precisa executar para localizar linhas que possuem valores inválidos depende do tipo de dados da coluna que relatou um problema. Se você examinar a mensagem de erro 2570, você irá notar duas partes importantes da informações que irão ajudá-lo com isso. No exemplo a seguir, a coluna valor "account_name_japan" está fora do intervalo para tipo de dados "nvarchar". Podemos facilmente identificar a coluna que tem o problema, bem como o tipo de dados do coluna envolvida. Assim, depois de conhecer os dados digite e a coluna envolvidas, você pode formular a consulta para localizar linhas que contêm valores inválidos para que coluna, selecionando as colunas necessárias para identificar a linha (como predicados em uma cláusula WHERE) para qualquer posteriormente atualizar ou excluir.Tipo de dados Unicode: Tipo de dados float: Tipo de dados real: Data dados tipo: Você precisará executar duas consultas diferentes para identificar as linhas que contêm valores inválidos para coluna de hora de data. Localizando linhas com um valor inválido usando o local físico:Você pode usar esse método se você não conseguir encontrar as linhas de interesse usando o método T SQL discutido acima. Na mensagem de erro 2570, o local físico da linha que contém o valor inválido é impresso. Para exemplo, examine a seguinte mensagem:Página (1:157)
slot 0 em objeto 2121058592 ID, identificação de índice 0, partição ID 72057594038517760,
unidade de alocação identificação 72057594042515456 (tipo "dados na linha"). É o valor da coluna "col2"
fora do intervalo para tipo de dados "datetime". Coluna de atualização para um legal
valor.
Aviso Recomendamos que você use o primeiro método (ou seja, usar SQL T consultas para localizar as informações necessárias). Uso do comando DBCC PAGE somente como um último recurso. Tome um cuidado máximo enquanto você usar esse comando em uma produção ambiente. É recomendável restaurar o banco de dados de produção em um teste servidor, em seguida, obter todas as informações necessárias usando DBCC PAGE e faça o atualizações no servidor de produção. Como sempre, certifique-se de manter um backup pronto no caso de algo der errado e precisar reverter para uma cópia anterior do banco de dados. ReferênciasPara obter mais informações sobre a instrução DBCC CHECKDB, consulte
o tópico "DBCC CHECKDB (Transact-SQL)" no Microsoft Developer seguinte
Site da Network (MSDN): http://msdn2.microsoft.com/en-us/library/ms176064.aspx
(http://msdn2.microsoft.com/en-us/library/ms176064.aspx)
Para obter mais informações sobre conhecidos
problemas no SQL Server 2000, clique no número abaixo para visualizar o
artigo na Base de dados de Conhecimento da Microsoft: 900335
(http://support.microsoft.com/kb/900335/
)
CORREÇÃO: A operação de recuperação de banco de dados automático SQL Server 2000 pode não ter êxito se um índice contém um tipo de dados FLOAT ou um tipo de dados REAL e esse tipo de dados contém um valor NaN Para obter mais informações sobre eventos RPC, consulte o
Tópico "Chamando um procedimento armazenado (OLE DB)" no seguinte site da MSDN:. aspx http://msdn2.microsoft.com/en-us/library/aa198358 (SQL.80)
(http://msdn2.microsoft.com/en-us/library/aa198358(SQL.80).aspx)
Para obter mais informações sobre os tipos de dados diferentes, consulte o
Tópico "Chamando um procedimento armazenado (OLE DB)" no seguinte site da MSDN:http://msdn2.microsoft.com/en-us/library/ms187752.aspx
(http://msdn2.microsoft.com/en-us/library/ms187752.aspx)
Para obter mais informações sobre convenções de valor de ponto flutuante, visite
o seguinte site da Intel:http://www.Intel.com/design/PentiumII/manuals/243191.htm
(http://www.intel.com/design/pentiumii/manuals/243191.htm)
Microsoft
Fornece informações de contato de terceiros para ajudá-lo a encontrar suporte técnico.
Informações de contato podem ser alteradas sem aviso prévio. Microsoft não
garante a precisão dessas informações de contato de terceiros. A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 923247
(http://support.microsoft.com/kb/923247/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início