Usuário com melhor resposta
Ajuda em Restauração de Backup

Pergunta
-
Ae pessoal, estou desenvolvendo uma gerencia de backups de uma aplicação asp.net/c#.
Criei uma interface para criação e restauração de backups.
Ja estou gerando os backup .bak corretamente, mas na hora de restaurar estou tendo uma dificuldade.
Estou usando o comando: Restore Database NomeBase From Disk = 'CAMINHO DO BACKUP'.
Estou tendo o seguinte erro: RESTORE cannot process database 'NomeBase' because it is in use by this session.
Como eu faria para restaurar o backup se ele reclama que o banco esta em uso?
Muito obrigado
- Movido Gustavo Maia Aguiar quinta-feira, 6 de maio de 2010 13:34 (De:SQL Server - Desenvolvimento Geral)
quinta-feira, 6 de maio de 2010 13:20
Respostas
-
Bom Dia,
Você terá que conectar-se no banco MASTER, matar todos os processos na base 'NomeBase' e prosseguir com o RESTORE. Para matar todas as conexões, um jeito rápido é com os comandos abaixo:
ALTER DATABASE NomeBase SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE NomeBase SET MULTI_USER WITH ROLLBACK IMMEDIATE GO
Se você conectar na base diretamente não haverá como fazer, pois, não há como matar sua própria sessão.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comSimulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 01
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1018.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar quinta-feira, 6 de maio de 2010 13:34
- Marcado como Resposta João Fontana quinta-feira, 6 de maio de 2010 14:27
quinta-feira, 6 de maio de 2010 13:34
Todas as Respostas
-
Bom Dia,
Você terá que conectar-se no banco MASTER, matar todos os processos na base 'NomeBase' e prosseguir com o RESTORE. Para matar todas as conexões, um jeito rápido é com os comandos abaixo:
ALTER DATABASE NomeBase SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE NomeBase SET MULTI_USER WITH ROLLBACK IMMEDIATE GO
Se você conectar na base diretamente não haverá como fazer, pois, não há como matar sua própria sessão.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comSimulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 01
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1018.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar quinta-feira, 6 de maio de 2010 13:34
- Marcado como Resposta João Fontana quinta-feira, 6 de maio de 2010 14:27
quinta-feira, 6 de maio de 2010 13:34 -
Se precisar, pode utilizar um fluxo conforme criei abaixo:
--1º Verificar se o arquivo de Backup está funcionando:
RESTORE VERIFYONLY FROM DISK = 'Colocar o Caminho do arquivo';
--2º Verificar os caminhos físicos do arquivo de Backup:
RESTORE FILELISTONLY FROM DISK = 'Colocar o Caminho do arquivo';
--3º Colocar a base que será restaurada em Single User:
ALTER DATABASE nome_da_base SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
--4º VAMOS COMEÇAR O RESTORE:
RESTORE DATABASE nome_da_base FROM DISK = 'Colocar o Caminho do arquivo' WITH REPLACE, STATS = 10,
MOVE 'Colocar o nome Lógico' TO 'Colocar o Caminho do arquivo físico.mdf',
MOVE 'Colocar o nome Lógico' TO 'Colocar o Caminho do arquivo físico.LDF'
ALTER DATABASE nome_da_base SET MULTI_USER;
--5º Ajustar o Owner (Proprietário) da base
USE nome_da_base
GO
SP_CHANGEDBOWNER 'nome_da_base';
--6º Verificar se o Owner foi ajustado e o tamanho da base:
SP_HELPDB nome_da_base_______________________________________________________________________________
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Felipe Mazaia
Microsoft MTA
Blog: http://sqlnapratica.com.br
Atenção, se seu problema foi resolvido não deixe o post aberto- Editado Felipe Mazaia quarta-feira, 30 de novembro de 2016 21:54
quarta-feira, 30 de novembro de 2016 21:53