从T-SQL运行SSIS包

时间:2010-04-20 18:03:57

标签: tsql ssis

我注意到您可以使用以下存储过程(按顺序)来安排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>

3 个答案:

答案 0 :(得分:3)

嗯,您并不需要sp_add_categorysp_update_jobsp_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执行作业,准备其参数并开始执行:

[catalog].[create_execution]

[catalog].[set_execution_parameter_value]

[catalog].[start_execution]