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:

image

  • 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.