CORRECÇÃO: A criação de tabela, inserção de linha e criação de índice no interior de transacções, seguidas por adição de restrição podem resultar em erros de consistência

Traduções de Artigos Traduções de Artigos
Artigo: 286749 - Ver produtos para os quais este artigo se aplica.
Erro n.º: 351939 (SHILOH_bugs)
Expandir tudo | Reduzir tudo

Sintomas

Quando uma transacção aberta, criar uma tabela, inserir linhas, criar um índice na tabela, consolidar a transacção e, em seguida, adicionar uma restrição, um DBCC CHECKTABLE subsequentes podem comunicar erros de consistência. DBCC CHECKTABLE podem devolver resultados semelhantes:
Servidor: Erro 8970, nível de 16, estado 1, linha 2
Erro da linha: 2041058307 de ID de objecto, índice de ID de 0, ID (1:77) da página, linha ID 0. Coluna 'LastModified' foi criado NOT NULL, mas é NULL na linha.
Servidor: Erro 8970, nível de 16, estado 1, linha 2
Erro da linha: 2041058307 de ID de objecto, índice de ID de 0, ID (1:77) da página, linha ID 1. Coluna 'LastModified' foi criado NOT NULL, mas é NULL na linha.
Servidor: Erro 8970, nível de 16, estado 1, linha 2
Erro da linha: 2041058307 de ID de objecto, índice de ID de 0, ID (1:77) da página, linha ID 2. Coluna 'LastModified' foi criado NOT NULL, mas é NULL na linha.
DBCC resultados de '# TableX_____________________________000000000011'.
Não existem linhas 0 nas páginas de 1 para o objecto '# TableX______________________________________________000000000011'.
CHECKTABLE encontrados erros de atribuição de 0 e 3 consistência erros na tabela '# TableX________________________000000000011' (objecto 2041058307 ID).
repair_allow_data_loss é o nível mínimo de reparação para os erros encontrados pelo DBCC CHECKTABLE (tempdb.dbo.#TableX________________________________________000000000011).

Uma mensagem semelhante à seguinte é registada no registo de erros do SQL Server:
(tempdb.dbo.#TableX______________________________000000000011) executado por <domain>\<user> detectou 3 erros e reparou erros 0.

Resolução

Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack

Como contornar

Para contornar este problema, utilize qualquer um dos seguintes métodos:
  • Crie o índice depois de consolidar a transacção.
  • Inserir um valor na tabela depois de criar o índice e antes de fechar a transacção.
  • Inserir um valor na tabela depois de consolidar a transacção e antes de adicionar a restrição.

Ponto Da Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.

Mais Informação

Para reproduzir o problema, execute o seguinte script:
begin tran
create table #TableX (Col1 varchar(20))
insert #TableX values ('A')
insert #TableX values ('B')
insert #TableX values ('C')
create index ix_Col1 on #TableX(Col1)  -- works fine when this is moved after the commit
--insert #TableX values ('D') -- or when this is uncommented
commit

--insert #TableX values ('D') -- or when this is uncommented

alter table #TableX add LastModified datetime not null constraint cn_Enabled default getdate()
go
select * from #TableX
dbcc checktable(#TableX)
go
drop table #TableX
				

Propriedades

Artigo: 286749 - Última revisão: 17 de outubro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB286749 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: 286749

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