Após implementar o recurso de envio de e-mails com os erros de backup do SQL Server, notei que o backup diferencial não estava sendo executado, apresentando o seguinte erro:
Cannot perform a differential backup for database “MyDatabase”, because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option. [SQLSTATE 42000] (Error 3035) BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013). The step failed.
No histórico dos jobs, nenhuma referência a um backup full com falha.
Porém a seguinte consulta começou a me dar o caminho das pedras:
1 2 3 4 |
SELECT name, backup_start_date, type, first_lsn, database_backup_lsn FROM msdb.dbo.backupset WHERE database_name = 'MinhaBase' order by backup_start_date |
Eis que me aparece o seguinte:
name type first_lsn database_backup_lsn
———————— —- ———————- ———————
Backup FULL Semana 17 D 21353000001562600132 21353000001554000043
NULL D 21353000001572500134 21353000001562600132
Backup Log1 Semana 17 L 21353000001557200001 21353000001572500134
Backup Log2 Semana 17 L 21353000001579000001 21353000001572500134
Vejam a linha em vermelho… Eu suprimi a coluna backup_start_date, para facilitar a visualização, porém o horário era justamente no horário em que executamos neste servidor um backup dos arquivos que estão nele.
Esse backup é realizado pelo software Cobian Backup, e uma das tasks agendadas fazem uso da opção Volume Shadow Copy para permitir que a cópia do arquivo seja realizada mesmo que o arquivo esteja em uso (e não, não é nenhum arquivo do SQL Server que estava sendo copiado).
Porém, o problema é que o VSS (Volume Shadow Copy Service) chama o SQLWriter (sim, mesmo que não seja uma cópia dos arquivos do SQL Server!!) , que é o responsável por “avisar” que uma cópia está sendo realizada e então um registro é inserido na tabela backupset. E isso quebra com a cadeia de backups.
Após desmarcar a opção para utilização de Volume Shadow Copy, o backup diferencial ocorreu normalmente.
Moral da história:
Se você usa uma ferramenta de backup que possua o recurso de Volume Shadow Copy Service (VSS) no seu servidor onde está o banco de dados, desabilite o recurso, ou garanta que no momento da backup, nenhum dos recursos do SQL Server esteja sendo utilizado.
Fontes:
[…] SQL Server + Volume Shadow Copy = Sem backup diferencial […]
Legal o post. Acabei de passar por uma situação parecida (outra ferramenta, não Cobian). Informação bem útil, me poupou um bom tempo. []’s