2016-08-19 64 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添加要作为参数传递您的变量。

请记住,变量数据类型必须与参数数据类型相同。