Estou criando um procedimento armazenado para nosso departamento de controle de qualidade que fará o seguinte: aceitar entradas específicas para gerar um nome consistente, restaurar um banco de dados (dando a ele o nome gerado), configurar o banco de dados para replicação (três publicações de mesclagem) e, em seguida, inicializar os instantâneos dessas três publicações.
Não se preocupe com a parte de replicação disso, já cuidei disso até agora. O que me pergunto é:
Qual será o método mais eficaz/eficiente de restaurar o banco de dados? Será a restauração de um backup (os 2 bancos de dados dos quais eles serão restaurados são 1,5 gb e 599 mb) ou seria de outra maneira? Se não for dos arquivos .bak, que outra forma de restauração você acha que seria apropriada?
:: Isso precisa acontecer, estritamente, com TSQL ::
Obrigado, Wes
A única maneira de realmente fazer backup de um banco de dados é criar um backup do banco de dados (usando BACKUP DATABASE). Todos os outros métodos (script de esquema e conteúdo do banco de dados, cópia de arquivos, instantâneos de arquivos do sistema operacional) são soluções alternativas, não backups de banco de dados.
Então, a meu ver, a melhor maneira de copiar um banco de dados de um lugar para outro é restaurá-lo a partir de um backup (RESTORE DATABASE). Não há outra maneira eficaz e mais eficiente a meu ver. Esses são meus 2 centavos, de qualquer maneira.
Agora, para fazer toda essa preparação, eu criaria procedimentos armazenados diferentes (usando sql dinâmico para criar nomes próprios, caminhos etc.) que irão:
PS: se for possível, certifique-se de ativar a compactação de backup, pois isso ajudará muito no tamanho e na velocidade.
PS2: levando em consideração o tamanho dos arquivos de backup, não me preocuparia muito com a duração da operação. Deve ser rápido mesmo em uma caixa de desenvolvedor comum.