2011-11-02 60 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的方法可以工作,但直到我們知道你想要解決什麼問題,很難說什麼是更好的方法。