创建用于生成SQL Server代理作业的存储过程

问题描述 投票:0回答:1

好奇这是否可行。我目前正在构建许多SQL Server代理作业。这些作业只是SFTP作业,它们在2个不同客户端的服务器之间传递文件,并在我的本地服务器上进站进行一些预处理和后期处理。是的,从不必要的角度来看,此设置是不必要的,但是从安全角度来看,这是必需的。所有这些作业都具有相同的结构:

  1. 将文件从client1服务器SFTP到本地服务器。
  2. 在文件上运行可执行文件
  3. 将处理后的文件通过FTP发送到client2server。
  4. 等待预定的时间,以便client2可以对输入执行查询。
  5. 将响应文件从client2server SFTP到本地服务器。
  6. 在文件上运行另一个可执行文件。
  7. 将处理后的响应文件通过FTP发送回client1server。

相当直截了当。

每个工作之间只有少数几个值会改变:-client1server上的输入/输出文件路径-client2server上的输入/输出文件路径-本地服务器上的目录

这些作业并不复杂,因此如有必要,我可以手动创建它们。不过,这似乎是不必要的工作。我以为也许可以创建一个存储过程,该存储过程将生成用于创建作业的SQL脚本,并且该存储过程可以简单地接受因作业而异的变量。这可行吗?

广泛来说,这是我的想法:

CREATE PROCEDURE create_ftp_interface_job
    @client1input_fp nvarchar(100),
    @client1output_fp nvarchar(100),
    @client2input_fp nvarchar(100),
    @client2output_fp nvarchar(100),
    etc...

AS


<SQL Script for creating SQL Server Agent jobs, with parameters inserted>


GO

我已经尝试了此版本的早期版本,但似乎在引用我在SSA作业脚本内部的存储过程定义中声明的变量时遇到了麻烦。我来这里问我正在尝试的方法是否可行,而我只是遇到了铣床参考错误,或者是否不允许我在做什么。

sql-server stored-procedures sql-server-agent
1个回答
0
投票

您可以使用msdb.dbo.sp_add_jobmsdb.dbo.sp_add_jobmsdb.dbo.sp_add_jobstepmsdb.dbo.sp_add_jobstepmsdb.dbo.sp_update_job以编程方式创建和管理SQL代理作业。

实际上,还有更多的存储过程msdb.dbo.sp_update_job与管理SQL Agent作业有关。

© www.soinside.com 2019 - 2024. All rights reserved.