

# 支持 Amazon RDS for SQL Server 中的 SQL Server Integration Services
<a name="Appendix.SQLServer.Options.SSIS"></a>

Microsoft SQL Server Integration Services (SSIS) 是一个组件，可用于执行一系列广泛的数据迁移任务。SSIS 是一个用于数据集成和工作流应用程序的平台。它具有用于数据提取、转换和加载 (ETL) 的数据仓库工具。您还可以使用此工具自动维护 SQL Server 数据库以及对多维数据集数据的更新。

SSIS 项目将整理到另存为基于 XML 的 .dtsx 文件的包中。包可以包含控制流和数据流。您可以使用数据流来表示 ETL 操作。部署后，包存储在 SQL Server 中的 SSISDB 数据库中。SSISDB 是处于完全恢复模式的联机事务处理 (OLTP) 数据库。

Amazon RDS for SQL Server 支持直接在 RDS 数据库实例上运行 SSIS。您可以在现有的或新的数据库实例上启用 SSIS。SSIS 安装在与您的数据库引擎相同的数据库实例上。

RDS 在以下版本上对于 SQL Server 标准版和企业版支持 SSIS：
+ SQL Server 2022，所有版本
+ SQL Server 2019，版本 15.00.4043.16.v1 和更高版本
+ SQL Server 2017，版本 14.00.3223.3.v1 和更高版本
+ SQL Server 2016，版本 13.00.5426.0.v1 和更高版本

