集成服务(SSIS)
操作背景
SQL Server Integration Services(SSIS)是SQL Server实现商业智能(BI)的重要组件,提供了企业级数据集成和工作流处理方案。可以用于各种数据源的提取、转换、加载(ETL)操作。RDS for SQL Server提供了开启SSIS特性、同步项目文件、授权及项目部署、配置job执行项目等功能。
约束条件
- 开启该特性的实例必须是加域(AD域)实例,使用域账号进行登录。加域实例的概览页会展示“域名|目录地址”信息。创建加域(AD域)实例请参见购买实例。
- 只读实例不支持打开SSIS功能。
- 需要设置实例的“clr enabled”参数值为1,开启CLR功能。
- 仅支持项目部署模式。
- 支持使用SQL Server Agent运行SSIS程序包。
- 仅支持如下版本:2014标准版、2014企业版、2016标准版、2016企业版、2017标准版、2017企业版、2019企业版、2022企业版。
- 包处理路径必须以“D:\SSIS”开头。在构建SSIS包时用到的路径都必须以“D:\SSIS”开头,部署到实例后台后包会自动存在放在“D:\SSIS\{projectName}\{projectFile}”路径下。确保工程中用到的所有文件、参数变量、表达式路径均是以此路径开头。
- 您不能直接部署SSIS项目,请使用msdb.dbo.rds_ssis_task存储过程执行,详细信息请参考部署SSIS工程。
- 请使用DontSaveSensitive的安全规则来构建SSIS项目(.ispac)用于部署。
- 请不要手动创建或者恢复SSISDB数据库,否则可能造成实例SSIS无法正常使用。
- 构建的SSIS项目文件需要上传到用户的OBS桶,目前支持的文件格式包括:“.zip”、“.ispac”。文件名需要和工程名保持一致,zip中需要包含有.ispac的工程文件,文件名只能包含大小写字母、数字、中划线、下划线等字符。
开启集成服务
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
- 在左侧导航栏单击“集成服务”,在“集成服务”页面单击“开启SSIS”后的。
- 在“确认”弹出框中,单击“确认”,开启SSIS。
- 开启后不支持关闭。
- 开启SSIS默认会设置“clr enabled”参数值为1,请不要手动关闭该参数,否则将造成SSIS无法正常工作。
开启成功后可以添加SSIS项目包。
- 开启成功后,实例会进入数据同步状态,等待SSISDB同步完成后,状态恢复正常。
- 用户需要将RDS的host信息添加到用户将要加域访问的ECS中或者线下加域的机器中。
添加SSIS包
构建的SSIS项目文件需要上传到用户的OBS桶,才能执行后续步骤。
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
- 在左侧导航栏单击“集成服务”,单击“添加包”。
- 在“添加包”弹出框中,选择包名,单击“确定”,当添加包成功后,在集成服务页面会显示添加成功的包信息。
图1 添加包
部署SSIS工程
- 使用SSMS等工具连接数据库。
- 执行存储过程(master.dbo.rds_grant_ssis_to_login),为域账号授予SSIS相关权限。详细内容请参见域账号授权SSIS。
- 选择
,右键新建目录,输入SSIS目录名称。目录创建成功后,会自动产生Projects和Environments子目录。
- 使用域账号执行存储过程(msdb.dbo.rds_ssis_task)部署SSIS工程包。详细内容请参见部署SSIS工程。
- 右键包名,可以执行配置、运行、校验等操作。构建包时采用DontSaveSensitive安全策略,因此在运行包之前需要配置相关的连接器的密码信息,以及运行参数。
- 右键包名,单击“Configure”,配置相关参数。
图2 配置参数
- 配置完成后,单击“Execute”运行SSIS工程。如下图,表示运行成功。
图3 运行报告
- 右键包名,单击“Configure”,配置相关参数。
- Agent job在运行时需要提供proxy的认证信息。选择“New Credentials”,输入域账号认证信息,创建认证。 ,右键单击
- Agent job中需要使用代理来负责运行SSIS包,执行以下SQL创建Proxy。
USE [msdb] GO EXEC msdb.dbo.sp_add_proxy @proxy_name=N'test_proxy', @credential_name=N'ssis_credential', @enabled=1 go exec msdb.dbo.rds_grant_proxy_subsystem 'test_proxy', 'SSIS' USE [msdb] GO EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'test_proxy', @login_name=N'JHN\dcadmin' GO
- sp_add_proxy:系统存储过程,创建proxy名称为@proxy_name的并且指定访问认证信息名字为@credential_name的代理。
- sp_grant_login_to_proxy:系统存储过程,为@proxy_name的授予@login_name账号的使用权限。
- rds_grant_proxy_subsystem:RDS提供的存储过程,为proxy授予子系统权限。
参数说明
@proxy_name:需要授予权限的proxy名称。
@proxy_subsystem:子系统名称,SSIS子系统则填写“SSIS”即可。
- 创建Agent job。选择 ,输入job名称,添加step信息。创建完成后可看到对应的job信息。
- 右键job名称,单击“start job” ,等待运行结果。
- SSISDB提供视图可查询SSIS工程及操作相关的记录。