2016-08-19 37 views
2

我有多個SSIS項目,但其中的一些包是相同的。SSIS主包從另一個項目執行包

我想用通用包創建一個項目,並保留其他項目與他們的具體包。

所以我的問題是:是否有可能有一個主包可以執行並將父變量傳遞給另一個項目的包?

我是新來的SSIS很抱歉,如果它是一個很明顯的問題,或者如果我是不夠具體

回答

3

當您配置集成服務目錄,你可以從其他項目執行包。

  1. 在SSIS目錄中部署所有項目之後。轉到SSIS目錄並瀏覽到您要執行的程序包。
  2. 右擊並選擇執行
  3. 它會彈出一個窗口,要求所需的參數設置爲填補然後
  4. 單擊script菜單並選擇New query editor window
  5. 額外的步驟 - 刪除選擇@execution_id(不neccessary )
  6. 額外的步驟 - 刪除DECLARE @var0 smallint = 1線,並用1替換@var0(在該行這將是@ PARAMETER_VALUE = 1)
  7. 不要關閉SQL查詢窗口,你需要複製生成的腳本

現在,在你的主包:

  1. 添加Execute SQL Task
  2. 添加OLE DB connection manage R鍵SSISDB數據庫
  3. Execute SQL Task Editor - >SQLstatement:這裏粘貼生成包腳本

腳本示例:

Declare @execution_id bigint 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'testpackage.dtsx', @[email protected]_id OUTPUT, @folder_name=N'TestFolder', @project_name=N'TestProject', @use32bitruntime=False, @reference_id=Null 
Select @execution_id --delete this line 
DECLARE @var0 smallint = 1 `-- delete this line` 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] `--(replace this @var0 with 1)` 
EXEC [SSISDB].[catalog].[start_execution] @execution_id 
GO 

傳遞參數:從「參數映射」選項卡中添加以下兩行添加傳遞paremeter

DECLARE @ReportDate nvarchar(100) = `?` 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'ReportDate', @[email protected] 

現在的Execute SQL Task Editor添加要作爲參數傳遞您的變量。

請記住,變量數據類型必須與參數數據類型相同。