更新时间:2024-10-14 GMT+08:00

集成服务(SSIS)

操作背景

SQL Server Integration Services(SSIS)是SQL Server实现商业智能(BI)的重要组件,提供了企业级数据集成和工作流处理方案。可以用于各种数据源的提取、转换、加载(ETL)操作。RDS for SQL Server提供了开启SSIS特性、同步项目文件、授权及项目部署、配置job执行项目等功能。

约束条件

  • 开启该特性的实例必须是加域(AD域)实例,使用域账号进行登录。加域实例的概览页会展示“域名|目录地址”信息。
  • 只读实例不支持打开SSIS功能。
  • 需要设置实例的“clr enabled”参数值为1,开启CLR功能。
  • 仅支持项目部署模式。
  • 支持使用SQL Server Agent运行SSIS程序包。
  • 仅支持如下版本:2014标准版、2014企业版、2016标准版、2016企业版、2017标准版、2017企业版。
  • 包处理路径必须以“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的工程文件,文件名只能包含大小写字母、数字、中划线、下划线等字符。

开启集成服务

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  5. 在左侧导航栏单击“集成服务”,在“集成服务”页面单击“开启SSIS”后的
  6. “确认”弹出框中,单击“确认”,开启SSIS。

    • 开启后不支持关闭。
    • 开启SSIS默认会设置“clr enabled”参数值为1,请不要手动关闭该参数,否则将造成SSIS无法正常工作。

开启成功后可以添加SSIS项目包。

  • 开启成功后,实例会进入数据同步状态,等待SSISDB同步完成后,状态恢复正常。
  • 用户需要将RDS的host信息添加到用户将要加域访问的ECS中或者线下加域的机器中。

添加SSIS包

构建的SSIS项目文件需要上传到用户的OBS桶,才能执行后续步骤。

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  5. 在左侧导航栏单击“集成服务”,单击“添加包”
  6. 在“添加包”弹出框中,选择包名,单击“确定”,当添加包成功后,在集成服务页面会显示添加成功的包信息。

    图1 添加包

部署SSIS工程

  1. 使用SSMS等工具连接数据库。
  2. 执行存储过程(master.dbo.rds_grant_ssis_to_login),为域账号授予SSIS相关权限。详细内容请参见域账号授权SSIS
  3. 选择Integration Service Catalogs > SSISDB,右键新建目录,输入SSIS目录名称。目录创建成功后,会自动产生Projects和Environments子目录。

  4. 使用域账号执行存储过程(msdb.dbo.rds_ssis_task)部署SSIS工程包。详细内容请参见部署SSIS工程
  5. 右键包名,可以执行配置、运行、校验等操作。构建包时采用DontSaveSensitive安全策略,因此在运行包之前需要配置相关的连接器的密码信息,以及运行参数。

    1. 右键包名,单击“Configure”,配置相关参数。
      图2 配置参数
    2. 配置完成后,单击“Execute”运行SSIS工程。如下图,表示运行成功。
      图3 运行报告

  6. Agent job在运行时需要提供proxy的认证信息。选择Security > Credentials,右键单击“New Credentials”,输入域账号认证信息,创建认证。
  7. 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”即可。

  8. 创建Agent job。选择SQL Server Agent > Jobs,输入job名称,添加step信息。创建完成后可看到对应的job信息。
  9. 右键job名称,单击“start job” ,等待运行结果。
  10. SSISDB提供视图可查询SSIS工程及操作相关的记录。