如何对SQL Server数据库备份文件进行完整性测试?

Ric*_*icj 2 sql-server backup data-integrity

我被指派每两周检查一次来自 sql server 的数据库备份的完整性。我是这个领域的新手,所以我不知道如何正确地完成这项任务。如果有人(黑客)修改了数据库备份里面的数据,这是否是文件完整性的一部分?有没有办法检查它?

Sco*_*red 5

有句老话...

验证备份良好/可用的唯一方法是还原它。重复——直到你恢复它,你才知道你有一个好的备份!

我强烈建议您比每两周更频繁地检查您的备份——至少每周一次,最好比这更频繁。

在我的商店,我们有一个“播放”服务器,我们用它来自动恢复我们认为“重要”的数据库的最新 FULL/DIFF。我们使用 Windows 任务计划程序来启动一个包含多个 SQLCMD 步骤的 bat 文件。成功恢复后,我们运行完整的 DBCC CHECKDB WITH ALL_ERRORMSGS,NO_INFOMSGS 并将结果输出到 txt 文件。然后我们将输出的 txt 文件通过电子邮件发送到数据库组进行评估。

这个过程测试两件事

  1. 我可以恢复我的备份吗?
  2. 备份中的数据是否结构完整 (DBCC)

以下是我们的 bat 文件中的一些示例步骤

SQLCMD -S Localhost -Q "IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'<YourDatabase>') DROP DATABASE [<YourDatabase>]" -E -b -d master

SQLCMD -S Localhost -Q "EXEC SCUTILITY.dbo.RestoreProdForDBCC" -E -b -d SCUTILITY 

SQLCMD -S Localhost -Q "print 'Starting DBCC ' + convert(char,getdate(),121);dbcc checkdb ('<YourDatabase>') WITH ALL_ERRORMSGS,NO_INFOMSGS;print 'Completed DBCC ' + convert(char,getdate(),121)" -E -b -d master -o "F:\DBCC\dbcc_output.txt"

SQLCMD -S Localhost -Q "EXEC msdb.dbo.sp_send_dbmail @profile_name='SqlServerEmailProfile', @recipients='<DatabaseTeam>', @subject='DBCC has completed!', @file_attachments='F:\DBCC\dbcc_output.txt';" -E -b -d msdb
Run Code Online (Sandbox Code Playgroud)

查看这些优秀的帖子,了解有关数据库完整性检查的更多信息:

DBCC CHECKDB / 数据库完整性

从各个角度检查数据库