2012-02-02 127 views
1

我的应用程序实际上调用了一个存储过程,它调用一个包并执行它。最初我们使用xp_cmdshell和dtexec来做,但客户端不允许使用xm_cmdshell.Is有任何其他方法去做这个?从存储过程调用ssis包,而不使用xp_cmdshell

请帮忙。

+0

SQL 2012提供了本地运行程序包的过程[catalog.create_execution](http://msdn.microsoft.com/zh-cn/library/ff878160(v = sql.110).aspx)和[catalog.start_execution] (http://msdn.microsoft.com/en-us/library/ff878160(v=sql.110).aspx) – billinkc 2012-02-02 15:49:12

+0

问题是应用程序和程序包重新在同一个服务器即应用程序服务器上。根据客户端我们不允许在应用程序服务器上安装集成服务。我们的数据库服务器是不同的。我们的应用程序在按钮单击时执行包。 – Shipu 2012-02-03 05:10:06

回答

1

这种情况是SSIS文档中的discussed。另一个选项是CLR程序,即runs the package,所以不是TSQL/xp_cmdshell,而是使用CLR/Dts对象模型。

1

你可以设置一台运行的包,然后用sp_start_job来EXECUT工作

http://msdn.microsoft.com/en-us/library/ms403355.aspx

您可以使用这些命令来创建作业的作业编程

http://msdn.microsoft.com/en-us/library/ms181153.aspx

+0

,但它会在并发users.suppose用户点击一个按钮,将调用此sp_startjob.But创建问题,但如果在同一时间其他用户单击此按钮然后他/她将无法执行它,直到第一个完成它。 – Shipu 2012-02-02 14:01:55

+0

可能不是运行现有作业,而是运行创建作业的脚本,然后可以将该唯一GUID添加到作业并跟踪其进度以及http://msdn.microsoft.com/zh-cn/library/ms191450的.aspx – msmucker0527 2012-02-02 14:21:21