2010-04-20 124 views
1

我注意到你可以使用下面的存储过程(按顺序)来安排SSIS包:运行SSIS包从T-SQL

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 ... 

(您可以通过右键单击某个预定作业,选择看一个例子“脚本作业 - >创建到”)。

并且您可以使用sp_start_job立即执行作业,并根据需要有效地运行SSIS包。

问题:是否有人知道任何msdb.dbo存储过程,它们只是简单地允许您直接运行SSIS包,而无需直接使用sp_cmdshell,或者使用一些更简单的方法?

回答

3

那么,你不需要严格的调用sp_add_category,sp_update_jobsp_add_jobschedule。我们做我们的应用程序中使用SQL代理与以下调用序列按需包执行:

- sp_add_job 
- sp_add_jobstep 
- sp_add_jobserver 
- sp_start_job 

获取作业状态是有点棘手,如果你不能访问msdb..sysjobXXX表,但我们作业开始&运行得很好。

编辑::除了xp_cmdshell,我不知道从SQL Server内部启动SSIS处理程序的另一种方法。任何在服务器上具有权限的人都可以启动dtexec或dtutil可执行文件;那么你可以使用批处理文件,作业调度等。

2

不是真的......你可以尝试sp_OACreate,但它更复杂,可能不会这样做。

你需要从SQL运行它们吗?它们可以从命令行,.net应用程序等运行。

+1

我们宁愿从SQL执行它,而不是向我们的Web服务器提供手段。我们的Web服务器与SQL服务器不在同一个ms域中(甚至不在同一个网络上)。 – 2010-04-22 15:34:11