【问题标题】:SQL Generate script of schedule jobSQL 生成调度作业脚本
【发布时间】:2019-02-06 15:41:22
【问题描述】:

我在 SQL 代理中有许多计划作业。我想每周/每月创建备份,这样当服务器出现任何问题时,我将通过脚本再次创建所有作业,而不是手动创建每个作业。

我知道我们可以从 SSMS 生成这种脚本,但我的问题是如何使用 t-sql 为每个计划作业生成脚本?

【问题讨论】:

  • 如果您熟悉 SMO 对象,则可以使用它们。详情见此链接docs.microsoft.com/en-us/sql/relational-databases/…
  • 使用 T-SQL 是不必要的乏味——您必须从 msdb.dbo.sysjobsmsdb.dbo.sysjobsteps 中抓取详细信息并从中合成命令。使用预定的 PowerShell 脚本(也应该可以从作业中)这很容易:dir sqlserver:\sql\localhost\default\JobServer\Jobs |% { $_.Script() } 将一次性编写所有脚本,并根据需要重定向到文件。不过,我从未尝试过让它在服务器上运行;可能需要进行一些安装才能使SqlServer 模块可用。
  • 请注意,msdb 的备份也将备份作业 - 恢复 msdb 不是一时兴起的事情,或者只是为了恢复作业,但这是一个无论如何都是不错的选择。

标签: sql-server tsql sql-agent-job sql-agent


【解决方案1】:

您可以为此调用 4 个 msdb 存储过程:

  • sp_add_job 创建新作业
  • sp_add_jobstep 在作业中添加新步骤
  • sp_add_jobschedule 为作业添加计划
  • sp_add_jobserver 将作业添加到特定服务器

请阅读这篇文章以获得更详细的解释: https://www.mssqltips.com/sqlservertip/3052/simple-way-to-create-a-sql-server-job-using-tsql/

【讨论】:

  • 我不会创建作业,我要为现有作业创建脚本。 :(
  • 如果您有“建议”,请添加评论,不要将其作为答案输入。
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多