只是想知道是否有人可以告诉我一个从 MS SQL 2005 实例设置到任何位置的每日增量和完整备份的良好程序。
任何能够描述如何在没有服务器代理(对于 Express)的情况下执行此操作的人都可以获得加分。
答案1
- 规划恢复策略。您需要考虑如何恢复数据库。您可以停机多长时间?您需要循环执行多少次备份才能完成恢复。这将决定完整备份、差异备份甚至事务日志备份的正确组合。
- 规划好恢复策略后,将其列在时间表上,以确保其合理。这还允许您检查备份的间隔时间。
- 确定每个备份步骤的基本 T-SQL 命令。您应该写入本地磁盘(或显示为本地磁盘的 SAN 连接存储),因为这是进行备份的最快方法,并且可以防止网络问题导致备份本身失败。您正在查看备份数据库和可能的备份日志这里。
- 确定如何将备份从系统转移到另一个存储介质。您要复制到网络共享吗?还是直接备份到磁带?这些备份将在该位置保留多长时间?这些问题将决定您的命名约定以及您可能需要执行的其他机制。
- 编写脚本。如果您使用的是无代理系统,则可以使用任务计划程序,但当它失败时您不会收到电子邮件通知,这意味着需要有人定期检查。但由于我们讨论的是 SQL Server 2005,您可以使用SQL命令执行 T-SQL 命令来创建备份。
- 如果您只是从该系统备份到磁带,那么可能剩下的就是编写调用 SQLCMD 和 T-SQL 命令的批处理文件。如果您需要复制文件,则需要添加适当的复制命令。如果您需要做一些更花哨的事情,例如以特定方式命名备份文件,则可能需要使用一些脚本(如 VBScript)来生成正确的命令。在这种情况下,我所做的是使用 VBScript 创建我将在下一个执行的批处理文件。您可以从 VBScript 建立 ADO 连接并以此方式执行备份命令,但我倾向于使用批处理文件方法,因为这样我就可以准确地看到执行的内容。
答案2
还有几点需要补充:
- 确保在备份中使用 WITH CHECKSUM 选项。它会在读取数据文件页面时测试校验和,以确保备份没有损坏。它还会计算整个备份的校验和,您可以在以下情况下使用它……
- 定期恢复备份以确保其有效。至少运行 RESTORE VERIFYONLY ... WITH CHECKSUM,它基本上会执行除将位放回磁盘之外的所有操作,包括重新测试所有校验和。最好的办法是在另一个系统上实际恢复它们。
- 练习从灾难中恢复 - 这就是您首先进行备份的原因。确保您进行的备份允许您恢复到您的 RTO 和 RPO。
几篇博客文章提供了更多信息来扩展大家所说的内容:http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-validating-backups.aspx和http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-having-the-right-backups.aspx
干杯
答案3
答案4
以下免费的 SQL Server 视频也将帮助您了解需要实施的概念、最佳实践和实际步骤(尽管它们针对的是非 SQL Express 安装):
使用 SQL Server Management Studio 进行备份
使用 SQL Server Management Studio 恢复数据库
此外,正如 Paul 所提到的,我衷心建议您定期练习如何还原/恢复数据库。因为在崩溃后学习如何操作绝对是最糟糕的时候……而且除非您定期测试备份,否则无法保证您的备份正常工作。