SQL Server 2016上的SSIS执行包任务

时间:2016-07-13 08:55:39

标签: sql-server ssis

在Visual Studio中,我正在创建一个主包,我将使用执行包任务来执行许多子包。

子包已部署到SQL Server 2016上的Integration Services Catalog SSISDB。

配置执行包任务以执行子包时,我无法访问服务器上的SSISDB。我如何访问SSISDB?

似乎任务期望子包位于Integration Services服务器上的MSDB中。

以下是执行包任务

的配置
  • 参考类型:外部参考
  • 位置:SQL Server
  • 连接:.SSISDB
  • PackageName :? - 无法选择子包
  • 密码:*********
  • ExecuteOutOfProcess:False

更新: 更改到程序包部署模式不会更改“执行程序包任务”的行为。我仍然无法访问存储在SSISDB中的软件包

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来您使用软件包部署模式部署了软件包。将部署模式切换到包:项目 - 转换为项目部署模式: enter image description here

并重新部署包。 要从另一个项目运行包,您必须将“执行SQL任务”与SSIS.create_execution存储过程(https://msdn.microsoft.com/en-us/library/ff878034(v=sql.110).aspx)放在控制流而不是“执行包任务”上,使用以下T-SQL作为示例(从提到的复制)链路):

Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Child1.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'TestDeply4', @project_name=N'Integration Services Project1', @use32bitruntime=False, @reference_id=Null
Select @execution_id
DECLARE @var0 sql_variant = N'Child1.dtsx'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=20, @parameter_name=N'Parameter1', @parameter_value=@var0
DECLARE @var1 sql_variant = N'Child2.dtsx'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=20, @parameter_name=N'Parameter2', @parameter_value=@var1
DECLARE @var2 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var2
EXEC [SSISDB].[catalog].[start_execution] @execution_id