Preciso transferir o banco de dados (como um todo) para outro servidor, para criar um banco de dados duplicado para configurar outro ambiente de teste.
Eu tenho duas escolhas:
- Faça um backup completo no servidor de origem / restaure no servidor de destino;
- Desconecte no servidor de origem / anexe no servidor de destino.
Quais são os prós e os contras das duas soluções de acordo com meus requisitos?
Estou usando o SQL Server 2008 Enterprise.
fonte
Se você decidir fazer backup / restauração, use a opção WITH COPY_ONLY durante o backup para garantir que a cadeia de backup de qualquer plano de manutenção existente não seja interrompida.
Um arquivo .bak é compactado bem; portanto, se você decidir fazer um backup, compactá-lo antes de movê-lo pode economizar tempo de transferência.
fonte
Eu iria para backup / restauração, pois deixa o banco de dados original em um estado operacional.
Especialmente se você estiver fazendo uma conversão de 'produção para testar', é importante que o banco de dados de produção permaneça online.
O backup / restauração também é uma opção mais segura : o que acontece se o arquivo for corrompido em algum lugar entre o início da desanexação, a cópia, a anexação etc.? Pelo menos, se você executar um backup e o arquivo ficar corrompido, poderá começar de novo. Se isso acontecer com uma desanexação, seu banco de dados desaparecerá.
Além disso, para mim (embora seja mais uma sensação do que qualquer outra coisa), o backup / restauração é "trabalho diário", enquanto que desanexar / anexar é algo que você faz em circunstâncias excepcionais. Não me pergunte onde eu tirei essa ideia ;-)
fonte
Eu sempre tive problemas com a parte "restauração" do backup / restauração. Não posso citar detalhes, pois acabei desistindo e, desde então, tenho destacado / copiado / anexado.
A única coisa sobre a desanexação é que você PRECISA ter certeza de que o DBMS também não excluirá o banco de dados também. Isso já aconteceu, e não é uma visão bonita.
fonte
Eu recomendo um
copy_only
backup usando este método a partir de um shell do DOS (para que você não interrompa os logs de transações) :Execute a partir do
C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup
diretório:Onde
backup.bat
contém (quebra de linha adicionada para facilitar a leitura) :fonte