Estou tentando ver se é uma abordagem segura e eficiente se eu executar uma linha múltipla de comando SQL para restaurar vários arquivos de log (total 24) de uma só vez.
Esses arquivos são formatados no formato de arquivo bak , mas são todos arquivos de log transacionais de hora em hora.
Eu tenho essas instruções SQL para executar todas juntas:
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051800.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051801.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051802.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051803.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051804.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051805.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051806.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051807.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051808.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051809.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051810.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051811.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051812.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051813.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051814.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051815.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051816.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051817.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051818.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051819.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051820.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051821.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051822.bak' WITH NORECOVERY
RESTORE LOG [LOG_us_bcan_multi_replica] FROM DISK = 'F:\LOG_us_bcan_multi_replica_2021051823.bak' WITH NORECOVERY
Abaixo está a captura de tela de cada arquivo e seu tamanho:
Como o tamanho de cada arquivo pode ser muito grande em um ponto (por exemplo: " .._ 2021051804.bak " arquivo é muito maior do que outros, não tenho certeza se executar toda a instrução SQL de uma só vez é uma boa abordagem.
Ou devo dividir todo esse processo em etapas de trabalho separadas do SQL Server Agent?
Não tenho certeza de como o SQL se comporta quando toda essa instrução SQL é executada de uma só vez.
Ele é executado um por um a partir do topo (para até que um seja concluído e depois vai para a próxima linha) e não pularia nenhum processo ao longo da linha (se um processo demorar mais que o outro)?
Sua abordagem está correta.
O SQL Server executa cada instrução dentro do lote até a conclusão antes de iniciar o próximo.
A última restauração na sequência deve especificar
STANDBY
se você deseja que o banco de dados resultante seja legível, com a opção de aplicar mais logs no futuro..bak
não é um formato de arquivo, é uma extensão de arquivo comum do Windows. O SQL Server não se importa com isso. Pessoas diferentes usam convenções diferentes. Um popular é.bak
para um backup completo e.trn
para logs de transações, mas é apenas uma convenção.