2012-10-29 20 views
0

运行我们有通过的SQLAgent作业运行的SSIS包。我们正在从ASP.NET网页中启动该工作(通过sp_startjob)。登录到UI的用户需要使用用户启动的SSIS包进行登录 - 因此我们需要将userId传递给SSIS包。问题是我们无法将参数传递给sp_startjob。将参数传递给包由这些sp_startjob

有谁知道如何可以做到这一点和/或知道的替代上述方法

回答

1

它无法通过sp_startjob来完成的。您无法将参数传递给作业步骤,以便选项无法使用。

如果您不关心并发性,并且您不能同时运行相同的作业,那么可以通过将作业步骤从SQL Server Integration Services类型更改为类似OS的操作步骤来破解它命令。操作系统命令调用网页创建/修改的批处理脚本。最终结果是你开始你的包像dtexec.exe /file MyPackage /Set \Package.Variables[User::DomainUser].Properties[Value];\"Domain\MyUser\"在这一点上,在你的包变量DomainUser将有域\ MYUSER的价值。

我不知道你的要求,所以也许你可以打电话到.NET框架,并从网页启动程序包。虽然你可能想要确保异步调用。否则,除非您的SSIS软件包速度非常快,否则用户可能会尝试导航,垃圾邮件刷新等,等待页面“正常工作”。

所有这一切都被方式简单地推动一个值的SSIS包。在这种情况下,用户名。它不沿其凭据传递这样的呼叫喜欢的东西SYSTEM_USER将报告的SQL Agent用户帐户(或作业步的操作)。

+0

感谢您的答复billinkc - 并发问题还挺规则的批处理文件的解决方案 - 考虑到我们打算一起去,将一个将要部署到应用服务器的用户界面启动WCF服务其他几个选项后(承载SSIS) –