通过存储过程执行SSIS包?在SSDB里面?

时间:2018-07-05 17:16:24

标签: ssis ssis-2012 ssis-2008

我们可以通过存储过程在SSDB内执行SSIS包吗?

我的软件包中有ORACLE和SQL数据连接吗?我们可以通过参数传递它们吗?

还有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您的程序包已部署到目录,则可以通过调用多个SSISDB存储过程来执行它。在连接管理器中,您还可以参数化选项,例如连接字符串,服务器名称或初始目录。右键单击连接管理器,选择“参数化”,选择属性,然后将其与新参数或现有参数匹配。在下面的示例中,@execution_id参数将所有配置绑定到该执行实例。可以通过从SSIS目录中单击“执行软件包”窗口上的“脚本”按钮来生成此SQL。

--configure execution, if you're referencing an environment variable
-- @reference_id will tie this variable to your parameter otherwise it's null
Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Your Package.dtsx', @execution_id=@execution_id OUTPUT, 
@folder_name=N'Your Folder', @project_name=N'Your Project', @use32bitruntime=False, @reference_id=Null
Select @execution_id

--set value for parameter below
DECLARE @var0 sql_variant = N'Connection String'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=30, 
@parameter_name=N'ConnectionStringParameter', @parameter_value=@var0

--logging level, this is optional and will default to 1 (basic) if omitted
DECLARE @var1 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=50,
 @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var1

--execute package
EXEC [SSISDB].[catalog].[start_execution] @execution_id

GO