Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mjstudios

Problema com INDEX

Recommended Posts

Pessoal o reindexar (DBCC DBREINDEX ('minhaTabela', '', 80)) uma tabela esta apresentando o seguinte erro:

 

CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1

Most significant primary key is '200'.

The statement has been terminated.

 

Sei que isso foi causado por registro duplicados, mas como posso resolver se não consigo nem listar via select:

 

Attempt to fetch logical page (1:3137264) in database 'DBName' belongs to object 'outraTabela', not to object 'minhaTabela'.

Connection Broken

 

Ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi não consigue nem rodar um select na tabela, é isto ?

 

Um select poderia informar os registros duplicados.

 

O link passado pelo Juliano Ribeuiro não ajudou em nada ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já rodei o DBCC DBCHECK e não resolveu.

 

Acredito que voce nem leu o link que te passei porque o comando é

 

DBCC CHECKDB;

GO

 

=/

 

ou tenta o DBCC CHECKTABLE

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

mjstudios

o checktable retornou algum erro?

você estava fazendo somente o dbcc reindex ou fazendo alguma aplicacao via VS?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

No momento o banco esta em produção, quando o pessoal parar de usar vou rodar esses dois comando e coloco o resultado.

 

Obrigado

 

mjstudios

o checktable retornou algum erro?

você estava fazendo somente o dbcc reindex ou fazendo alguma aplicacao via VS?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apareceu diversas msg vou postar algumas:

 

Table error: Object ID 1463832427, index ID 1. Page (1:3131910) is missing a reference from previous page (1:3137254). Possible chain linkage problem.

Server: Msg 8978, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. Page (1:3132710) is missing a reference from previous page (1:3137253). Possible chain linkage problem.

Server: Msg 8978, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. Page (1:3134431) is missing a reference from previous page (1:3137268). Possible chain linkage problem.

Server: Msg 8935, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. The previous link (1:3144922) on page (1:3135491) does not match the previous page (1:3137271) that the parent (1:3131908), slot 117 expects for this page.

 

Table error: Object ID 1463832427, index ID 1. Page (1:3137249) was not seen in the scan although its parent (1:3131908) and previous (1:3135494) refer to it. Check any previous errors.

Server: Msg 8976, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. Page (1:3137250) was not seen in the scan although its parent (1:3131908) and previous (1:3124748) refer to it. Check any previous errors.

Server: Msg 8976, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. Page (1:3137251) was not seen in the scan although its parent (1:3131908) and previous (1:3136159) refer to it. Check any previous errors.

Server: Msg 8980, Level 16, State 1, Line 3

Table error: Object ID 1463832427, index ID 1. Index node page (1:3131908), slot 115 refers to child page (1:3137252) and previous child (1:3144922), but they were not encountered.

 

Server: Msg 2511, Level 16, State 1, Line 3

Table error: Object ID 1463832427, Index ID 2. Keys out of order on page (1:714619), slots 185 and 186.

Server: Msg 2511, Level 16, State 1, Line 3

Table error: Object ID 1463832427, Index ID 2. Keys out of order on page (1:714619), slots 266 and 267.

There are 15721717 rows in 227335 pages for object 'minhaTabela'.

CHECKTABLE found 0 allocation errors and 89 consistency errors in table 'minhaTabela' (object ID 1463832427).

repair_rebuild is the minimum repair level for the errors found by DBCC CHECKTABLE (DBNAME.dbo.minhaTabela ).

 

Já rodei o DBCC DBCHECK e não resolveu.

 

Acredito que voce nem leu o link que te passei porque o comando é

 

DBCC CHECKDB;

GO

 

=/

 

ou tenta o DBCC CHECKTABLE

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço SqlServer a fundo mas sinto cheiro de restauração de backup ....

 

Já tentou ?

 

[i]Dropar[/i] o [u]índice 
[/u]Rodar um [u]Select [/u] para verificar se não existem duplicados.
 Corrigir se necessário
Recriar o [u]ìndice[/u].

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mjstudios:

 

Se for banco de produção, vai ter que para-lo antes que voce "corrompa" dados e perca o DB.

Quando os índices estão danificados, o melhor caminho é justamente criar um novo backup, exportar as tabelas e realizar a recriação dos índices.

 

Se não for possível, faça :

Backup Full

Destua os indices atuais

Rode o DBCC CHECKDB

Reconstrua seus indices

Rode novamente o DBCC CHECKDB e o CheckTable para checar novamente os indices!

 

Se funcionar, ótimo!

Se o erro persistir, vai ter que fazer o restore e o processo manual!

 

Não é recomendado rodar os comandos DBCC CHECKTABLE, DBCC CHECKDB ou DBCC DBREINDEX para recuperação de dados sem que o arquivo de log esteja ok e o banco esteja no modo SINGLE USER.

Estou supondo que o backup esteja em dia e que seu arquivo de log esteja integro!

 

Em último caso, extremo, última chance, não tem mesmo outro jeito:

 

ALTER DATABASE Banco 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
GO  
USE BANCO  
GO  
DBCC CHECKDB('Banco',REPAIR_REBUILD) WITH NO_INFOMSGS 
GO 
USE MASTER  
GO  
ALTER DATABASE Banco SET MULTI_USER WITH ROLLBACK IMMEDIATE  
GO  

 

Duvidas volte a postar!!

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como faço para reconstruir os indices?

 

@mjstudios:

 

Se for banco de produção, vai ter que para-lo antes que voce "corrompa" dados e perca o DB.

Quando os índices estão danificados, o melhor caminho é justamente criar um novo backup, exportar as tabelas e realizar a recriação dos índices.

 

Se não for possível, faça :

Backup Full

Destua os indices atuais

Rode o DBCC CHECKDB

Reconstrua seus indices

Rode novamente o DBCC CHECKDB e o CheckTable para checar novamente os indices!

 

Se funcionar, ótimo!

Se o erro persistir, vai ter que fazer o restore e o processo manual!

 

Não é recomendado rodar os comandos DBCC CHECKTABLE, DBCC CHECKDB ou DBCC DBREINDEX para recuperação de dados sem que o arquivo de log esteja ok e o banco esteja no modo SINGLE USER.

Estou supondo que o backup esteja em dia e que seu arquivo de log esteja integro!

 

Em último caso, extremo, última chance, não tem mesmo outro jeito:

 

ALTER DATABASE Banco 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
GO  
USE BANCO  
GO  
DBCC CHECKDB('Banco',REPAIR_REBUILD) WITH NO_INFOMSGS 
GO 
USE MASTER  
GO  
ALTER DATABASE Banco SET MULTI_USER WITH ROLLBACK IMMEDIATE  
GO  

 

Duvidas volte a postar!!

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL 2000, você pode me passar uns script para fazer isso?

 

Obrigado

 

Por linha de comando ou voce salva um script com todos os indices.

Qual a sua versão do SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, não consigo excluir nem recriar o index pk da tabela que esta com problema.

 

Help, o banco esta lento e o pessoal esta reclamando!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem drop index com banco em modo exclusivo ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo em modo single user apresenta esse erro:

 

Server: Msg 3723, Level 16, State 4, Line 1

An explicit DROP INDEX is not allowed on index 'minhaTabela.TAB_PK'. It is being used for PRIMARY KEY constraint enforcement.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dropa as Fk´s

Dropa a PK

--

Verifica se as fk´s podem ser recriados

Verifica se a pk pode ser recriada

--

Recria a PK

Recria o incide

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.