**Contents**
+ [限制和建议](#SSIS.Limitations)
+ [启用 SSIS](#SSIS.Enabling)
  + [为 SSIS 创建选项组](#SSIS.OptionGroup)
  + [将 SSIS 选项添加到选项组](#SSIS.Add)
  + [为 SSIS 创建参数组](#SSIS.CreateParamGroup)
  + [修改 SSIS 的参数](#SSIS.ModifyParam)
  + [将选项组和参数组与数据库实例关联](#SSIS.Apply)
  + [启用 S3 集成](#SSIS.EnableS3)
+ [SSISDB 上的管理权限](SSIS.Permissions.md)
  + [为 SSIS 设置经 Windows 身份验证的用户](SSIS.Permissions.md#SSIS.Use.Auth)
+ [部署 SSIS 项目](SSIS.Deploy.md)
+ [监控部署任务的状态](SSIS.Monitor.md)
+ [使用 SSIS](SSIS.Use.md)
  + [为 SSIS 项目设置数据库连接管理器](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [创建 SSIS 代理](SSIS.Use.md#SSIS.Use.Proxy)
  + [使用 SQL Server Agent 安排 SSIS 程序包](SSIS.Use.md#SSIS.Use.Schedule)
  + [从代理撤消 SSIS 访问权限](SSIS.Use.md#SSIS.Use.Revoke)
+ [禁用并删除 SSIS 数据库](SSIS.DisableDrop.md)
  + [禁用 SSIS](SSIS.DisableDrop.md#SSIS.Disable)
  + [删除 SSISDB 数据库](SSIS.DisableDrop.md#SSIS.Drop)

## 限制和建议
<a name="SSIS.Limitations"></a>

以下限制和建议适用于在 RDS for SQL Server 上运行 SSIS：
+ 数据库实例必须具有 `clr enabled` 参数设置为 1 的关联参数组。有关更多信息，请参阅 [修改 SSIS 的参数](#SSIS.ModifyParam)。
**注意**  
如果在 SQL Server 2017 或 2019 上启用 `clr enabled` 参数，则无法在数据库实例上使用公共语言运行时 (CLR)。有关更多信息，请参阅 [不支持的功能以及有限支持的功能](SQLServer.Concepts.General.FeatureNonSupport.md)。
+ 支持以下控制流任务：
  + 分析服务执行 DDL 任务
  + 分析服务处理任务
  + 批量插入任务
  + 检查数据库完整性任务
  + 数据流任务
  + 数据挖掘查询任务
  + 数据分析任务
  + 执行包任务
  + 执行 SQL Server Agent 作业任务
  + 执行 SQL 任务
  + 执行 T-SQL 语句任务
  + 通知操作员任务
  + 重建索引任务
  + 重新组织索引任务
  + 收缩数据库任务
  + 传输数据库任务
  + 传输作业任务
  + 传输登录名任务
  + 传输 SQL Server 对象任务
  + 更新统计数据任务
+ 仅支持项目部署。
+ 支持使用 SQL Server Agent 运行 SSIS 程序包。
+ SSIS 日志记录只能插入用户创建的数据库中。
+ 仅使用 `D:\S3` 文件夹来处理文件。放置在任何其他目录中的文件将被删除。请注意其他几个文件位置的详细信息：
  + 将 SSIS 项目输入和输出文件置于 `D:\S3` 文件夹中。
  + 对于数据流任务，将 `BLOBTempStoragePath` 和 `BufferTempStoragePath` 的位置更改为 `D:\S3` 文件夹中的文件。文件路径必须以 `D:\S3\` 开头。
  + 确保用于文件连接的所有参数、变量和表达式都指向 `D:\S3` 文件夹。
  + 在多可用区实例上，SSIS 在 `D:\S3` 文件夹中创建的文件将在故障转移后被删除。有关更多信息，请参阅“[S3 集成的多可用区限制](User.SQLServer.Options.S3-integration.md#S3-MAZ)”。
  + 将 SSIS 在 `D:\S3` 文件夹中创建的文件上传到您的 Amazon S3 存储桶以使其持久存在。
+ 不支持导入列和导出列转换以及数据流任务上的脚本组件。
+ 无法对正在运行的 SSIS 程序包启用转储，也无法在 SSIS 程序包上添加数据分接头。
+ 不支持 SSIS 扩展功能。
+ 您不能直接部署项目。我们提供 RDS 存储过程来执行此操作。有关更多信息，请参阅“[部署 SSIS 项目](SSIS.Deploy.md)”。
+ 使用 `DoNotSavePasswords` 保护模式构建 SSIS 项目 (.ispac) 文件以便在 RDS 上进行部署。
+ 具有只读副本的“始终打开”实例不支持 SSIS。
+ 您无法备份与 `SSIS` 选项关联的 SSISDB 数据库。
+ 不支持从 SSIS 的其他实例导入和还原 SSISDB 数据库。
+ 您可以连接到其他 SQL Server 数据库实例或 Oracle 数据来源。RDS for SQL Server 上的 SSIS 不支持连接到其他数据库引擎（例如 MySQL 或 PostgreSQL）。有关连接到 Oracle 数据来源的更多信息，请参阅 [带有 Oracle OLEDB 的链接服务器](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md)。
+ SSIS 不支持与本地域建立传出信任的已加入域的实例。在使用传出信任时，请从本地 AWS 域中的账户运行 SSIS 作业。
+ 不支持执行基于文件系统的软件包。

## 启用 SSIS
<a name="SSIS.Enabling"></a>

您可以通过向数据库实例添加 SSIS 选项来启用 SSIS。使用以下过程：

1. 创建新的选项组或选择现有的选项组。

1. 将 `SSIS` 选项添加到该选项组。

1. 创建新的参数组，或选择现有参数组。

1. 修改参数组以将 `clr enabled` 参数设置为 1。

1. 将选项组和参数组与数据库实例关联。

1. 启用 Amazon S3 集成。

**注意**  
如果数据库实例上已存在带有名称 SSISDB 或预留的 SSIS 登录名的数据库，则无法在实例上启用 SSIS。

### 为 SSIS 创建选项组
<a name="SSIS.OptionGroup"></a>

要使用 SSIS，请创建或修改与您计划使用的 SQL Server 版本和数据库实例版本对应的选项组。为此，请使用 AWS 管理控制台或 AWS CLI。

#### 控制台
<a name="SSIS.OptionGroup.Console"></a>

以下控制台过程创建适用于 SQL Server 标准版 2016 的选项组。

**创建选项组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**选项组**。

1. 选择**创建组**。

1. 在**创建选项组**窗口中，执行以下操作：

   1. 对于**名称**，输入选项组的名称，该名称在 AWS 账户内具有唯一性，例如 **ssis-se-2016**。此名称只能包含字母、数字和连字符。

   1. 对于**描述**，输入选项组的简要描述，例如 **SSIS option group for SQL Server SE 2016**。此说明用于显示说明。

   1. 对于**引擎**，选择 **sqlserver-se**。

   1. 对于**主要引擎版本**，选择 **13.00**。

1. 选择**创建**。

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

以下控制台过程创建适用于 SQL Server 标准版 2016 的选项组。

**创建选项组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-option-group \
      --option-group-name ssis-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

  对于：Windows

  ```
  aws rds create-option-group ^
      --option-group-name ssis-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

### 将 SSIS 选项添加到选项组
<a name="SSIS.Add"></a>

接下来，使用 AWS 管理控制台或 AWS CLI 将 `SSIS` 选项添加到您的选项组。

#### 控制台
<a name="SSIS.Add.Console"></a>

**添加 SSIS 选项**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**选项组**。

1. 选择您刚刚创建的选项组（在此示例中为 **ssis-se-2016**）。

1. 选择**添加选项**。

1. 在**选项详细信息**下，为**选项名称**选择 **SSIS**。

1. 在 **计划 (Scheduling)** 下，选择是立即添加选项还是在下一个维护时段添加选项。

1. 选择**添加选项**。

#### CLI
<a name="SSIS.Add.CLI"></a>

**添加 SSIS 选项**
+ 将 `SSIS` 选项添加到该选项组。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssis-se-2016 \
      --options OptionName=SSIS \
      --apply-immediately
  ```

  对于：Windows

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssis-se-2016 ^
      --options OptionName=SSIS ^
      --apply-immediately
  ```

### 为 SSIS 创建参数组
<a name="SSIS.CreateParamGroup"></a>

为与您计划用于 SSIS 的 SQL Server 版本和数据库实例版本对应的 `clr enabled` 参数创建或修改参数组。

#### 控制台
<a name="SSIS.CreateParamGroup.Console"></a>

以下过程为 SQL Server 标准版 2016 创建一个参数组。

**创建参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 选择**创建参数组**。

1. 在**创建参数组**窗格中，执行以下操作：

   1. 对于**参数组系列**，选择 **sqlserver-se-13.0**。

   1. 对于**组名称**，输入参数组的标识符，如 **ssis-sqlserver-se-13**。

   1. 对于**描述**，输入 **clr enabled parameter group**。

1. 选择**创建**。

#### CLI
<a name="SSIS.CreateParamGroup.CLI"></a>

以下过程为 SQL Server 标准版 2016 创建一个参数组。

**创建参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "clr enabled parameter group"
  ```

  对于：Windows

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "clr enabled parameter group"
  ```

### 修改 SSIS 的参数
<a name="SSIS.ModifyParam"></a>

修改与 SQL Server 版本和数据库实例版本对应的参数组中的 `clr enabled` 参数。对于 SSIS，将 `clr enabled` 参数设置为 1。

#### 控制台
<a name="SSIS.ModifyParam.Console"></a>

以下过程修改您为 SQL Server 标准版 2016 创建的参数组。

**修改参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 选择参数组，例如 **ssis-sqlserver-se-13**。

1. 在**参数**下，从参数列表中筛选 **clr**。

1. 选择 **clr enabled (启用 clr)**。

1. 选择**编辑参数**。

1. 从**值**中选择 **1**。

1. 选择**保存更改**。

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

以下过程修改您为 SQL Server 标准版 2016 创建的参数组。

**修改参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

  对于：Windows

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

### 将选项组和参数组与数据库实例关联
<a name="SSIS.Apply"></a>

要将 SSIS 选项组和参数组与数据库实例关联，请使用 AWS 管理控制台或 AWS CLI 

**注意**  
如果您使用现有实例，则该实例必须已关联 Active Directory 域和 AWS Identity and Access Management (IAM) 角色。如果您创建新实例，请指定现有的 Active Directory 域和 IAM 角色。有关更多信息，请参阅 [将 Active Directory 用于 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

#### 控制台
<a name="SSIS.Apply.Console"></a>

要完成对 SSIS 的启用，请将 SSIS 选项组和参数组与新的或现有的数据库实例关联：
+ 对于新数据库实例，请在启动实例时将其关联。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
+ 对于现有数据库实例，请通过修改实例将其关联。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

#### CLI
<a name="SSIS.Apply.CLI"></a>

您可以将 SSIS 选项组和参数组与新的或现有的数据库实例关联。

**使用 SSIS 选项组和参数组创建实例**
+ 指定创建选项组时使用的相同数据库引擎类型和主要版本。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssisinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

  对于：Windows

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssisinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

**修改实例并关联 SSIS 选项组和参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssisinstance \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --apply-immediately
  ```

  对于：Windows

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssisinstance ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --apply-immediately
  ```

### 启用 S3 集成
<a name="SSIS.EnableS3"></a>

要将 SSIS 项目 (.ispac) 文件下载到主机以进行部署，请使用 S3 文件集成。有关更多信息，请参阅 [将 Amazon RDS for SQL Server 数据库实例与 Amazon S3 集成](User.SQLServer.Options.S3-integration.md)。

# SSISDB 上的管理权限
<a name="SSIS.Permissions"></a>

如果使用 SSIS 选项创建或修改实例，则结果是一个 SSISDB 数据库，其中包含向主用户授予的 ssis\$1admin 和 ssis\$1logreader 角色。在 SSISDB 中，主用户有权执行以下操作：
+ 更改 ssis\$1admin 角色
+ 更改 ssis\$1logreader 角色
+ 更改任何用户

由于主用户是经 SQL 身份验证的用户，因此，您不能使用主用户执行 SSIS 程序包。主用户可以使用这些权限创建新的 SSISDB 用户并将这些用户添加到 ssis\$1admin 和 ssis\$1logreader 角色。这样做对于向域用户授予访问权限以使用 SSIS 非常有用。

## 为 SSIS 设置经 Windows 身份验证的用户
<a name="SSIS.Use.Auth"></a>

主用户可以使用以下代码示例在 SSISDB 中设置经 Windows 身份验证的登录并授予所需的过程权限。执行此操作可向域用户授予权限以部署和运行 SSIS 程序包、使用 S3 文件传输过程、创建凭证以及使用 SQL Server Agent 代理。有关更多信息，请参阅 Microsoft 文档中的[凭证（数据库引擎）](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15)和[创建 SQL Server Agent 代理](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15)。

**注意**  
您可以根据需要向经 Windows 身份验证的用户授予以下部分或所有权限。

**Example**  

```
-- Create a server-level SQL login for the domain user, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO						
						
-- Create a database-level account for the domain user, if it doesn't already exist						
USE [SSISDB]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Add SSIS role membership to the domain user
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

-- Add MSDB role membership to the domain user
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Grant MSDB stored procedure privileges to the domain user
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name]  with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] WITH GRANT OPTION


-- Add the SQLAgentUserRole privilege to the domain user
USE [msdb]
GO
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO

-- Grant the ALTER ANY CREDENTIAL privilege to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO
```

# 部署 SSIS 项目
<a name="SSIS.Deploy"></a>

在 RDS 上，您不能使用 SQL Server Management Studio (SSMS) 或 SSIS 过程直接部署 SSIS 项目。要从 Amazon S3 中下载项目文件并在随后进行部署，请使用 RDS 存储过程。

要运行存储过程，请以您已向其授予运行存储过程的权限的任何用户身份登录。有关更多信息，请参阅“[为 SSIS 设置经 Windows 身份验证的用户](SSIS.Permissions.md#SSIS.Use.Auth)”。

**部署 SSIS 项目**

1. 下载项目 (.ispac) 文件。

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/ssisproject.ispac',
   @rds_file_path='D:\S3\ssisproject.ispac',
   @overwrite_file=1;
   ```

1. 提交部署任务并确保：
   + 该文件夹存在于 SSIS 目录中。
   + 该项目名称与您在开发 SSIS 项目时使用的项目名称匹配。

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# 监控部署任务的状态
<a name="SSIS.Monitor"></a>

要跟踪部署任务的状态，请调用 `rds_fn_task_status` 函数。它获取两个参数。第一个参数应该始终为 `NULL`，因为它不适用于 SSIS。第二个参数接受任务 ID。

要查看所有任务的列表，请将第一个参数设置为 `NULL`，将第二个参数设置为 `0`，如以下示例所示。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

要获取特定任务，请将第一个参数设置为 `NULL`，将第二个参数设置为任务 ID，如以下示例所示。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

`rds_fn_task_status` 函数将返回以下信息。


| 输出参数 | 描述 | 
| --- | --- | 
| `task_id` | 任务的 ID。 | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | 不适用于 SSIS 任务。 | 
| `% complete` | 用百分比表示的任务进度。 | 
| `duration (mins)` | 在任务上花费的时间 (以分钟为单位)。 | 
| `lifecycle` |  任务的状态。有以下可能状态： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | 有关任务的其他信息。如果在处理过程中发生错误，则此列包含有关错误的信息。 | 
| `last_updated` | 上次更新任务状态的日期和时间。 | 
| `created_at` | 任务的创建日期和时间。 | 
| `S3_object_arn` |  不适用于 SSIS 任务。  | 
| `overwrite_S3_backup_file` | 不适用于 SSIS 任务。 | 
| `KMS_master_key_arn` |  不适用于 SSIS 任务。  | 
| `filepath` |  不适用于 SSIS 任务。  | 
| `overwrite_file` |  不适用于 SSIS 任务。  | 
| `task_metadata` | 与 SSIS 任务关联的元数据。 | 

# 使用 SSIS
<a name="SSIS.Use"></a>

将 SSIS 项目部署到 SSIS 目录中后，您可以直接从 SSMS 运行程序包或使用 SQL Server Agent 安排这些程序包。您必须使用经 Windows 身份验证的登录名来执行 SSIS 程序包。有关更多信息，请参阅“[为 SSIS 设置经 Windows 身份验证的用户](SSIS.Permissions.md#SSIS.Use.Auth)”。

**Topics**
+ [为 SSIS 项目设置数据库连接管理器](#SSIS.Use.ConnMgrs)
+ [创建 SSIS 代理](#SSIS.Use.Proxy)
+ [使用 SQL Server Agent 安排 SSIS 程序包](#SSIS.Use.Schedule)
+ [从代理撤消 SSIS 访问权限](#SSIS.Use.Revoke)

## 为 SSIS 项目设置数据库连接管理器
<a name="SSIS.Use.ConnMgrs"></a>

在使用连接管理器时，可以使用以下类型的身份验证：
+ 对于使用 AWS Managed Active Directory 的本地数据库连接，您可以使用 SQL 身份验证或 Windows 身份验证。对于 Windows 身份验证，请使用 `DB_instance_name.fully_qualified_domain_name` 作为连接字符串的服务器名称。

  以 `myssisinstance.corp-ad.example.com` 为例，其中 `myssisinstance` 是数据库实例名称，`corp-ad.example.com` 是完全限定域名。
+ 对于远程连接，请始终使用 SQL 身份验证。
+ 对于使用自托管式 Active Directory 的本地数据库连接，您可以使用 SQL 身份验证或 Windows 身份验证。对于 Windows 身份验证，请使用 `.` 或 `LocalHost` 作为连接字符串的服务器名称。

## 创建 SSIS 代理
<a name="SSIS.Use.Proxy"></a>

您需要创建 SSIS 凭证和 SSIS 代理，才能使用 SQL Server Agent 安排 SSIS 程序包。以经 Windows 身份验证的用户身份运行这些过程。

**创建 SSIS 凭证**
+ 为代理创建凭证。为此，您可以使用 SSMS 或以下 SQL 语句。

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**注意**  
`IDENTITY` 必须是经域身份验证的登录名。将 `mysecret` 替换为经域身份验证的登录的密码。  
每当更改 SSISDB 主机时，请更改 SSIS 代理凭证以允许新主机访问它们。

**创建 SSIS 代理**

1. 使用以下 SQL 语句创建代理。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. 使用以下 SQL 语句向其他用户授予对代理的访问权限。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. 使用以下 SQL 语句向代理授予 SSIS 子系统访问权限。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**查看代理和代理上的授权**

1. 使用以下 SQL 语句查看代理的被授权者。

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. 使用以下 SQL 语句查看子系统授权。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## 使用 SQL Server Agent 安排 SSIS 程序包
<a name="SSIS.Use.Schedule"></a>

创建凭证和代理并向 SSIS 授予对代理的访问权限后，您可以创建 SQL Server Agent 作业来安排 SSIS 程序包。

**安排 SSIS 程序包**
+ 您可以使用 SSMS 或 T-SQL 创建 SQL Server Agent 作业。以下示例使用 T-SQL。

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=2,
  @notify_level_page=2,
  @delete_level=0,
  @category_name=N'[Uncategorized (Local)]',
  @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_fail_action=2,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0,
  @subsystem=N'SSIS',
  @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" 
  /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E',
  @database_name=N'master',
  @flags=0,
  @proxy_name=N'SSIS_Proxy'
  GO
  ```

## 从代理撤消 SSIS 访问权限
<a name="SSIS.Use.Revoke"></a>

您可以使用以下存储过程撤消对 SSIS 子系统的访问权限并删除 SSIS 代理。

**撤消访问权限并删除代理**

1. 撤消子系统访问权限。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. 撤消代理上的授权。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. 删除代理。

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# 禁用并删除 SSIS 数据库
<a name="SSIS.DisableDrop"></a>

使用以下步骤禁用或删除 SSIS 数据库：

**Topics**
+ [禁用 SSIS](#SSIS.Disable)
+ [删除 SSISDB 数据库](#SSIS.Drop)

## 禁用 SSIS
<a name="SSIS.Disable"></a>

要禁用 SSIS，请从其选项组中删除 `SSIS` 选项。

**重要**  
删除该选项不会删除 SSISDB 数据库，因此，您可以安全地删除该选项，而不会丢失 SSIS 项目。  
您可以在删除后重新启用 `SSIS` 选项，以重用先前部署到 SSIS 目录的 SSIS 项目。

### 控制台
<a name="SSIS.Disable.Console"></a>

以下过程删除 `SSIS` 选项。

**从其选项组中删除 SSIS 选项**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**选项组**。

1. 选择具有 `SSIS` 选项的选项组（在前面的示例中为 `ssis-se-2016`）。

1. 选择 **Delete option (删除选项)**。

1. 在**删除选项**下，为**待删除的选项**选择 **SSIS**。

1. 在 **Apply immediately (立即应用)** 下，选择 **Yes (是)** 可立即删除选项，选择 **No (否)** 可在下次维护时段时删除。

1. 选择**删除**。

### CLI
<a name="SSIS.Disable.CLI"></a>

以下过程删除 `SSIS` 选项。

**从其选项组中删除 SSIS 选项**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  对于 Windows：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## 删除 SSISDB 数据库
<a name="SSIS.Drop"></a>

删除 SSIS 选项后并不会删除 SSISDB 数据库。要删除 SSISDB 数据库，请在删除 SSIS 选项后使用 `rds_drop_ssis_database` 存储过程。

**删除 SSIS 数据库**
+ 使用以下存储过程。

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

删除 SSISDB 数据库后，如果您重新启用 SSIS 选项，则会获得一个新的 SSISDB 目录。