Bloqueio entre rotinas de Backup
Apareceu uma dúvida simples hoje, mas não conhecia a resposta:
Quais os tipos de Backup que podem ser executados simultaneamente no SQL 2008? (Ex: posso executar um Backup Diferencial junto com um Backup Log?)
Para descobrir a resposta, levantamos os Locks adquiridos por cada um dos comandos:
- Backup Full
- Backup File
- Backup FileGroup
- Backup Log
Todos as sessões que utilizam o comando BACKUP DATABASE (Full, File, FileGroup) obtém um Lock BULKOP_BACKUP_DB no modo UPDATE. Somente o comando de BACKUP LOG adquire um Lock BULKOP_BACKUP_LOG no modo UPDATE.
Exemplo:
- SPID 52: Backup Full (BACKUP DATABASE db00 TO DISK=…)
- SPID 53: Backup File (BACKUP DATABASE db00 FILE=’primary’ TO DISK=…)
- SPID 55: Backup Full (BACKUP DATABASE db00 TO DISK=…)
- SPID 57: Backup Log (BACKUP LOG db00 TO DISK='…)
A conclusão é que as sessões 52 e 53, correspondente a dos comando de BACKUP DATABASE, ficaram bloqueadas pela sessão 55 durante a realização de um Backup Full. O backup de Log foi realizado de forma concorrente sem problema de bloqueios.
Conclusão: Backup Database não bloqueia o Backup Log, nem vice-versa.