Obtendo dados de um banco de dados Suspect

3

Tivemos uma queda de energia e um dos bancos de dados do SQL 2000 está marcado como suspeito. Temos um backup, mas ele tem mais de um dia (a queda de energia aconteceu pouco antes do agendamento do backup) e preferimos não perder o valor dos dados nesse dia.

Existe uma maneira de restaurar o banco de dados e, em seguida, copiar os dados ausentes das tabelas de banco de dados suspeitas?

    
por AndyD273 17.05.2011 / 16:48

1 resposta

2

Vou começar dizendo que uma vez que um DB é marcado como "suspeito", você está em um lugar muito ruim - há uma boa chance de haver alguma perda de dados, não importa como você se recupere disso.

Dito isto, você deve ser capaz de colocar o banco de dados no modo de emergência e iniciar seu processo de reparo (checkdb) a partir dele. link tem mais detalhes voltados em relação ao SQL Server 2005, mas acredito que também funcionarão em 2000 (comandos reproduzidos abaixo para a posteridade).

--- Find out why the DB is marked suspect
DBCC CHECKDB (‘YourDBname’) WITH NO_INFOMSGS, ALL_ERRORMSGS

--- Reset the DB to Emergency Mode
EXEC sp_resetstatus ‘yourDBname’;
ALTER DATABASE yourDBname SET EMERGENCY

--- Initial checkdb to get things working
DBCC checkdb(‘yourDBname’)

--- Single-User Mode & "Dangerous" repair (possibility of data loss!)
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (‘yourDBname’, REPAIR_ALLOW_DATA_LOSS)

--- Make the DB usable again
ALTER DATABASE yourDBname SET MULTI_USER

Ao concluir seu reparo (ou melhor, antes de iniciar), você deve fazer com que seu chefe atinja um UPS para o servidor de banco de dados. Geralmente é mais fácil sacudir a árvore do dinheiro com a ameaça de perda de dados pairando sobre a cabeça das pessoas.

    
por 17.05.2011 / 17:27

Tags