# 集成服务（SSIS）
#### 操作背景
SQL Server Integration Services（SSIS）是SQL Server实现商业智能（BI）的重要组件，提供了企业级数据集成和工作流处理方案。可以用于各种数据源的提取、转换、加载（ETL）操作。RDS for SQL Server提供了开启SSIS特性、同步项目文件、授权及项目部署、配置job执行项目等功能。
#### 约束条件
- 开启该特性的实例必须是加域（AD域）实例，使用域账号进行登录。加域实例的概览页会展示"域名\|目录地址"信息。创建加域（AD域）实例请参见[购买RDS for SQL Server实例](https://support.huaweicloud.com/usermanual-rds-mssql/rds_03_0014.html)。
- 只读实例不支持打开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的工程文件，文件名只能包含大小写字母、数字、中划线、下划线等字符。
 
#### 开启集成服务
1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002572991262.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
4. 在左侧导航栏单击"集成服务"，在"集成服务"页面单击"开启SSIS"后的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002249954737.png)。
5. 在"确认"弹出框中，单击"确认"，开启SSIS。 
   - 开启后不支持关闭。
   
   - 开启SSIS默认会设置"clr enabled"参数值为1，请不要手动关闭该参数，否则将造成SSIS无法正常工作。
   
   
   
   
开启成功后可以添加SSIS项目包。
- 开启成功后，实例会进入数据同步状态，等待SSISDB同步完成后，状态恢复正常。
- 用户需要将RDS的host信息添加到用户将要加域访问的ECS中或者线下加域的机器中。
 
#### 添加SSIS包
![](https://support.huaweicloud.com/usermanual-rds-mssql/public_sys-resources/note_3.0-zh-cn.png)
构建的SSIS项目文件需要上传到用户的OBS桶，才能执行后续步骤。
1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002572991262.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
4. 在左侧导航栏单击"集成服务"，单击"添加包"。
5. 在"添加包"弹出框中，选择包名，单击"确定"，当添加包成功后，在集成服务页面会显示添加成功的包信息。 
   图1添加包   
   ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002214914910.png "点击放大")
   
   
 
 #### 部署SSIS工程
1. 使用**SSMS**等工具连接数据库。
2. 执行存储过程（master.dbo.rds_grant_ssis_to_login），为域账号授予SSIS相关权限。详细内容请参见[域账号授权SSIS](https://support.huaweicloud.com/usermanual-rds-mssql/rds_09_0055.html)。
3. 选择"Integration Service Catalogs \> SSISDB"，右键新建目录，输入SSIS目录名称。目录创建成功后，会自动产生Projects和Environments子目录。 
   ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002214914918.png "点击放大")
   
   
4. 使用域账号执行存储过程（msdb.dbo.rds_ssis_task）部署SSIS工程包。详细内容请参见[部署SSIS工程](https://support.huaweicloud.com/usermanual-rds-mssql/rds_09_0056.html)。
5. 右键包名，可以执行配置、运行、校验等操作。构建包时采用DontSaveSensitive安全策略，因此在运行包之前需要配置相关的连接器的密码信息，以及运行参数。 
   1. 右键包名，单击"Configure"，配置相关参数。
      图2配置参数   
      ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002215074722.png "点击放大") 
   
   2. 配置完成后，单击"Execute"运行SSIS工程。如下图，表示运行成功。
      图3运行报告   
      ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002215074738.png "点击放大") 
   
   
   
   
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_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工程及操作相关的记录。
 
