locked
Ajuda em Restauração de Backup RRS feed

  • 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.com

    Simulado 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
    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.com

    Simulado 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
    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