Array
(
)

Excluir registro da tabela

Dgsfilho
   - 28 ago 2008

Quando tento excluir um registro de uma das tabelas da minha base de dados o registro não é excluído e me retorna a seguinte mensagem:

DELETE from exame
where codset=´04´ and dateate=´2008-07-14´ and ordate=´029´

#Código

Msg 823, Level 24, State 2, Line 1
The operating system returned error 38(Final do arquivo alcançado.) to SQL Server during a read at offset 0x0000044a952000 in file ´C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\BANCODADOS.mdf´. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.


Rodei o comando: DBCC CHECKDB(´ROENTGENM´)

E me retornou o seguinte:

DBCC results for ´Exame´.
Msg 8935, Level 16, State 1, Line 1
Table error: Object ID 789577851, index ID 1, partition ID 333220750753792, alloc unit ID 51745774043136 (type In-row data). The previous link (1:152745) on page (1:152319) does not match the previous page (1:2249897) that the parent (1:86973), slot 88 expects for this page.
Msg 8977, Level 16, State 1, Line 1
Table error: Object ID 789577851, index ID 1, partition ID 333220750753792, alloc unit ID 51745774043136 (type In-row data). Parent node for page (1:152745) was not encountered.
Msg 8980, Level 16, State 1, Line 1
Table error: Object ID 789577851, index ID 1, partition ID 333220750753792, alloc unit ID 333220750753792 (type In-row data). Index node page (1:86973), slot 87 refers to child page (1:2249897) and previous child (1:152083), but they were not encountered.
There are 341856 rows in 21793 pages for object ´Exame´.
CHECKDB found 0 allocation errors and 3 consistency errors in table ´Exame´ (object ID 789577851).

Detalhe: A versão do SQLServer era a 2000, fiz um BKP e restaurei numa versão 2005 em outro computador para ver se conseguia excluir o registro e mesmo assim não funcionou.

Alguém já passou por algo parecido e poderia me ajudar?

Patule
   - 18 out 2008

Caro colega você está com algum tipo de problema de estrutura no banco de dados.
Para resolver isso use o comando:

DBCC Checkdb REPAIR_REBUILD
ou
DBCC Checkdb Repair_allow_data_loss

Informações em:
http://msdn.microsoft.com/pt-br/library/ms174338.aspx

Use as opções REPAIR apenas como um último recurso. Para reparar erros, recomendamos restaurar de um backup. Operações de reparo não consideram nenhuma das restrições que possam existir em tabelas ou entre tabelas. Se a tabela especificada estiver envolvida em uma ou mais restrições, recomendamos executar DBCC CHECKCONSTRAINTS após uma operação de reparo. Se for necessário usar REPAIR, execute DBCC CHECKTABLE sem uma opção de reparo para localizar o nível de reparo a ser usado. Se você pretende usar o nível de REPAIR_ALLOW_DATA_LOSS, recomendamos fazer backup do banco de dados antes de executar DBCC CHECKTABLE com essa opção.