有没有办法在用sql代码部署后从ssis目录中更新连接管理器信息?
我想先部署不包含敏感数据的项目:
答案 0 :(得分:1)
由于您询问的是在部署程序包后如何更改用户名和密码,因此我假设您已经熟悉SSIS目录,如果没有documentation的话,请对此进行进一步概述。要通过T-SQL设置用户名和密码,请使用环境变量,该变量将密码标记为敏感。 SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE
存储过程用于更新环境变量的值,包括标记为敏感的那些,可以按以下方式使用。
SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE
存储过程以更新环境变量。下面是一个示例。示例:
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;
参考文献: