2011-11-02 74 views
4

我发现了一篇文章,声称可以使用pass parameters to a SQL Agent Job,但没有包含“如何”。有人可以解释这是如何完成的?将参数传递给SQL代理作业

在我的方案中,我需要一个存储过程来调用SQL代理并传递一个参数。 SQL代理作业又必须将参数传递给SSIS包步骤。

我听说的另一种方法是将存储的proc写入值写入表中,然后让SQL代理作业(或调用的SSIS包)从表中读取这些值。如果我必须的话,我会采用后一种方法,尽管这是klugey。

更新: 本练习的动机是为了形成一个集成测试由(a)所述SQL代理作业它提供了一个包配置文件和(b)SSIS包,其需要在封装配置中的值文件。因此我不想直接调用SSIS包。此外,测试人员既没有权限直接启动SQL Agent作业,也不允许它们动态创建SQL Agent作业。存档(合法)绕过权限问题。最后,集成测试可以针对数十个SSIS包中的一个,但在我的环境中有几十个SQL Agent作业定义是不实际的。 Ergo,sproc启动SQL Agent作业,并且该参数指示要启动哪个SSIS包。

+0

可能有多人同时运行此存储过程? – HLGEM

+0

有没有关于SSIS的东西不是kludgey? – HLGEM

+0

您试图解决什么问题? – billinkc

回答

2

看起来像你应该使用SSIS包配置功能。您存储的proc可以更新配置值。

0

另一种方法是使用作业步骤中设置的SSIS参数动态创建作业。这样做的一个可能的好处是工作是持久的,所以如果关于什么参数存在问题或疑问,工作就在身边,您可以调试工作/工作步骤创建逻辑。

如果代理仅仅是一种运行SSIS包的方法,那么在我最后一次演出中,DBA创建了2个proc,RunSSISPackage和RunSSISPackage32,它们除了调用dtexec来运行传递所有提供的参数的包外,

也有GiiM的方法可以工作,但直到我们知道你想要解决什么问题,很难说什么是更好的方法。