从SQL的SSIS目录中修改连接管理器信息

时间:2019-03-18 08:33:07

标签: sql-server ssis

有没有办法在用sql代码部署后从ssis目录中更新连接管理器信息?

我想先部署不包含敏感数据的项目:

  • exec catalog.deploy_project ..
  • 然后通过SQL将用户名和密码添加到SSIS目录项目中...

2 个答案:

答案 0 :(得分:1)

由于您询问的是在部署程序包后如何更改用户名和密码,因此我假设您已经熟悉SSIS目录,如果没有documentation的话,请对此进行进一步概述。要通过T-SQL设置用户名和密码,请使用环境变量,该变量将密码标记为敏感。 SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE存储过程用于更新环境变量的值,包括标记为敏感的那些,可以按以下方式使用。

  • 首先创建环境。为此,请右键单击SSISDB并创建一个新文件夹。然后在此文件夹中,右键单击并创建一个新环境。
  • 在此环境上单击鼠标右键,然后选择属性,然后转到变量窗格。为用户名和密码创建一个字符串变量,该变量存储的密码设置为敏感
  • 接下来,根据定义连接管理器的范围,右键单击包或项目,然后按配置并进入参考页面。使用添加按钮在此添加新创建的环境。
  • 仍然在项目/程序包的属性窗口中,进入 Parameters 页面,然后进入 Connection Managers 标签。找到将使用环境变量的连接管理器,右键单击用户名和密码属性上的省略号,将单选按钮更改为“使用环境变量”,然后选择相应的变量。
  • 在执行程序包之前,运行SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE存储过程以更新环境变量。下面是一个示例。
  • 如果此软件包是通过SQL代理作业或其他方法使用T-SQL执行的,请按照以下说明将环境引用链接到该软件包。

示例:

DECLARE @usernameVar SQL_VARIANT = N'UsernameValue'
EXEC SSISDB.[CATALOG].SET_ENVIRONMENT_VARIABLE_VALUE @variable_name=N'Username', 
@environment_name=N'Environment Name', @folder_name=N'Environment folder', @value=@usernameVar

DECLARE @passwordVar SQL_VARIANT = N'PasswordValue'
EXEC SSISDB.[CATALOG].SET_ENVIRONMENT_VARIABLE_VALUE @variable_name=N'Password', 
@environment_name=N'Environment Name', @folder_name=N'Environment folder', @value=@passwordVar

--make sure environment mapped with @reference_id
DECLARE @execution_id bigint
EXEC SSISDB.[CATALOG].CREATE_EXECUTION @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, 
@folder_name=N'Project Folder', @project_name=N'PackageProject', @use32bitruntime=False, @reference_id=99

DECLARE @var0 smallint = 1
EXEC SSISDB.[CATALOG].SET_EXECUTION_PARAMETER_VALUE @execution_id,  @object_type=50, 
@parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 

--execute package
EXEC SSISDB.[CATALOG].START_EXECUTION @execution_id

答案 1 :(得分:0)

  

有没有一种方法可以从   sql代码部署后的ssis目录?

这是可能的,因为SSISDB目录中的所有更改都是通过存储过程进行的。

这是SSMS在更改连接字符串期间生成的SQL脚本:

DECLARE @var SQL_VARIANT
= N'Data Source=ServerName;Initial Catalog=dbName;
Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;';

EXEC [SSISDB].[catalog].[set_object_parameter_value] @object_type = 20,
                                                     @parameter_name = N'_ConnectionStringParam',
                                                     @object_name = N'ProjectName',
                                                     @folder_name = N'FolderName',
                                                     @project_name = N'ProjectName',
                                                     @value_type = V,
                                                     @parameter_value = @var;

参考文献: