Geralmente, quando iniciamos o backup, não permitimos que alterações sejam confirmadas ou o banco de dados não estará acessível. Quero dizer, o banco de dados estará no modo de usuário único, mas quero iniciar o backup e liberar o banco de dados para uso. Além disso, depois de iniciar o backup, não quero que as alterações em andamento sejam gravadas no arquivo de backup. Quero saber como conseguir isso no Microsoft SQL Server 2012.Por favor, me ajude.
Bem, deixe-me explicar meu problema primeiro. Atualmente, estou configurando o banco de dados para o modo de usuário único até que o backup seja concluído. Este modo servirá ao meu objetivo de evitar as alterações de dados quando o backup estiver em andamento. Mas meu aplicativo está vinculado aos vários bancos de dados (cada banco de dados está interligado e há var dbs que continua criando mensalmente). Portanto, o backup de todos esses bancos de dados se tornou um processo tedioso e, mais importante, eu tenho que manter os usuários fora do sistema quando o backup estiver em andamento.
Então, eu estou procurando um mecanismo de backup que atenda aos requisitos mencionados abaixo.
- Inicie o backup de todos os dbs de cada vez e libere o db para uso.
- Como os bancos de dados estão interligados, desejo manter a consistência dos dados nos arquivos de backup. Portanto, devido a esse requisito de consistência de dados, não quero que as alterações sejam confirmadas no meu arquivo de backup.
Tudo o que eu quero é - backup de todos os dbs em um determinado momento.
fonte
Respostas:
Estou assumindo que sua tarefa é criar um conjunto de backups em que você possa restaurar todos eles em um único ponto estático (sem transações abertas) (tudo em sincronia). Semelhante ao que um ponto de inatividade fará por você no DB2. Infelizmente, não há nada no SQL Server que faça exatamente isso. No entanto, supondo que seus bancos de dados estejam no modo de recuperação COMPLETO, você pode fazer algo semelhante.
Você pode criar uma única
MARKED
transação em todos os bancos de dados de uma só vez . Em seguida, você faz um backup do log de transações de cada banco de dados. Supondo que você esteja acompanhando seus backups de log (o que você deve fazer de qualquer maneira), os backups de log não demoram muito tempo. E não há necessidade de impedir que alguém esteja no sistema (exceto talvez o tempo suficiente para você criar sua transação marcada).Nesse ponto, se você precisar fazer uma restauração, faça um
RESTORE STOPBEFOREMARK
em cada um dos seus bancos de dados. Isso restaurará todos os bancos de dados no mesmo ponto (com base na sua transação). Nota: Também há um STOPATMARK se você deseja incluir essa transação.Se você quiser um exemplo, eu tenho um no link acima, juntamente com um pouco de leitura adicional.
Sei que isso não responde exatamente à sua pergunta, mas espero que resolva o seu problema.
fonte
Sua pergunta é semelhante à que eu respondi - Fazendo backup e restaurando 10-20 bancos de dados do SQL Server em um estado ~ síncrono?
Supondo que seu modelo de recuperação de banco de dados seja COMPLETO, faça um backup completo e use Transações marcadas .
Permite desmascarar seus mitos ...
Dos mitos de backup (recomendo que você leia todos os mitos de backup) :
Transações marcadas o ajudarão a fazer backup consistente do LOG e você poderá restaurá- las usando
RESTORE ... WITH STOPBEFOREMARK = '<mark_name>'
Lembre-se de que as transações marcadas para todos os bancos de dados na instância também são registradas na
dbo.logmarkhistory
tabela noMSDB
banco de dados.fonte
para obter mais detalhes: https://blogs.technet.microsoft.com/letsdothis/2013/11/06/backup-multiple-sql-databases-in-a-single-swoop/
fonte