2013-12-18 122 views
0

我有一個ssis包,其中的變量由數據庫表設置。爲了重新使用代碼,這個軟件包將每週運行一次。但是也需要使用它來臨時運行它。現在我有從命令行運行包的代碼,並且我知道如何使用開關設置變量名稱/Set \Package.Variables[User::FileName].Properties[Value];"aaab"SSIS包變量集訂購

我的問題:有沒有一種方法來設置首選項是使用表還是傳入值?或者有什麼方法可以確定什麼是執行者,如果我可以確定它是從.net vs作業還是存儲過程運行,那麼我可以說使用傳入值?

+0

您可以擁有一個變量(比如執行器),並根據包的調用方式傳遞不同的值。 –

回答

1

有實施一攬子的運行時配置多種方式(這是你在做什麼)

你不提什麼版本,但有這樣一個閱讀:

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

這爲例子說,在這種順序配置發生了SQL 2005:

- 設計時的配置都應用於 -Command行選項應用應用210-父級程序包配置

這意味着如果您的變量是使用標準配置從標準SSIS配置表中分配的,則任何命令行選項都會在之後覆蓋它們。

您是否認爲您的用戶需要安裝SSIS,並且該軟件包將在其本地機器上執行,包括數據往返?

+0

謝謝。現在是2008年,用戶將填寫信息,點擊一個按鈕。該應用程序將運行一個SP,它將調用xp_cmdShell或動態創建一個SQL作業並運行它。 – Mike

1

試着看看System :: UserName。如果這是由DOMAIN \ SomeSpecialSQLServerAgentAccount運行的每週作業,您可以編寫一個設置User :: FileName的表達式,或者如果該包由DOMAIN \ JohnQPublic手動執行,則可以不同地設置User :: FileName。

您可以使用兩個版本的文件名變量,例如User :: FileNameFromTable和User :: FileNameFromCommandLine,然後根據System :: UserName選擇一個或另一個。

恐怕我還沒有找到一種方法來影響如何設置變量(設計時初始化,配置文件,命令行配置,作業屬性配置)。