none
Criar JOB de Restauração Base - Agendar Semanalmente RRS feed

Respostas

  • Odair,

          Usando o comando abaixo você pode implementar a restauração na sua Maquina 2 atraves de um job. 

          RESTORE DATABASE BaseTeste
       FROM DISK='d:\banco\base.bak'
       WITH RECOVERY,  REPLACE,
          MOVE 'NomeLogico_Data' TO
    'D:\banco\BancoTeste.mdf',
          MOVE 'NomeLogico_Log'
    TO 'D:\banco\BancoTeste.ldf'

          Apesar de que a melhor pratica para o seu cenário seria o uso do Database Snapshot, porém, para isso, seu SQL tem que ser Enterprise Edition e o Snapshot deve existir no mesmo servidor da base real.

    MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008
    • Marcado como Resposta Odair Souza sexta-feira, 17 de julho de 2009 20:01
    quinta-feira, 16 de julho de 2009 17:44
    Moderador
  • Bom dia, Roberto.
    Existe diferença nos comandos para crianção no SQL 2000 e no SQL2008.
    Tentei criá-lo no SQL 2000 e apresentou o seguinte erro ao executar o job.

    The job failed.  The Job was invoked by User MICRO20\Odair.  The last step to run was step 1 (Restaura). Se executo pelo QA apresenta o seguinte erro: Server: Msg 3101, Level 16, State 1, Line 1 Exclusive access could not be obtained because the database is in use. Server: Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally.
    • Editado Odair Souza sexta-feira, 17 de julho de 2009 10:48
    • Marcado como Resposta Odair Souza sexta-feira, 17 de julho de 2009 20:01
    sexta-feira, 17 de julho de 2009 10:31

Todas as Respostas

  • Odair,

         Você pode especificar melhor a sua necessidade? Restaurar um backup agendado num job é fácil, basta você criar um job step com o comando abaixo. O que você tem que ter em mente é que ao restaurar o backup você ira perder tudo o que tem na base que foi inserido durante a semana....

         RESTORE DATABASE MinhaBase From <device> ou <Disk =  'Localização do backup'> WITH REPLACE ( o with replace para sobrepor sua base existente)
    MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008
    quinta-feira, 16 de julho de 2009 14:39
    Moderador
  • Primeiramente, obrigado pela atenção.
    Amigo Roberto. Diariamente realizo a restauração da base de dados na minha Estação de Trabalho, para efetuar testes e manipulação dos dados.
    Gostaria de automatizar isso.

    Exemplo:
    Maquina 1 = Base Real   - pasta de armazenamento - d:\banco\base.bak
    Maquina 2 = Base teste - pasta de armazenamento - d:\Banco\

    Tenho um bat que efetua a copia bak de uma maquina para outra.

    quinta-feira, 16 de julho de 2009 17:08
  • Odair,

          Usando o comando abaixo você pode implementar a restauração na sua Maquina 2 atraves de um job. 

          RESTORE DATABASE BaseTeste
       FROM DISK='d:\banco\base.bak'
       WITH RECOVERY,  REPLACE,
          MOVE 'NomeLogico_Data' TO
    'D:\banco\BancoTeste.mdf',
          MOVE 'NomeLogico_Log'
    TO 'D:\banco\BancoTeste.ldf'

          Apesar de que a melhor pratica para o seu cenário seria o uso do Database Snapshot, porém, para isso, seu SQL tem que ser Enterprise Edition e o Snapshot deve existir no mesmo servidor da base real.

    MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008
    • Marcado como Resposta Odair Souza sexta-feira, 17 de julho de 2009 20:01
    quinta-feira, 16 de julho de 2009 17:44
    Moderador
  • Boa Noite,

    Esse tópico está sendo movido. Ele não está relacionado a "SQL Server - Desenvolvimento"

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Pivoteando, Despivoteando, Transpondo, Invertendo Colunas e Linhas no SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!629.entry


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 16 de julho de 2009 22:16
  • Bom dia, Roberto.
    Existe diferença nos comandos para crianção no SQL 2000 e no SQL2008.
    Tentei criá-lo no SQL 2000 e apresentou o seguinte erro ao executar o job.

    The job failed.  The Job was invoked by User MICRO20\Odair.  The last step to run was step 1 (Restaura). Se executo pelo QA apresenta o seguinte erro: Server: Msg 3101, Level 16, State 1, Line 1 Exclusive access could not be obtained because the database is in use. Server: Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally.
    • Editado Odair Souza sexta-feira, 17 de julho de 2009 10:48
    • Marcado como Resposta Odair Souza sexta-feira, 17 de julho de 2009 20:01
    sexta-feira, 17 de julho de 2009 10:31
  • Olá,

    Conforme a mensagem "Exclusive access could not be obtained because the database is in use". Seu database está sendo usado. Você pode fazer o seguinte:

    use master;
    GO
    alter database seuDb set single_user with rollback immediate
    
    --execute seus comandos de restore
    
    Abraços
    Demétrio Silva
    sexta-feira, 17 de julho de 2009 12:12
  • Obrigado, amigo Demétrio.
    era o que faltava.
    Deu certo.
    Você que tem mais experiência é possível determinar a pasta do BAK e o SQL pegar o ultimo arquivo para Restaurar?
    • Editado Odair Souza sexta-feira, 17 de julho de 2009 20:04
    sexta-feira, 17 de julho de 2009 20:01
  • Por nada Odair,

    Se nossas dicas ajudaram, por favor, classifique as respostas.

    Abraços
    Demétrio Silva
    • Sugerido como Resposta Demétrio Silva sexta-feira, 17 de julho de 2009 20:07
    sexta-feira, 17 de julho de 2009 20:03
  • Obrigado, amigo Demétrio.
    era o que faltava.
    Deu certo.
    Você que tem mais experiência é possível determinar a pasta do BAK e o SQL pegar o ultimo arquivo para Restaurar?

    É simples Odair, voce disse que utiliza um bat para copiar, pois bem faz um bat na maquina2 para renomear o arquivo .bak
    e agenda para depois da copia.

    Espero ter ajudado.
    quinta-feira, 3 de dezembro de 2009 05:08