Pessoal, estou re-publicando na integra o script do Nilton Pinheiro, do site www.mcdbabrasil.com.br, com um passo a passo de recuperação bancos suspects no Microsoft SQL Server 2000. Publiquei um artigo mostrando como fazer isso no 2005, mas o mesmo script não funciona no SQL SERVER 2000. Atenção a todos os passos e aos comentários do código. Este script, assim como todo o blog, é apresentado sob uma licença “AS IS”, sem garantia nenhuma. Políticas racionais de backup com certeza são sempre a melhor maneira de assegurar a integridade e segurança dos seus dados.
/****************************************************************************
Descrição: Este scripts utiliza o DBCC não documentado DBCC REBUILD_LOG
para "TENTAR" recuperar um banco em SUSPECT ou que esteja sem o arquivo .LOG
Ou seja,você tem apenas o arquivo .mdf.
Criado por: NILTON PINHEIRO
HomePage : www.mcdbabrasil.com.br
Como Executar : Colocar o script no Query Analyzer e executar passo-a-passo
Selecione o passo 1 e execute, depois selecione o passo 2 e execute e assim
sucessivamente.
OBS: Altere "MyDatabase" pelo nome do banco a ser recuperado.
--ORIENTAÇÕES ANTES DE INICIAR
--Caso o seu banco já estava no SQL Server e voltou com o status de SUSPECT siga para o PASSO 1
-- Caso você possua apenas o arquivo .mdf que pode por exmplo ter vindo de outro servidor, siga estes passos:
-- 1)Crie um banco no SQL Server, tendo o arquivo de dados (Data file) o mesmo tamanho que o seu arquivo .mdf
-- Ex: Para um arquivo MyDatabase.mdf, crie o banco MyDatabase.
-- 2)Efetue um STOP nos serviços do SQL Server
-- 3)Localize os arquivos .mdf e .ldf do banco criado no ítem 1
-- 4)Renomeie o arquivo .ldf para .old e substitua o arquivo .mdf criado pelo seu arquivo .mdf
-- ELES PRECISAM TER O MESMO NOME
-- 5)Reinicie os serviços do SQL Server. Isto fará com que a base volte com o status SUSPECT,
-- a partir deste ponto, siga para o PASSO 1 abaixo.
-- PASSO 1: Coloca o banco em Emergency Mode. O Status atual provavelmente será --SUSPECT !*****************************************************************************/
USE MASTER
GO
EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO
BEGIN TRAN
-- Altera o Status da base para Emergency mode
UPDATE master..sysdatabases SET status = status | 32768 WHERE name = 'MyDatabase'
IF @@ROWCOUNT = 1
BEGIN
COMMIT TRAN
RAISERROR('emergency mode set', 0, 1)
END
ELSE
BEGIN
ROLLBACK
RAISERROR('unable to set emergency mode', 16, 1)
END
GO
EXEC sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE
GO
-- Fim do PASSO 1
-- PASSO 2: TENTA reconstruir o log para o banco. Pode ser preciso reiniciar o SQL Server.
dbcc traceon(3604)
DBCC REBUILD_LOG('MyDatabase')
-- PASSO 2.1
-- Se der erro no comando acima informando que já existe um arquivo de log para o banco,
-- execute o comando abaixo informando um caminho para o arquivo de log. APENAS SE DER ESTE ERRO !!!
dbcc traceon(3604)
DBCC REBUILD_LOG('MyDatabase','C:\MyDatabase.ldf')
---- Fim do PASSO 2
-- PASSO 3: Execute uma checagem de integridade neste ponto.
DBCC CHECKDB ('MyDatabase')
---- Fim do PASSO 3
-- PASSO 4: Coloca o banco Operacional. (Isto é claro, caso tenha sido recuperado com sucesso.)
ALTER DATABASE MyDatabase SET MULTI_USER
GO
--- Fim do PASSO 4
Até a próxima!!
Nenhum comentário:
Postar um comentário
Leave your comment here!