备份和恢复 SQL Server 计划作业

备份和恢复 SQL Server 计划作业

我们最近遇到了一个服务器故障;在这个服务器上,我们安排了几个每晚运行的作业。我们在服务器死机之前备份了 SQL Server (2005) 数据库并恢复了它,但我在 SQL Server Agent 中看不到任何作业。备份数据库不会备份作业吗?我不知道作业是否保存在任何地方……我是不是搞砸了?

答案1

作业存储在系统数据库 MSDB 中。您备份了吗?您需要恢复它才能恢复作业。

答案2

您有两个选择。如果您计划基本完整地恢复服务器,如 20th Century Boy 所指出的,作业信息存储在 msdb 数据库中。除了用户数据库之外,您还应该备份 master 和 msdb,它们是系统数据库。

如果您只是想提取作业以在另一台现有服务器上运行,作为恢复选项,您可以编写 SQL Server 代理作业脚本。

  1. 打开 SQL Server Management Studio
  2. 使用对象资源管理器连接到相关的 SQL Server。
  3. 展开 SQL Server 代理
  4. 展开作业文件夹
  5. 右键单击要编写脚本的作业,您将看到脚本作业具有几层选项。

答案3

严格来说,这并不是对问题的直接回答,但我认为它很重要。实际上,您通常在 SQL Server 中创建的任何计划作业都可以使用 osql 或 sqlcmd 作为批处理文件完成。您可以从 Windows 任务计划程序运行批处理文件。

哪种方法更好取决于个人喜好。我喜欢使用 Windows 中的批处理文件,因为我可以从批处理文件中运行其他内容,而且批处理文件很容易在新安装中复制,而不必担心恢复 msdb。

JR

答案4

对于您所处的情况,正如所指出的,如果您既没有 MSDB 备份,也没有保存的作业脚本,并且 MSDB 不可用,则必须从内存或其他来源重新创建作业。(“我被搞砸了吗”= 是)

恢复工作时,请确保不仅要寻找您做过有,但你应该已经到位。

现在,已经过去了几周,您(希望)已经恢复了大部分关键工作,您应该重新审视已完成的工作并思考:

  • 您的恢复模型是否符合数据库的用途
  • 您的备份工作是否针对您的恢复模型和时间点恢复需求进行了优化?
  • 您是否按照应有的方式维护索引?
  • 您是否按应有的方式维护统计数据?

在这种情况下恢复可能很困难,但好多了如果您确保在不会再出现性能问题的情况下重新获得工作,那么在恢复过程中就会再次出现问题!

(当然,这些都是应该在所有数据库服务器上检查的内容,但在发生故障后跟进是重新审视最佳实践并查看可能遗漏了什么的好时机。)

相关内容