Restaurando databases de sistemas
Olá pessoal,
No post de hoje vou demonstrar como fazer o restore das bases de sistemas (master, msdb e model). Geralmente restauramos essas bases quando precisamos migrar o nosso servidor ou precisamos recuperar de algum desastre.
Para iniciar o processo precisamos parar os serviços do SQL Server e do SQL Server Agent no SQL Server Configuration Manager.
Com os serviços parados precisamos agora iniciar o serviço com o modo “Single User”, para isso vamos ter que subir o serviço no Command Prompt.
Para iniciar devemos navegar até o diretório onde esta os arquivos binários do SQL Server, no meu caso está no diretório “C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn”, após isso iniciar o serviço com o comando “sqlservr.exe -c -m -s sql01”.
Para entender as opções de inicialização do SQL Server via Command você pode ver aqui.
Com o serviço iniciado agora vamos conectar na instância utilizando o SQLCMD. Para utilizar o SQLCMD também usaremos o Command Prompt, em uma nova janela.
Após abrir a nova janela basta digitar “SQLCMD – S Nome da Instância” que vai conectar.
Agora vamos fazer o restore da base master.
RESTORE DATABASE master FROM DISK = 'C:\Temp\BKP_Master\master_Dados.bak' WITH REPLACE go
Após isso a sua base de dados master está restaurada, se as outras bases de sistemas estiverem nos mesmo diretórios do servidor original, você não precisa fazer mais nada, somente iniciar o serviço, mas se a estrutura for diferente ocorrerá um erro, no meu caso as estruturas eram diferentes e ao iniciar o serviço do SQL Server ocorreu o seguinte erro:
Para ajustar os diretórios precisamos iniciar o serviço do SQL Server no prompt novamente, porém agora utilizaremos a Trace Flag 3608, para saber mais clique aqui.
“sqlservr.exe -c -s MSQLSERVER /T3608”
Agora precisamos alterar os diretórios das bases msdb, model e tempdb, para isso precisamos conectar no SQLCMD novamente e executar o script de alteração de diretório.
ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev', FILENAME = 'Diretorio_onde_desejar_criar_o_tempdb.mdf') go ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog', FILENAME = 'Diretorio_onde_desejar_criar_o_tempdb.ldf') GO ALTER DATABASE model MODIFY FILE (NAME = 'modeldev', FILENAME = 'Diretorio_onde_esta_as_bases_de_sistema.mdf') go ALTER DATABASE model MODIFY FILE (NAME = 'modellog', FILENAME = 'Diretorio_onde_esta_as_bases_de_sistema.ldf') GO ALTER DATABASE msdb MODIFY FILE (NAME = 'msdbdata', FILENAME = 'Diretorio_onde_esta_as_bases_de_sistema.mdf') go ALTER DATABASE msdb MODIFY FILE (NAME = 'msdblog', FILENAME = 'Diretorio_onde_esta_as_bases_de_sistema.ldf') go
Após isso já podemos iniciar o serviço pelo SQL Server Configuration Manager.
Ao conectar na instância pelo Management Studio, podemos fazer o restore das bases msdb e model, normalmente.
RESTORE DATABASE msdb FROM DISK = 'C:\bak\msdb.bak' WITH REPLACE go RESTORE DATABASE model FROM DISK = 'C:\bak\model.bak' WITH REPLACE go
As bases de sistemas estarão com o status de “Recovery Pending” agora você tem que apenas fazer o restore das bases de usuários, a sua instância já esta com a mesma configuração do seu backup.
Por hoje é isso espero ajudar.
Um abraço.
Tiago Neves