我注意到您可以使用以下存储过程(按顺序)来安排SSIS包:
msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
msdb.dbo.sp_add_job ...
msdb.dbo.sp_add_jobstep ...
msdb.dbo.sp_update_job ...
msdb.dbo.sp_add_jobschedule ...
msdb.dbo.sp_add_jobserver ...
(您可以通过右键单击预定作业并选择“脚本作业as->创建到”来查看示例。)
您可以使用sp_start_job立即执行作业,并根据需要有效地运行SSIS包。
问题:有没有人知道任何msdb.dbo。[...]存储过程只是允许您在不使用sp_cmdshell的情况下即时运行SSIS包,或者更简单的方法? < / p>
答案 0 :(得分:3)
嗯,您并不需要sp_add_category
,sp_update_job
或sp_add_jobschedule
来电。我们使用SQL Agent在我们的应用程序中执行按需包执行,具有以下调用顺序:
- sp_add_job
- sp_add_jobstep
- sp_add_jobserver
- sp_start_job
如果您无法访问msdb..sysjobXXX表,获取作业状态有点棘手,但我们的工作开始&amp;跑得很好。
EDIT :: 除了xp_cmdshell之外,我不知道从SQL Server中启动SSIS处理程序的另一种方法。在服务器上具有权限的任何人都可以启动dtexec或dtutil可执行文件;然后你可以使用批处理文件,作业调度程序等。
答案 1 :(得分:2)
不是......你可以试试sp_OACreate,但它更复杂,可能不会这样做。
您需要从SQL运行它们吗?它们可以从命令行,.net app等运行
答案 2 :(得分:0)
在SQL Server 2012+中,可以使用以下功能(在SSISDB
数据库中找到,而不是在msdb
数据库中找到)来创建SSIS执行作业,准备其参数并开始执行: