Procurando a maneira mais rápida de restaurar vários bancos de dados em espera do SQL Server que ficaram fora de sincronia.
O servidor A é um servidor de produção, possui 50 bancos de dados configurados com
LSBACKUP
jobs.O servidor B é um servidor em espera, possui 50 bancos de dados em
READONLY/STANDBY
modo de atualizaçãoLSCOPY
eLSRESTORE
trabalhos.
O seguinte erro surge após uma longa manutenção*:
O log neste conjunto de backup começa em LSN 5286000000042100001, que é muito recente para ser aplicado ao banco de dados. Um backup de log anterior que inclui LSN 5286000000039400001 pode ser restaurado.
Obviamente, o LSN necessário não foi encontrado em nenhum lugar, portanto, a maneira de corrigir isso seria fazer um backup completo no banco de dados de produção NORECOVERY
e restaurá-lo no modo de espera e, em seguida, reiniciar as tarefas de restauração.
A questão aqui é fazer isso um por um é um processo longo e tedioso:
Qual é a abordagem mais rápida para resolver esse problema? Não estou procurando tanto uma maneira de fazer os backups mais rápidos do que uma maneira de automatizar o todo.
* Rebaixamos de Enterprise para Standard e, de alguma forma, a cadeia de envio de toras foi interrompida no processo.
Abaixo está a abordagem que eu adotaria:
Se um backup completo NON COPY ONLY não for executado no servidor principal, você poderá seguir o restante
norecovery
.Isso pode ser feito com um script TSQL com um cursor (um loop) e um script VB chamado de dentro do script SQL.
Um excelente exemplo com código-fonte completo está disponível aqui: https://www.mssqltips.com/sqlservertip/1516/automate-restoration-of-log-shipping-databases-for-failover-in-sql-server/