

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Microsoft SQL Server 資料庫引擎的選項
<a name="Appendix.SQLServer.Options"></a>

在本節中，您可以找到可供執行 Microsoft SQL Server 資料庫引擎之 Amazon RDS 執行個體使用的選項的說明。若要啟用這些選項，請將其新增至選項群組，然後使選項群組與您的資料庫執行個體產生關聯。如需更多詳細資訊，請參閱 [使用選項群組](USER_WorkingWithOptionGroups.md)。

如果您要尋找的選用功能不是透過 RDS 選項群組所新增，例如 SSL、Microsoft Windows 驗證和 Amazon S3 整合，請參閱[Microsoft SQL Server on Amazon RDS 的其他功能](User.SQLServer.AdditionalFeatures.md)。

Amazon RDS 支援 Microsoft SQL Server 資料庫執行個體的下列選項。


****  

| 選項 | 選項 ID | 引擎版本 | 
| --- | --- | --- | 
|  [連結的伺服器搭配 Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md)  |  `OLEDB_ORACLE`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [原生備份與還原](Appendix.SQLServer.Options.BackupRestore.md)  |  `SQLSERVER_BACKUP_RESTORE`  |  SQL Server Enterprise Edition SQL Server Standard Edition SQL Server Web Edition SQL Server Express Edition  | 
|  [透明資料加密](Appendix.SQLServer.Options.TDE.md)  |  `TRANSPARENT_DATA_ENCRYPTION` (RDS 主控台) `TDE` (AWS CLI 和 RDS API)  |  SQL Server 2016–2022 Enterprise Edition SQL Server 2022 Standard Edition | 
|  [SQL Server 稽核](Appendix.SQLServer.Options.Audit.md)  |  `SQLSERVER_AUDIT`  |  在 RDS 中，從 SQL Server 2016 開始，SQL Server 的所有版本均支援伺服器層級稽核，企業版也支援資料庫層級稽核。 從 SQL Server SQL Server 2016 (13.x) SP1 開始，所有版本均支援伺服器層級和資料庫層級稽核。 如需更多詳細資訊，請參閱 SQL Server 文件中的 [SQL Server 稽核 (資料庫引擎)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-2017)。 | 
|  [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md)  |  `SSAS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md)  |  `SSIS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Reporting Services](Appendix.SQLServer.Options.SSRS.md)  |  `SSRS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Microsoft Distributed Transaction Coordinator](Appendix.SQLServer.Options.MSDTC.md)  |  `MSDTC`  |  在 RDS 中，自 SQL Server 2016 開始，所有版本的 SQL Server 都支援分散式交易。  | 
|  [SQL Server 資源主管](Appendix.SQLServer.Options.ResourceGovernor.md)  |  `RESOURCE_GOVERNOR`  |  SQL Server Enterprise Edition SQL Server 2022 開發人員版本  | 

## 列出 SQL Server 版本的可用選項
<a name="Appendix.SQLServer.Options.Describe"></a>

您可以使用 `describe-option-group-options` AWS CLI 命令來列出 SQL Server 版本和版本的可用選項，以及這些選項的設定。

下列範例顯示了 SQL Server 2019 Enterprise Edition 的選項和選項設定。`--engine-name` 選項為必要項目。

```
aws rds describe-option-group-options --engine-name sqlserver-ee --major-engine-version 15.00
```

輸出看起來會與以下內容相似：

```
{
    "OptionGroupOptions": [
        {
            "Name": "MSDTC",
            "Description": "Microsoft Distributed Transaction Coordinator",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": true,
            "DefaultPort": 5000,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": false,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": [
                {
                    "SettingName": "ENABLE_SNA_LU",
                    "SettingDescription": "Enable support for SNA LU protocol",
                    "DefaultValue": "true",
                    "ApplyType": "DYNAMIC",
                    "AllowedValues": "true,false",
                    "IsModifiable": true,
                    "IsRequired": false,
                    "MinimumEngineVersionPerAllowedValue": []
                },
        ...

        {
            "Name": "TDE",
            "Description": "SQL Server - Transparent Data Encryption",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": false,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": true,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": []
        }
    ]
}
```

# Amazon RDS for SQL Server 中支援連結的伺服器搭配 Oracle OLEDB
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

連結的伺服器搭配 RDS for SQL Server 上的 Oracle Provider for OLEDB 可讓您存取 Oracle 資料庫上的外部資料來源。您可以從遠端 Oracle 資料來源讀取資料，並針對 RDS for SQL Server 資料庫執行個體之外的遠端 Oracle 資料庫伺服器執行命令。搭配 Oracle OLEDB 使用連結的伺服器，您可以
+ 直接存取 SQL Server 以外的資料來源
+ 在沒有移動資料的情況下，使用相同查詢針對各種 Oracle 資料進行查詢
+ 跨企業生態系統對資料來源發出分散式查詢、更新、命令和交易
+ 從 Microsoft Business Intelligence 套件 (SSIS、SSRS、SSAS) 內整合與 Oracle 資料庫的連線
+ 從 Oracle 資料庫遷移到 RDS for SQL Server

在現有或新的 RDS for SQL Server 資料庫執行個體上，您可以針對 Oracle 啟動一或多個連結的伺服器。然後，您可以整合外部 Oracle 資料來源與資料庫執行個體。

**Contents**
+ [支援的版本和區域](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [限制與建議](#LinkedServers_Oracle_OLEDB.Limitations)
+ [啟用連結的伺服器搭配 Oracle](#LinkedServers_Oracle_OLEDB.Enabling)
  + [建立 OLEDB\$1ORACLE 的選項群組](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [將 `OLEDB_ORACLE` 選項新增至選項群組](#LinkedServers_Oracle_OLEDB.Add)
  + [將 `OLEDB_ORACLE` 版本選項修改為另一個版本](#LinkedServers_Oracle_OLEDB.Modify)
  + [將選項群組關聯至您的資料庫執行個體](#LinkedServers_Oracle_OLEDB.Apply)
+ [修改 OLEDB 提供者屬性](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [修改 OLEDB 驅動程式屬性](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [停用連結的伺服器搭配 Oracle](#LinkedServers_Oracle_OLEDB.Disable)

## 支援的版本和區域
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

對於下列版本上的 SQL Server 標準版和企業版，RDS for SQL Server 在所有區域都支援連結的伺服器搭配 Oracle OLEDB：
+ SQL Server 2022，所有版本
+ SQL Server 2019，所有版本
+ SQL Server 2017，所有版本

下列 Oracle Database 版本支援連結的伺服器搭配 Oracle OLEDB：
+ Oracle Database 21c，所有版本
+ Oracle Database 19c，所有版本
+ Oracle Database 18c，所有版本

下列 OLEDB Oracle 驅動程式版本支援連結的伺服器搭配 Oracle OLEDB：
+ 21.7
+ 21.16

## 限制與建議
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

請記住，連結的伺服器搭配 Oracle OLEDB 時適用下列限制和建議：
+ 針對每個 RDS for SQL Server 資料庫執行個體，透過在安全群組中新增適用的 TCP 連接埠，以允許網路流量。例如，如果您要在 EC2 Oracle 資料庫執行個體與 RDS for SQL Server 資料庫執行個體之間設定連結的伺服器，則必須允許來自 EC2 Oracle 資料庫執行個體 IP 地址的流量。您也必須在 SQL Server 用來接聽資料庫通訊的連接埠上允許流量。如需安全群組的詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。
+ 在開啟、關閉或修改選項群組中的 `OLEDB_ORACLE` 選項之後，執行 RDS for SQL Server 資料庫執行個體的重新啟動。選項群組狀態會針對這些事件顯示 `pending_reboot`，且為必要項目。對於已啟用 AlwaysOn 或鏡像選項的 RDS for SQL Server 多可用區域執行個體，在建立新執行個體或還原後將執行個體重新開機時，預期會發生容錯移轉。
+ 僅支援使用 Oracle 資料來源的使用者名稱和密碼進行簡易身分驗證。
+ 不支援開放式資料庫連線 (ODBC) 驅動程式。僅支援上述 OLEDB 驅動程式版本。
+ 支援分散式交易 (XA)。若要啟用分散式交易，請在資料庫執行個體的選項群組中開啟 `MSDTC` 選項，並確定 XA 交易已開啟。如需詳細資訊，請參閱[RDS for SQL Server 中的 Microsoft Distributed Transaction Coordinator 支援](Appendix.SQLServer.Options.MSDTC.md)。
+ 不支援建立用作連接字串捷徑的資料來源名稱 (DSN)。
+ 不支援 OLEDB 驅動程式追蹤。您可以使用 SQL Server 擴充事件來追蹤 OLEDB 事件。如需詳細資訊，請參閱[設定 RDS for SQL Server 中的擴充事件](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/)。
+ 使用 SQL Server Management Studio (SSMS) 時，不支援存取 Oracle 連結伺服器的目錄資料夾。

## 啟用連結的伺服器搭配 Oracle
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

將 `OLEDB_ORACLE` 選項新增至 RDS for SQL Server 資料庫執行個體，來啟用連結的伺服器搭配 Oracle。請使用下列程序：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `OLEDB_ORACLE` 選項新增至選項群組。

1. 選擇要使用的 OLEDB 驅動程式版本。

1. 將選項群組與資料庫執行個體建立關聯。

1. 重新啟動資料庫執行個體。

### 建立 OLEDB\$1ORACLE 的選項群組
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

若要搭配 Oracle 使用連結的伺服器，請建立選項群組，或修改對應至 SQL Server 版本和您計劃使用的資料庫執行個體版本的選項群組。若要完成此程序，請使用 AWS 管理主控台 或 AWS CLI。

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

下列程序會建立 SQL Server Standard Edition 2019 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 視窗中，執行下列動作：

   1. 針對**名稱**，輸入您 AWS 帳戶中唯一的選項群組名稱，例如 **oracle-oledb-se-2019**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **OLEDB\$1ORACLE option group for SQL Server SE 2019**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version** (主要引擎版本)，請選擇 **15.00**。

1. 選擇**建立**。

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

下列程序會建立 SQL Server Standard Edition 2019 的選項群組。

**建立選項群組**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --engine-name sqlserver-se \
      --major-engine-version 15.00 \
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

  在 Windows 中：

  ```
  aws rds create-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --engine-name sqlserver-se ^
      --major-engine-version 15.00 ^
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

### 將 `OLEDB_ORACLE` 選項新增至選項群組
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

接著，使用 AWS 管理主控台 或 AWS CLI 將 `OLEDB_ORACLE` 選項新增至您的選項群組。

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.Add.Console"></a>

**新增 OLEDB\$1ORACLE 選項**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛剛建立的選項群組，亦即這個範例中的 **oracle-oledb-se-2019**。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details** (選項詳細資訊) 下，選擇 **OLEDB\$1ORACLE** 作為 **Option name** (選項名稱)。

1. 在**版本**下，選擇您要安裝的 OLEDB Oracle 驅動程式版本。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

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

**新增 OLEDB\$1ORACLE 選項**
+ 將 `OLEDB_ORACLE` 選項新增至選項群組。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 ^
      --apply-immediately
  ```

### 將 `OLEDB_ORACLE` 版本選項修改為另一個版本
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

若要將`OLEDB_ORACLE`選項版本修改為另一個版本，請使用 AWS 管理主控台 或 AWS CLI。

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**修改 OLEDB\$1ORACLE 選項**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `OLEDB_ORACLE` 選項的選項群組 (上述範例中的 **oracle-oledb-se-2019**)。

1. 選擇 **Modify option** (修改選項)。

1. 在 **Option details** (選項詳細資訊) 下，選擇 **OLEDB\$1ORACLE** 作為 **Option name** (選項名稱)。

1. 在**版本**下，選擇您要使用的 OLEDB Oracle 驅動程式版本。

1. 在**排程**下，選擇要立即修改選項或是在下一個維護時段修改選項。

1. 選擇 **Modify option** (修改選項)。

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

若要修改 `OLEDB_ORACLE` 選項版本，請搭配您想使用的選項群組和選項版本使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html)AWS CLI 命令。

**修改 OLEDB\$1ORACLE 選項**
+   
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 ^
      --apply-immediately
  ```

### 將選項群組關聯至您的資料庫執行個體
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

若要將`OLEDB_ORACLE`選項群組和參數群組與您的資料庫執行個體建立關聯，請使用 AWS 管理主控台 或 AWS CLI 

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

若要完成啟用 Oracle 連結伺服器，請將您的 `OLEDB_ORACLE` 選項群組與新的或現有的資料庫執行個體建立關聯
+ 對於新的資料庫執行個體，請在啟動執行個體時將它們相關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

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

您可以將 `OLEDB_ORACLE` 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。

**使用 `OLEDB_ORACLE` 選項群組和參數群組建立執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 15.0.4236.7.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 oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name
  ```

  在 Windows 中：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 15.0.4236.7.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 oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name
  ```

**修改執行個體並關聯 `OLEDB_ORACLE` 選項群組**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --option-group-name oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --option-group-name oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name ^
      --apply-immediately
  ```

## 修改 OLEDB 提供者屬性
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

您可以檢視和變更 OLEDB 提供者的屬性。只有 `master` 使用者可以執行此任務。在資料庫執行個體上建立的所有 Oracle 連結伺服器，都會使用與該 OLEDB 提供者的相同屬性。呼叫 `sp_MSset_oledb_prop` 預存程序來變更 OLEDB 提供者的屬性。

變更 OLEDB 提供者屬性

```
				
USE [master]
GO
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1 
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'DynamicParameters', 0
GO
```

您可以修改下列屬性：


****  

| 屬性名稱 | 建議值 (1 = 開啟、0 = 關閉) | Description | 
| --- | --- | --- | 
| `Dynamic parameter` | 1 | 允許參數化查詢中的 SQL 預留位置 (由 '?' 表示)。 | 
| `Nested queries` | 1 | 允許 `SELECT` 子句中的巢狀 `FROM` 陳述式，例如子查詢。 | 
| `Level zero only` | 0 | 只會針對提供者呼叫基礎層級 OLEDB 界面。 | 
| `Allow inprocess` | 1 | 如果已開啟，Microsoft SQL Server 允許將提供者具體化為處理中伺服器。將此屬性設為 1 以使用 Oracle 連結伺服器。 | 
| `Non transacted updates` | 0 | 若是非零，SQL Server 允許更新。 | 
| `Index as access path` | False | 若是非零，SQL Server 會嘗試使用提供者的索引來擷取資料。 | 
| `Disallow adhoc access` | False | 如果已設定，SQL Server 不允許針對 OLEDB 提供者執行傳遞查詢。雖然可以核取此選項，但有時候執行傳遞查詢是更好的選擇。 | 
| `Supports LIKE operator` | 1 | 指出提供者支援使用 LIKE 關鍵字進行查詢。 | 

## 修改 OLEDB 驅動程式屬性
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

建立 Oracle 連結伺服器時，您可以檢視和變更 OLEDB 驅動程式的屬性。只有 `master` 使用者可以執行此任務。驅動程式屬性定義 OLEDB 驅動程式在使用遠端 Oracle 資料來源時處理資料的方式。驅動程式屬性專用於在資料庫執行個體上建立的每個 Oracle 連結伺服器。呼叫 `master.dbo.sp_addlinkedserver` 預存程序來變更 OLEDB 驅動程式的屬性。

範例：建立連結的伺服器並變更 OLEDB 驅動程式 `FetchSize` 屬性

```
	
EXEC master.dbo.sp_addlinkedserver
@server = N'Oracle_link2',
@srvproduct=N'Oracle',
@provider=N'OraOLEDB.Oracle',
@datasrc=N'my-oracle-test.cnetsipka.us-west-2.rds.amazonaws.com:1521/ORCL',
@provstr='FetchSize=200'
GO
```

```
	
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'Oracle_link2',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'master',
@rmtpassword='Test#1234'
GO
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

## 停用連結的伺服器搭配 Oracle
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

若要停用連結的伺服器搭配 Oracle，請將 `OLEDB_ORACLE` 選項從其選項群組中移除。

**重要**  
移除選項並不會刪除資料庫執行個體上現有的連結伺服器組態。您必須手動捨棄它們，才能將它們從資料庫執行個體中移除。  
您可以在移除後重新啟用 `OLEDB_ORACLE` 選項，以重複使用先前在資料庫執行個體上設定的連結伺服器組態。

### 主控台
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

下列程序會移除 `OLEDB_ORACLE` 選項。

**從選項群組中移除 OLEDB\$1ORACLE 選項**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `OLEDB_ORACLE` 選項的選項群組 (上述範例中的 `oracle-oledb-se-2019`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options** (刪除選項) 下，為 **Options to delete** (要刪除的選項) 選擇 **OLEDB\$1ORACLE**。

1. 在 **Apply immediately** (立即套用) 下，選擇 **Yes** (是) 立即刪除選項，或選擇 **No** (否) 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

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

下列程序會移除 `OLEDB_ORACLE` 選項。

**從選項群組中移除 OLEDB\$1ORACLE 選項**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OLEDB_ORACLE \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OLEDB_ORACLE ^
      --apply-immediately
  ```

# 在 RDS for SQL Server 中搭配使用連結伺服器與 Teradata ODBC
<a name="USER_SQLServerTeradata"></a>

支援在 RDS for SQL Server 上搭配使用連結伺服器與 Teradata ODBC 驅動程式，可讓您存取 Teradata 資料庫上的外部資料來源。您可以從 RDS for SQL Server 執行個體以外的遠端 Teradata 資料庫伺服器讀取資料並執行命令。搭配使用連結伺服器與 Teradata ODBC 可啟用下列功能：
+ 直接存取 SQL Server 以外的資料來源。
+ 在未移動資料的情況下，使用相同查詢對各種 Teradata 資料進行查詢。
+ 跨企業生態系統對資料來源發出分散式查詢、更新、命令和交易。
+ 從 Microsoft Business Intelligence 套件 (SSIS、SSRS、SSAS) 內整合與 Teradata 資料庫的連線。
+ 從 Teradata 資料庫遷移至 RDS for SQL Server。

在現有或新的 RDS for SQL Server 資料庫執行個體上，您可以選擇為 Teradata 啟動一或多個連結伺服器。然後，您可以整合外部 Teradata 資料來源與您的資料庫執行個體。

**Topics**
+ [支援的版本和區域](#USER_SQLServerTeradata.VersionRegionSupport)
+ [限制與建議](#USER_SQLServerTeradata.LimitsandRecommendations)
+ [多可用區域部署考量](#USER_SQLServerTeradata.MultiAZ)
+ [啟用連結伺服器搭配 Oracle](USER_SQLServerTeradata.Activate.md)
+ [建立 Teradata 的連結伺服器](USER_SQLServerTeradata.CreateLinkedServers.md)
+ [停用連結至 Teradata 的伺服器](USER_SQLServerTeradata.Deactivate.md)

## 支援的版本和區域
<a name="USER_SQLServerTeradata.VersionRegionSupport"></a>

對於下列版本的 SQL Server Standard 和 Enterprise Edition，RDS for SQL Server 在所有 AWS 區域 都支援連結伺服器與 Teradata ODBC 搭配使用：
+ SQL Server 2022，所有版本
+ SQL Server 2019，所有版本
+ SQL Server 2017，所有版本

下列 Teradata 資料庫版本支援與 RDS for SQL Server 連結
+ Teradata 17.20，所有版本

## 限制與建議
<a name="USER_SQLServerTeradata.LimitsandRecommendations"></a>

下列限制適用於與 Teradata ODBC 搭配使用的連結伺服器：
+ RDS for SQL Server 僅支援使用 Teradata 來源的使用者名稱和密碼進行簡易身分驗證。
+ RDS for SQL Server 僅支援 Teradata ODBC 驅動程式 17.20.0.33 版。
+ RDS for SQL Server 不支援建立資料來源名稱 (DSN) 做為連接字串的捷徑。
+ RDS for SQL Server 不支援 ODBC 驅動程式追蹤。請使用 SQL Server 擴充事件來追蹤 ODBC 事件。如需詳細資訊，請參閱[設定 RDS for SQL Server 中的擴充事件](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/)。
+ 使用 SQL Server Management Studio (SSMS) 時，RDS for SQL Server 不支援存取 Teradata 連結伺服器的目錄資料夾。

搭配使用連結伺服器與 Teradata ODBC 時，請考量下列建議：
+ 針對每個 RDS for SQL Server 資料庫執行個體，透過在安全群組中新增適用的 TCP 連接埠，以允許網路流量。如果您要在 EC2 Teradata 資料庫執行個體與 RDS for SQL Server 資料庫執行個體之間設定連結伺服器，則必須允許來自 EC2 Teradata 資料庫執行個體 IP 位址的流量。您也必須允許 RDS for SQL Server 資料庫執行個體用來接聽資料庫通訊的連接埠上的流量。如需安全群組的詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。
+ 支援分散式交易 (XA)。若要啟用分散式交易，請在資料庫執行個體的選項群組中開啟 `MSDTC` 選項，並確定 XA 交易已開啟。如需詳細資訊，請參閱 [RDS for SQL Server 中的 Microsoft Distributed Transaction Coordinator 支援](Appendix.SQLServer.Options.MSDTC.md)。
+ 只要在 Teradata 伺服器上設定，連結的 Teradata ODBC 就支援 SSL/TLS。如需詳細資訊，請參閱在 [Teradata Vantage 上啟用 TLS 連線](https://docs.teradata.com/r/Enterprise_IntelliFlex_Lake_VMware/Teradata-Call-Level-Interface-Version-2-Reference-for-Workstation-Attached-Systems-20.00/Mainframe-TLS-Connectivity-Supplement/Enable-TLS-Connectivity-on-Teradata-Vantage)。

## 多可用區域部署考量
<a name="USER_SQLServerTeradata.MultiAZ"></a>

RDS for SQL Server 目前不會將連結伺服器複寫至多可用區域部署中的鏡像資料庫伺服器 (或 Always-On 可用性群組次要伺服器)。如果在組態變更為新增鏡像或 Always-On 之前新增連結伺服器，則會為現有的連結伺服器複製連結伺服器。

或者，您可以在主要執行個體上建立連結伺服器、容錯移轉至高可用性伺服器執行個體，然後再次建立連結伺服器，使其位於兩個 RDS for SQL Server 執行個體上。

# 啟用連結伺服器搭配 Oracle
<a name="USER_SQLServerTeradata.Activate"></a>

將 `ODBC_TERADATA` 選項新增至 RDS for SQL Server 資料庫執行個體，以啟用連結伺服器搭配 Teradata。請使用下列程序：

**Topics**
+ [建立 `ODBC_TERADATA` 的選項群組](#USER_SQLServerTeradata.Activate.CreateOG)
+ [將 `ODBC_TERADATA` 選項新增至選項群組](#USER_SQLServerTeradata.Activate.AddOG)
+ [將 `ODBC_TERADATA` 選項與您的資料庫執行個體建立關聯](#USER_SQLServerTeradata.Activate.AssociateOG)

## 建立 `ODBC_TERADATA` 的選項群組
<a name="USER_SQLServerTeradata.Activate.CreateOG"></a>

若要搭配使用連結伺服器與 Teradata，請建立選項群組，或修改對應至 SQL Server 版本和您計劃使用的資料庫執行個體版本的選項群組。若要完成此程序，請使用 AWS 管理主控台或 AWS CLI。

### 主控台
<a name="USER_SQLServerTeradata.Activate.CreateOG.Console"></a>

使用下列程序，建立 SQL Server Standard Edition 2019 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 視窗中，執行下列動作：

   1. 在 **Name** (名稱) 中，輸入您 AWS 帳戶 中的唯一選項群組名稱，例如 `teradata-odbc-se-2019`。名稱僅可包含字母、數字與連字號。

   1. 對於**描述**，輸入選項群組的簡短描述。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version** (主要引擎版本)，請選擇 **15.00**。

1. 選擇**建立**。

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.CreateOG.CLI"></a>

下列程序會建立 SQL Server Standard Edition 2019 的選項群組。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds create-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --engine-name sqlserver-se \
    --major-engine-version 15.00 \
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

**Example**  
針對 Windows：  

```
aws rds create-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --engine-name sqlserver-se ^
    --major-engine-version 15.00 ^
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

## 將 `ODBC_TERADATA` 選項新增至選項群組
<a name="USER_SQLServerTeradata.Activate.AddOG"></a>

接下來，使用AWS 管理主控台或 AWS CLI 將 `ODBC_Teradata` 選項新增至選項群組。

### 主控台
<a name="USER_SQLServerTeradata.Activate.AddOG.Console"></a>

使用下列程序，建立 SQL Server Standard Edition 2019 的選項群組。

**新增 `ODBC_TERADATA` 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇新的選項群組。

1. 選擇 **Add option (新增選項)**。

1. 在**選項詳細資訊**底下：

   1. 針對**選項名稱**，選擇 **ODBC\$1TERADATA**。

   1. 針對**選項版本**，選擇 `17.20.33.00`。

1. 在 [排程] 底下，選擇要立即新增選項還是在下一個維護時段新增。

1. 選擇 **Add option (新增選項)**。

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AddOG.CLI"></a>

下列程序會將 `ODBC_TERADATA` 選項新增至您的選項群組。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds add-option-to-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" \
    --apply-immediately
```

**Example**  
針對 Windows：  

```
aws rds add-option-to-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" ^
    --apply-immediately
```

## 將 `ODBC_TERADATA` 選項與您的資料庫執行個體建立關聯
<a name="USER_SQLServerTeradata.Activate.AssociateOG"></a>

若將 `ODBC_TERADATA` 選項群組與您的資料庫執行個體建立關聯，請使用 AWS 管理主控台 或 AWS CLI。

### 主控台
<a name="USER_SQLServerTeradata.Activate.AssociateOG.Console"></a>

若要完成為 Teradata 啟用連結伺服器的作業，請將您的選項群組與新的或現有的資料庫執行個體建立關聯：
+ 對於新的資料庫執行個體，請在啟動執行個體時建立關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AssociateOG.CLI"></a>

指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。

針對 Linux、macOS 或 Unix：

```
aws rds create-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --db-instance-class db.m5.2xlarge \
    --engine sqlserver-se \
    --engine-version 15.00 \
    --license-model license-included \
    --allocated-storage 100 \
    --master-username admin \
    --master-user-password password \
    --storage-type gp2 \
    --option-group-name teradata-odbc-se-2019
```

針對 Windows：

```
aws rds create-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --db-instance-class db.m5.2xlarge ^
    --engine sqlserver-se ^
    --engine-version 15.00 ^
    --license-model license-included ^ 
    --allocated-storage 100 ^
    --master-username admin ^
    --master-user-password password ^
    --storage-type gp2 ^
    --option-group-name teradata-odbc-se-2019
```

修改執行個體，並建立新選項群組的關聯：

針對 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --option-group-name teradata-odbc-se-2019 \
    --apply-immediately
```

針對 Windows：

```
aws rds modify-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --option-group-name teradata-odbc-se-2019 ^
    --apply-immediately
```

# 建立 Teradata 的連結伺服器
<a name="USER_SQLServerTeradata.CreateLinkedServers"></a>

若要建立 Teradata 的連結伺服器，請執行下列命令：

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServer_NAME', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=Server;UID=user_name;PWD=user_password;
                UseDataEncryption=YES/NO;SSLMODE=PREFER/ALLOW/DISABLE>;"', 
    @catalog='database'
```

```
EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServer_NAME', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'user_name', 
    @rmtpassword = N'user_password'
```

上述命令的範例如下所示：

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServerToTeradata', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=my-teradata-test.cnetsipka.us-west-2.rds.amazonaws.com;
                UID=master;
                PWD=Test#1234;
                UseDataEncryption=YES;
                SSLMODE=PREFER;"', 
    @catalog='MyTestTeradataDB'

EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServerToTeradata', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'master', 
    @rmtpassword = N'Test#1234'
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

# 停用連結至 Teradata 的伺服器
<a name="USER_SQLServerTeradata.Deactivate"></a>

若要停用連結至 Teradata 的伺服器，請將 `ODBC_TERADATA` 選項從其選項群組中移除。

**重要**  
刪除選項並不會刪除資料庫執行個體上的連結伺服器組態。您必須手動捨棄它們，才能將它們從資料庫執行個體中移除。  
您可以在移除後重新啟用 `ODBC_TERADATA`，以重複使用先前在資料庫執行個體上設定的連結伺服器組態。

## 主控台
<a name="USER_SQLServerTeradata.Deactivate.Console"></a>

從選項群組中移除 `ODBC_TERADATA` 選項

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 使用 `ODBC_TERADATA` 選項選擇選項群組。

1. 選擇 **刪除**。

1. 在**刪除選項**底下，選擇**要刪除的選項**下的 `ODBC_TERADATA`。

1. 在 **Apply immediately** (立即套用) 下，選擇 **Yes** (是) 立即刪除選項，或選擇 **No** (否) 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

## AWS CLI
<a name="USER_SQLServerTeradata.Deactivate.CLI"></a>

下列命令會移除 `ODBC_TERADATA` 選項。

針對 Linux、macOS 或 Unix：

```
aws rds remove-option-from-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options ODBC_TERADATA \
    --apply-immediately
```

針對 Windows：

```
aws rds remove-option-from-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options ODBC_TERADATA ^
    --apply-immediately
```

# SQL Server 對原生備份與還原的支援
<a name="Appendix.SQLServer.Options.BackupRestore"></a>

您可以使用 SQL Server 資料庫的原生備份與還原功能，建立內部部署資料庫的差異或完整備份，並於 Amazon S3 上存放備份檔案。然後您可以還原到執行 SQL Server 的現有 Amazon RDS 資料庫執行個體。您還可以備份 RDS for SQL Server 資料庫，將其存放於 Amazon S3，並於其他位置將其還原。另外，您可以將備份還原至現場部署伺服器，或執行 SQL Server 的不同 Amazon RDS 資料庫執行個體。如需更多詳細資訊，請參閱 [使用原生備份和還原，匯入和匯出 SQL Server 資料庫](SQLServer.Procedural.Importing.md)。

Amazon RDS 支援使用差異和完整備份檔案 (.bak 檔案) 進行 Microsoft SQL Server 資料庫的原生備份與還原。

## 新增原生備份與還原選項
<a name="Appendix.SQLServer.Options.BackupRestore.Add"></a>

將原生備份與還原選項新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將 `SQLSERVER_BACKUP_RESTORE` 選項新增至選項群組。

1. 建立 AWS Identity and Access Management (IAM) 角色與此選項的關聯。IAM 角色必須具有 S3 儲存貯體的存取權限才能儲存資料庫備份。

   也就是說，該選項必須設定為 `arn:aws:iam::account-id:role/role-name` 格式的有效 Amazon 資源名稱 (ARN)。如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam)。

   IAM 角色也必須與信任關係及許可政策相連接。信任關係可允許 RDS 擔任角色，而許可政策會定義角色可以執行的動作。如需更多詳細資訊，請參閱 [手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)。

1. 將選項群組與資料庫執行個體建立關聯。

在您新增原生備份與還原選項之後，您並不需要重新啟動資料庫執行個體。只要選項群組為作用中狀態，您就可以立即開始備份與還原。

### 主控台
<a name="Add.Native.Backup.Restore.Console"></a>

**新增原生備份與還原選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 建立新的選項群組或使用現有的選項群組。如需如何建立自訂資料庫選項群組的資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

   若要使用現有的選項群組，請跳到下一個步驟。

1. 將 **SQLSERVER\$1BACKUP\$1RESTORE** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 請執行下列其中一項：
   + 若要使用現有的 IAM 角色和 Amazon S3 設定，請為 **IAM Role (IAM 角色)** 選擇現有的 IAM 角色。如果您使用現有的 IAM 角色，RDS 會使用為此角色設定的 Amazon S3 設定。
   + 若要建立新的角色並設定新的 Amazon S3 設定，請執行以下動作：

     1. 對於 **IAM 角色**，選擇**建立新角色**。

     1. 對於 **S3 bucket (S3 儲存貯體)**，從清單中選擇 S3 儲存貯體。

     1. 在 **S3 prefix (optional) (S3字首 (選用))** 中，指定 Amazon S3 儲存貯體所儲存檔案要使用的字首。

        該字首可以包含檔案路徑，但並非必要。如果您提供字首，RDS 會將該字首附加於所有備份檔案。然後，RDS 會在還原過程中使用該字首以識別相關檔案並忽略無關的檔案。例如，您可以將 S3 儲存貯體用於存放備份檔案以外的目的。在此情況下，您可以使用該字首讓 RDS 僅在特定資料夾及其子資料夾內執行原生備份和還原。

        如果您讓字首保持空白，RDS 將不會使用字首來識別備份檔案或者要還原的檔案。因此，在多檔案還原期間，RDS 會嘗試還原 S3 儲存貯體的每個資料夾中的每個檔案。

     1. 選擇 **Enable encryption (啟用加密)** 核取方塊以加密備份檔案。保持清除核取方塊 (預設值)，以使備份檔案未加密。

        如果您選擇 **Enable encryption (啟用加密)**，請選擇 **AWS KMS key** 的加密金鑰。如需加密金鑰的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南* 中的[入門](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)。

1. 選擇 **Add option (新增選項)**。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### CLI
<a name="Add.Native.Backup.Restore.CLI"></a>

此程序會進行下列假設：
+ 您正在將 SQLSERVER\$1BACKUP\$1RESTORE 選項新增到已存在的選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。
+ 您正在將選項與已存在的 IAM 角色建立關聯，並且可以存取存放備份的 S3 儲存貯體。
+ 您正在將選項群組套用到已存在的資料庫執行個體。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

**新增原生備份與還原選項**

1. 將 `SQLSERVER_BACKUP_RESTORE` 選項新增至選項群組。  
**Example**  

   對於 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
   	--apply-immediately \
   	--option-group-name mybackupgroup \
   	--options "OptionName=SQLSERVER_BACKUP_RESTORE, \
   	  OptionSettings=[{Name=IAM_ROLE_ARN,Value=arn:aws:iam::account-id:role/role-name}]"
   ```

   在 Windows 中：

   ```
   aws rds add-option-to-option-group ^
   	--option-group-name mybackupgroup ^
   	--options "[{\"OptionName\": \"SQLSERVER_BACKUP_RESTORE\", ^
   	\"OptionSettings\": [{\"Name\": \"IAM_ROLE_ARN\", ^
   	\"Value\": \"arn:aws:iam::account-id:role/role-name"}]}]" ^
   	--apply-immediately
   ```
**注意**  
使用 Windows 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

1. 將選項群組套用到資料庫執行個體。  
**Example**  

   對於 Linux、macOS 或 Unix：

   ```
   aws rds modify-db-instance \
   	--db-instance-identifier mydbinstance \
   	--option-group-name mybackupgroup \
   	--apply-immediately
   ```

   在 Windows 中：

   ```
   aws rds modify-db-instance ^
   	--db-instance-identifier mydbinstance ^
   	--option-group-name mybackupgroup ^
   	--apply-immediately
   ```

## 修改原生備份與還原選項設定
<a name="Appendix.SQLServer.Options.BackupRestore.ModifySettings"></a>

您在啟用原生備份與還原選項之後，可以修改選項的設定。如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。

## 移除原生備份與還原選項
<a name="Appendix.SQLServer.Options.BackupRestore.Remove"></a>

您可以關閉原生備份與還原功能，方法為從資料庫執行個體中移除該選項。在您移除原生備份與還原選項之後，您並不需要重新啟動資料庫執行個體。

若要從資料庫執行個體中移除原生備份與還原選項，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 修改資料庫執行個體，並指定不包括「原生備份與還原」選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 支援 SQL Server 的透明資料加密
<a name="Appendix.SQLServer.Options.TDE"></a>

Amazon RDS 支援使用透明資料加密 (TDE)，來加密執行 Microsoft SQL Server 之資料庫執行個體上所儲存的資料。TDE 會在資料寫入至儲存體之前自動將其加密，並在從儲存體中讀取資料時自動將其解密。

Amazon RDS 支援下列 SQL Server 版本的 TDE：
+ SQL Server 2022 Standard 和 Enterprise Edition
+ SQL Server 2019 Standard 和 Enterprise Editions
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**注意**  
RDS for SQL Server 不支援唯讀資料庫的 TDE。

SQL Server 的透明資料加密會使用雙層金鑰架構來提供加密金鑰管理。從資料庫主要金鑰產生的認證是用來保護資料加密金鑰。資料庫加密金鑰會在使用者資料庫上，實際執行資料加密及解密作業。Amazon RDS 會備份並管理資料庫主金鑰與 TDE 憑證。

透明資料加密係使用於需要加密敏感資料的情況。例如，您可能想要將資料檔案和備份提供給第三方，或處理與安全相關的法律合規性問題。您無法加密 SQL Server 的系統資料庫，例如 `model` 或 `master` 資料庫。

透明資料加密的詳細討論超出本指南的範圍，但請確定您了解每一個加密演算法和金鑰的安全優缺點。如需 SQL Server 之透明資料加密的相關資訊，請參閱 Microsoft 文件中的[透明資料加密 (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx)。

**Topics**
+ [為 RDS for SQL Server 開啟 TDE](#TDE.Enabling)
+ [在 RDS for SQL Server 上加密資料](TDE.Encrypting.md)
+ [在 RDS for SQL Server 上備份與還原 TDE 憑證](TDE.BackupRestoreRDS.md)
+ [備份與還原內部部署資料庫的 TDE 憑證](TDE.BackupRestoreOnPrem.md)
+ [為 RDS for SQL Server 關閉 TDE](TDE.Disabling.md)

## 為 RDS for SQL Server 開啟 TDE
<a name="TDE.Enabling"></a>

若要開啟 RDS for SQL Server 資料庫執行個體的透明資料加密，請在與該資料庫執行個體關聯的 RDS 選項群組中指定 TDE 選項。

1. 判斷資料庫執行個體是否已與具有 TDE 選項的選項群組相關聯。若要檢視資料庫執行個體相關聯的選項群組，請使用 RDS 主控台、 [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令或 API 操作 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)。

1.  如果資料庫執行個體並未與 TED 已開啟的選項群組關聯，則您有兩個選擇。您可以建立一個選項群組，並新增 TDE 選項，您也可以修改相關的選項群組，以增加該選項。
**注意**  
在 RDS 主控台中，此選項會命名為 `TRANSPARENT_DATA_ENCRYPTION`。在 AWS CLI 和 RDS API 中，它命名為 `TDE`。

   如需建立或修改選項群組的相關資訊，請參閱 [使用選項群組](USER_WorkingWithOptionGroups.md)。如需將選項新增至選項群組的相關資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1.  建立資料庫執行個體與具有 TDE 選項之選項群組之間的關聯。如需使資料庫執行個體與選項群組產生關聯的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 選項群組考量
<a name="TDE.Options"></a>

TDE 選項是一個永續性選項。除非所有資料庫執行個體和備份均不再與選項群組相關聯，否則您無法將它從該選項群組中移除。一旦您將 TDE 選項新增至選項群組，該選項群組就只能與使用 TDE 的資料庫執行個體相關聯。如需選項群組中持續選項的詳細資訊，請參閱 [選項群組概觀](USER_WorkingWithOptionGroups.md#Overview.OptionGroups)。

因為 TDE 選項為持久性選項，所以在選項群組與相關聯的資料庫執行個體之間可能會發生衝突。在下列情況中會發生衝突：
+ 目前選項群組具有 TDE 選項，而且您可將其取代為沒有 TDE 選項的選項群組。
+ 您可以從資料庫快照還原至新的資料庫執行個體，其中沒有包含 TDE 選項的選項群組。如需此案例的詳細資訊，請參閱[選項群組的考量事項](USER_CopySnapshot.md#USER_CopySnapshot.Options)。

### SQL Server 效能考量
<a name="TDE.Perf"></a>

使用透明資料加密會影響 SQL Server 資料庫執行個體的效能。

如果資料庫位在至少有一個已加密資料庫的資料庫執行個體上，則未加密資料庫的效能會降低。因此，建議您將已加密和未加密資料庫保存在獨立的資料庫執行個體上。

# 在 RDS for SQL Server 上加密資料
<a name="TDE.Encrypting"></a>

一旦將 TDE 選項新增至選項群組，Amazon RDS 即會產生在加密程序中使用的憑證。然後，您可以使用憑證執行 SQL 陳述式，將資料庫執行個體上資料庫中的資料加密。

下列範例會使用 RDS 建立的憑證 (稱為 `RDSTDECertificateName`)，來加密稱為 `myDatabase` 的資料庫。

```
 1. ---------- Turning on TDE -------------
 2. 
 3. -- Find an RDS TDE certificate to use
 4. USE [master]
 5. GO
 6. SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%'
 7. GO
 8. 
 9. USE [myDatabase]
10. GO
11. -- Create a database encryption key (DEK) using one of the certificates from the previous step
12. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
13. ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName]
14. GO
15. 
16. -- Turn on encryption for the database
17. ALTER DATABASE [myDatabase] SET ENCRYPTION ON
18. GO
19. 
20. -- Verify that the database is encrypted
21. USE [master]
22. GO
23. SELECT name FROM sys.databases WHERE is_encrypted = 1
24. GO
25. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
26. GO
```

使用 TDE 加密 SQL Server 資料庫需要的時間取決於幾個因素。其中包括資料庫執行個體的大小、執行個體是否使用佈建 IOPS 儲存體、資料的量，以及其他因素。

# 在 RDS for SQL Server 上備份與還原 TDE 憑證
<a name="TDE.BackupRestoreRDS"></a>

RDS for SQL Server 提供預存程序，可供備份、還原與捨棄 TDE 憑證。RDS for SQL Server 也提供一個函數可用於檢視還原的使用者 TDE 憑證。

使用者 TDE 憑證用於將資料庫還原至內部部署且 TDE 已開啟的 RDS for SQL Server。這些憑證的字首為 `UserTDECertificate_`。還原資料庫之後，及使其可供使用之前，RDS 會修改 TDE 已開啟的資料庫，以使用 RDS 產生的 TDE 憑證。這些憑證的字首為 `RDSTDECertificate`。

使用者 TDE 憑證會保留在 RDS for SQL Server 資料庫執行個體上，除非您使用 `rds_drop_tde_certificate` 預存程序放置這些憑證。如需詳細資訊，請參閱[捨棄還原的 TDE 憑證](#TDE.BackupRestoreRDS.Drop)。

您可以使用使用者 TDE 憑證從來源資料庫執行個體還原其他資料庫。要還原的資料庫必須使用相同的 TDE 憑證並開啟 TDE。您不必再次匯入 (還原) 同一個憑證。

**Topics**
+ [先決條件](#TDE.BackupRestoreRDS.Prereqs)
+ [限制](#TDE.Limitations)
+ [備份 TDE 憑證](#TDE.BackupRestoreRDS.Backup)
+ [還原 TDE 憑證](#TDE.BackupRestoreRDS.Restore)
+ [檢視還原的 TDE 憑證](#TDE.BackupRestoreRDS.Show)
+ [捨棄還原的 TDE 憑證](#TDE.BackupRestoreRDS.Drop)

## 先決條件
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

務必先完成下列任務，您才能在 RDS for SQL Server 上備份或還 TDE 憑證。[設定原生備份與還原](SQLServer.Procedural.Importing.Native.Enabling.md) 中描述前三個。

1. 建立 Amazon S3 一般用途儲存貯體或目錄儲存貯體，以存放檔案以進行備份和還原。

   建議您為資料庫備份與 TDE 憑證備份使用個別的儲存貯體。

1. 建立用於備份和還原檔案的 IAM 角色。

   IAM 角色必須是 AWS KMS key的使用者，也是其管理員。

   使用目錄儲存貯體時，除了[手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)具有目錄儲存貯體的 所需的許可之外，不需要額外的許可。

   使用 S3 資源時，除了 所需的許可之外，IAM 角色還需要下列許可[手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)：
   + S3 儲存貯體資源上的 `s3:GetBucketAcl`、`s3:GetBucketLocation` 和 `s3:ListBucket`

1. 將 `SQLSERVER_BACKUP_RESTORE` 選項新增至資料庫執行個體上的選項群組。

   這是 `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) 選項新增的部分。

1. 確定您有對稱加密 KMS 金鑰。您有下列選項：
   + 如果您的帳戶中有現有的 KMS 金鑰，您可以使用它。無需採取進一步動作。
   + 若您的帳戶中並無現有的對稱加密 KMS 金鑰，請藉由遵循《*AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)來建立 KMS 金鑰。

1. 啟用 Amazon S3 整合，在資料庫執行個體與 Amazon S3 之間傳輸檔案。

   如需啟用 Oracle Amazon S3 整合的詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。

   請注意，目錄儲存貯體不支援 S3 整合。只有 需要此步驟[備份與還原內部部署資料庫的 TDE 憑證](TDE.BackupRestoreOnPrem.md)。

## 限制
<a name="TDE.Limitations"></a>

使用預存程序備份和還原 TDE 憑證具有以下限制：
+ `SQLSERVER_BACKUP_RESTORE` 與 `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) 選項必須新增至與資料庫執行個體產生關聯的選項群組。
+ 多可用區域資料庫執行個體不支援 TDE 憑證備份和還原。
+ 不支援取消 TDE 憑證備份和還原任務。
+ 您不能將使用者 TDE 憑證用於 RDS for SQL Server 資料庫執行個體上任何其他資料庫的 TDE 加密。您可以將它用於從 TDE 已啟用且使用相同 TDE 憑證的來源資料庫執行個體中僅還原其他資料庫。
+ 您只能刪除使用者 TDE 憑證。
+ RDS 支援的使用者 TDE 憑證數量上限為 10 個。如果數量超過 10 個，請捨棄未使用的 TDE 憑證，然後再試一次。
+ 憑證名稱不能為空白或為 null。
+ 還原憑證時，憑證名稱不能包含關鍵字 `RDSTDECERTIFICATE`，且開頭必須為 `UserTDECertificate_` 字首。
+ `@certificate_name` 參數只能包含以下字元：a-z、0-9、@、\$1、\$1 和底線 (\$1)。
+ `@certificate_file_s3_arn` 的副檔名必須為 .cer (不區分大小寫)。
+ `@private_key_file_s3_arn` 的副檔名必須為 .pvk (不區分大小寫)。
+ 私有金鑰檔案的 S3 中繼資料必須包含 `x-amz-meta-rds-tde-pwd` 標籤。如需詳細資訊，請參閱[備份與還原內部部署資料庫的 TDE 憑證](TDE.BackupRestoreOnPrem.md)。
+ RDS for SQL Server 不支援使用跨帳戶金鑰搭配 TDE。

## 備份 TDE 憑證
<a name="TDE.BackupRestoreRDS.Backup"></a>

若要備份 TDE 憑證，請使用 `rds_backup_tde_certificate` 預存程序。具有下列語法。

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id',
    [@overwrite_s3_files=0|1];
```

下列是必要參數：
+ `@certificate_name` – 所要備份 TDE 憑證的名稱。
+ `@certificate_file_s3_arn` – Amazon S3 中憑證備份檔案的目的地 Amazon Resource Name (ARN)。
+ `@private_key_file_s3_arn` – 可保護 TDE 憑證的私有金鑰檔案的目的地 S3 ARN。
+ `@kms_password_key_arn` – 用於加密私有金鑰密碼的對稱 KMS 金鑰其 ARN。

以下參數為選用：
+ `@overwrite_s3_files` – 指出在 S3 中是否覆寫現有的憑證與私有金鑰檔案：
  + `0` – 不覆寫現有檔案。此為預設值。

    將 `@overwrite_s3_files` 設為 0 時，如果檔案已存在，則傳回錯誤。
  + `1` – 即使現有檔案不是備份檔案，只要是指定的名稱，就覆寫檔案。

**Example 備份 TDE 憑證**  

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='RDSTDECertificate20211115T185333',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE',
    @overwrite_s3_files=1;
```

## 還原 TDE 憑證
<a name="TDE.BackupRestoreRDS.Restore"></a>

您可以使用 `rds_restore_tde_certificate` 預存程序來還原 (匯入) 使用者 TDE 憑證。具有下列語法。

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';
```

下列是必要參數：
+ `@certificate_name` – 所要還原 TDE 憑證的名稱。名稱必須以 `UserTDECertificate_` 字首開頭。
+ `@certificate_file_s3_arn` – 用於還原 TDE 憑證的備份檔案其 S3 ARN。
+ `@private_key_file_s3_arn` – 待還原的 TDE 憑證其私有金鑰備份檔案的 S3 ARN。
+ `@kms_password_key_arn` – 用於加密私有金鑰密碼的對稱 KMS 金鑰其 ARN。

**Example 還原 TDE 憑證**  

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_myTDEcertificate',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

## 檢視還原的 TDE 憑證
<a name="TDE.BackupRestoreRDS.Show"></a>

您可以使用 `rds_fn_list_user_tde_certificates` 函數來檢視已還原 (已匯入) 的使用者 TDE 憑證。具有下列語法。

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

輸出結果與以下內容相似。並非所有的資料欄均會在此顯示。


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | AnyCompany Shipping | 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af | 0x6BB218B34110388680B FE1BA2D86C695096485B5 | AnyCompany Shipping | 2022-04-05 19:49:45.0000000 | 2023-04-05 19:49:45.0000000 | NULL | 

## 捨棄還原的 TDE 憑證
<a name="TDE.BackupRestoreRDS.Drop"></a>

若要捨棄您未使用的已還原 (已匯入) 使用者 TDE 憑證，請使用 `rds_drop_tde_certificate` 預存程序。具有下列語法。

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

以下是必要參數：
+ `@certificate_name` – 所要捨棄 TDE 憑證的名稱。

您只能捨棄已還原 (已匯入) 的 TDE 憑證。您不能捨棄 RDS 建立的憑證。

**Example 捨棄 TDE 憑證**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# 備份與還原內部部署資料庫的 TDE 憑證
<a name="TDE.BackupRestoreOnPrem"></a>

您可以備份內部部署資料庫的 TDE 憑證，日後再將憑證還原到 RDS for SQL Server。您還可以將 RDS for SQL Server TDE 憑證還原到內部部署資料庫執行個體。

**注意**  
RDS for SQL Server 不支援使用跨帳戶金鑰搭配 TDE。

下列程序會備份 TDE 憑證和私有金鑰。系統會使用從對稱加密 KMS 金鑰產生的資料金鑰來加密私有金鑰。

**備份內部部署 TDE 憑證**

1. 使用 AWS CLI [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html) 命令產生資料金鑰。

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   輸出結果與以下內容相似。

   ```
   {
   "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
   BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
   2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==",
   "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=",
   "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33"
   }
   ```

   您在下一步可以使用純文字輸出作為私有金鑰密碼。

1. 備份 TDE 憑證，如下列範例所示。

   ```
   BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (
   FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk',
   ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
   ```

1. 將憑證備份檔案儲存至 Amazon S3 憑證儲存貯體。

1. 將私有金鑰備份檔案儲存到 S3 憑證儲存貯體，並在檔案的中繼資料中使用以下標籤：
   + 索引鍵 – `x-amz-meta-rds-tde-pwd`
   + 值 – 來自產生資料金鑰的 `CiphertextBlob` 值，如下列範例所示。

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

以下程序會將 RDS for SQL Server TDE 憑證還原至內部部署資料庫執行個體。您可以使用憑證備份、對應的私有金鑰檔案與資料金鑰，在目的地資料庫執行個體上複製與還原 TDE 憑證。還原的憑證由新伺服器的資料庫主要金鑰加密。

**還原 TDE 憑證**

1. 將 TDE 憑證備份檔案和私有金鑰檔案從 Amazon S3 複製到目的地執行個體。如需從 Amazon S3 複製檔案的詳細資訊，請參閱 [在 RDS for SQL Server 與 Amazon S3 之間傳輸檔案](Appendix.SQLServer.Options.S3-integration.using.md)。

1. 使用 KMS 金鑰解密輸出密碼文字，以擷取資料金鑰的純文字。密碼文字位於私有金鑰備份檔案的 S3 中繼資料中。

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   您在下一步可以使用純文字輸出作為私有金鑰密碼。

1. 使用下列 SQL 命令還原 TDE 憑證。

   ```
   CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk',
   DECRYPTION BY PASSWORD = 'plain_text_output');
   ```

如需 KMS 解密的詳細資訊，請參閱 *AWS CLI 命令參考*中 KMS 一節的[解密](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html)。

在目的地資料庫執行個體上還原 TDE 憑證後，您可以使用該憑證還原加密的資料庫。

**注意**  
您可以使用相同的 TDE 憑證來加密來源資料庫執行個體上的多個 SQL Server 資料庫。若要將多個資料庫遷移至目的地執行個體，請僅將與這些資料庫關聯的 TDE 憑證複製到目的地執行個體一次。

# 為 RDS for SQL Server 關閉 TDE
<a name="TDE.Disabling"></a>

若要關閉 RDS for SQL Server 資料庫執行個體的 TDE，首先請確定沒有任何加密的物件留在資料庫執行個體上。若要這麼做，請解密或捨棄這些物件。如果資料庫執行個體中存在加密物件，則您無法關閉資料庫執行個體的 TDE 功能。如果已還原 （匯入） 加密的使用者 TDE 憑證，則應將其捨棄。當您使用主控台從選項群組中移除 TDE 選項時，主控台會顯示它正在處理。此外，如果選項群組與加密資料庫執行個體或資料庫快照有關，則會建立一次錯誤事件。

下列範例會從稱為 `customerDatabase` 的資料庫中移除 TDE 加密。

```
 1. ------------- Removing TDE ----------------
 2. 
 3. USE [customerDatabase]
 4. GO
 5. 
 6. -- Turn off encryption of the database
 7. ALTER DATABASE [customerDatabase]
 8. SET ENCRYPTION OFF
 9. GO
10. 
11. -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while
12. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
13. GO
14. 
15. -- Drop the DEK used for encryption
16. DROP DATABASE ENCRYPTION KEY
17. GO
18. 
19. -- Drop a user TDE certificate if it was restored (imported)
20. EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
21. 
22. -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated
23. USE [master]
24. GO
25. ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE
26. GO
```

所有物件都解密後，會有兩個選擇：

1. 您可以將資料庫執行個體修改為關聯至不具有 TDE 選項的選項群組。

1. 您可以從選項群組中移除 TDE 選項。

# SQL Server 稽核
<a name="Appendix.SQLServer.Options.Audit"></a>

在 Amazon RDS 中，您可以使用內建的 SQL Server 稽核機制來稽核 Microsoft SQL Server資料庫。您可以像在現場部署資料庫伺服器上一樣建立稽核與稽核規格。

RDS 會使用您提供的 IAM 角色，將完成的稽核日誌上傳到 S3 儲存貯體。如果您啟用了保留，RDS 會在設定的期間內將稽核日誌保存於資料庫執行個體上。

如需詳細資訊，請參閱 Microsoft SQL Server 文件中的 [SQL Server 稽核 (資料庫引擎)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine)。

## 使用資料庫活動串流的 SQL Server 稽核
<a name="Appendix.SQLServer.DAS.Audit"></a>

您可以使用 RDS 的資料庫活動串流，整合 SQL Server 稽核事件與 Imperva、McAfee 和 IBM 的資料庫活動監控工具。如需詳細了解以資料庫活動串流稽核 RDS SQL Server，請參閱 [在 Microsoft SQL Server 中進行稽核](DBActivityStreams.md#DBActivityStreams.Overview.SQLServer-auditing) 

**Topics**
+ [使用資料庫活動串流的 SQL Server 稽核](#Appendix.SQLServer.DAS.Audit)
+ [對 SQL Server 稽核的支援。](#Appendix.SQLServer.Options.Audit.Support)
+ [將 SQL Server 稽核新增至資料庫執行個體選項](Appendix.SQLServer.Options.Audit.Adding.md)
+ [使用 SQL Server 稽核](Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications.md)
+ [檢視稽核日誌](Appendix.SQLServer.Options.Audit.AuditRecords.md)
+ [將 SQL Server 稽核與多個可用區執行個體搭配使用](#Appendix.SQLServer.Options.Audit.Multi-AZ)
+ [設定 S3 儲存貯體](Appendix.SQLServer.Options.Audit.S3bucket.md)
+ [手動建立適用於 SQL Server 稽核的IAM 角色](Appendix.SQLServer.Options.Audit.IAM.md)

## 對 SQL Server 稽核的支援。
<a name="Appendix.SQLServer.Options.Audit.Support"></a>

在 Amazon RDS 中，從 SQL Server 2016 開始，SQL Server 的所有版本均支援伺服器層級稽核，企業版還支援資料庫層級稽核。從 SQL Server 2016 (13.x) SP1 開始，所有版本均支援伺服器層級和資料庫層級稽核。如需更多詳細資訊，請參閱 SQL Server 文件中的 [SQL Server 稽核 (資料庫引擎)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine)。

RDS 支援對下列 SQL Server 稽核選項進行設定。


| 選項設定 | 有效值 | 描述 | 
| --- | --- | --- | 
| IAM\$1ROLE\$1ARN | 有效的 Amazon Resource Name (ARN)，格式為 arn:aws:iam::account-id:role/role-name。 | IAM 角色的 ARN，該角色授予對您想要儲存稽核日誌的 S3 儲存貯體的存取權。如需詳細資訊，請參閱 AWS 一般參考 中的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam)。 | 
| S3\$1BUCKET\$1ARN | arn:aws:s3:::amzn-s3-demo-bucket 或 arn:aws:s3:::amzn-s3-demo-bucket/key-prefix 格式的有效 ARN | 您想要儲存稽核日誌的 S3 儲存貯體的 ARN。 | 
| ENABLE\$1COMPRESSION | true 或 false \$1 | 控制稽核日誌壓縮。預設會啟用壓縮 (設定為 true)。 | 
| RETENTION\$1TIME | 0 至 840 | SQL Server 稽核記錄保存於 RDS 執行個體上的保留時間 (以小時計)。預設會停用保留。 | 

# 將 SQL Server 稽核新增至資料庫執行個體選項
<a name="Appendix.SQLServer.Options.Audit.Adding"></a>

啟用 SQL Server稽核需要兩個步驟︰啟用資料庫執行個體上的選項，以及啟用 SQL Server 內的功能。將 SQL Server 稽核選項新增至資料庫執行個體的過程如下︰ 

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 新增和設定所有必要的選項。

1. 將選項群組與資料庫執行個體建立關聯。

新增 SQL Server 稽核 選項後，並不需要重新啟動資料庫執行個體。只要選項群組處於作用中狀態，您就可以建立稽核，並將稽核日誌儲存於 S3 儲存貯體。

**若要在資料庫執行個體的選項群組中新增和設定 SQL Server 稽核**

1. 選擇下列其中一項：
   + 使用現有的選項群組。
   + 建立自訂資料庫選項群組，並使用該選項群組。如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **SQLSERVER\$1AUDIT** 選項新增至選項群組，並進行選項設定。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。
   + 在 **IAM role (IAM 角色)** 中，如果您已經擁有具備所需原則的 IAM 角色，您可以選取該角色。若要建立新的 IAM 角色，請選擇 **Create a New Role (建立新角色)**。如需必要政策的資訊，請參閱 [手動建立適用於 SQL Server 稽核的IAM 角色](Appendix.SQLServer.Options.Audit.IAM.md)。
   + 在 **Select S3 destination (選擇 S3 目的地)** 中，如果您已經有想要使用的 S3 儲存貯體，請選取它。若要建立 S3 儲存貯體，請選擇 **Create a New S3 Bucket (建立新的 S3 儲存貯體)**。
   + 在 **Enable Compression (啟用壓縮)** 中，請勾選此選項，以壓縮稽核檔案。預設會啟用壓縮。若要停用壓縮，請取消勾選 **Enable Compression (啟用壓縮)**。
   + 在 **Audit log retention (稽核日誌保留)** 中，若要將稽核記錄保留在資料庫執行個體上，請選擇此選項。指定以小時計的停留時間。最長的停留時間是 35 天。

1. 將選項群組套用至新的或現有的資料庫執行個體。選擇下列其中一項：
   + 如果您建立了新的資料庫執行個體，在啟動執行個體時套用選項群組。
   + 針對現有的資料庫執行個體，可以修改執行個體，並附加新的選項群組，以套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 修改 SQL Server 稽核選項
<a name="Appendix.SQLServer.Options.Audit.Modifying"></a>

啟用 SQL Server 稽核選項之後，您可以修改設定。如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。

## 從資料庫執行個體選項中移除 SQL Server 稽核
<a name="Appendix.SQLServer.Options.Audit.Removing"></a>

您可以停用稽核，然後刪除該選項，以關閉 SQL Server 稽核功能。

**若要移除稽核**

1. 停用 SQL Server 內的所有稽核設定。若要瞭解稽核執行到哪裡，請查詢 SQL Server 安全目錄檢視。如需詳細資訊，請參閱 SQL Server 文件中的[安全目錄檢視](https://docs.microsoft.com/sql/relational-databases/system-catalog-views/security-catalog-views-transact-sql)。

1. 從資料庫執行個體刪除 SQL Server 稽核選項 選擇下列其中一項：
   + 從資料庫執行個體使用的選項群組中刪除 SQL Server稽核選項。此變更會影響使用同一選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
   + 修改資料庫執行個體，然後選擇一個沒有 SQL Server 稽核選項的選項群組。此一變更只會影響您修改的資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 從資料庫執行個體刪除 SQL Server 稽核選項後，不需要重新啟動執行個體。從 S3 儲存貯體移除不需要的稽核檔案。

# 使用 SQL Server 稽核
<a name="Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications"></a>

您可以使用和控制現場部署資料庫伺服器一樣的方式，控制伺服器稽核、伺服器稽核規格和資料庫稽核規格。

## 建立稽核
<a name="Appendix.SQLServer.Options.Audit.CreateAudits"></a>

您可以使用與現場部署資料庫伺服器相同的方式建立伺服器稽核。如需如何建立伺服器稽核的資訊，請參閱 Microsoft SQL Server 文件中的 [CREATE SERVER AUDIT](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-transact-sql)。

為了避免錯誤，請遵守以下限制︰
+ 切勿超過每部執行個體所支援伺服器稽核的最大數量 ─ 50。
+ 指示 SQL Server 將資料寫到二進位檔案。
+ 伺服器稽核名稱的字首不要使用 `RDS_`。
+ 在 `FILEPATH`，請指定 `D:\rdsdbdata\SQLAudit`。
+ 在 `MAXSIZE` 中，指定介於 2 MB 和50 MB 之間的大小。
+ 不要設定 `MAX_ROLLOVER_FILES` 或 `MAX_FILES`。
+ 如果 SQL Server 無法寫入稽核記錄，請勿設定讓它關閉資料庫執行個體。

## 建立稽核規格
<a name="Appendix.SQLServer.Options.Audit.CreateSpecifications"></a>

您使用與現場部署資料庫伺服器相同的方式建立伺服器稽核規格和資料庫稽核規格。如需建立稽核規格的資訊，請參閱Microsoft SQL Server 文件中的 [CREATE SERVER AUDIT SPECIFICATION](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-specification-transact-sql) 和 [CREATE DATABASE AUDIT SPECIFICATION](https://docs.microsoft.com/sql/t-sql/statements/create-database-audit-specification-transact-sql)。

為了避免錯誤，資料庫稽核規格或伺服器稽核規格名稱中的字首請不要使用 `RDS_`。

# 檢視稽核日誌
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

稽核日誌被儲存於 `D:\rdsdbdata\SQLAudit`。

SQL Server 完成稽核日誌檔案的寫入後 — 當檔案到達大小限制時 —Amazon RDS 會將檔案上傳到 S3 儲存貯體。如果啟用了保留，Amazon RDS 會將檔案移動到保留資料夾內︰`D:\rdsdbdata\SQLAudit\transmitted`。

如需設定保留的相關資訊，請參閱 [將 SQL Server 稽核新增至資料庫執行個體選項](Appendix.SQLServer.Options.Audit.Adding.md)。

稽核記錄會保存在資料庫執行個體上，直到稽核日誌檔案被上傳為止。您可以執行下列命令，以查看稽核記錄。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

您可以使用相同的命令，將篩選器變更為 `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit`，以查看保留資料夾中的稽核記錄。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## 將 SQL Server 稽核與多個可用區執行個體搭配使用
<a name="Appendix.SQLServer.Options.Audit.Multi-AZ"></a>

對於多可用區執行個體，將稽核日誌檔案傳送到 Amazon S3 的程序與單一可用區執行個體類似。不過，還是有一些重要的差異。
+ 資料庫稽核規格物件會被複寫到所有節點。
+ 伺服器稽核與伺服器稽核規格不會複寫到次要節點。反之，您必須手動建立或修改它們。

若要從兩個節點擷取伺服器稽核或伺服器稽核規格︰

1. 在主要節點上建立伺服器稽核或伺服器稽核規格。

1. 容錯移轉到次要節點，同時在次要節點上建立具有相同名稱和 GUID 的伺服器稽核或伺服器稽核規格。使用 `AUDIT_GUID` 參數指定 GUID。

# 設定 S3 儲存貯體
<a name="Appendix.SQLServer.Options.Audit.S3bucket"></a>

稽核日誌檔案會自動從資料庫執行個體上傳到 S3 儲存貯體。下列限制適用於使用為稽核檔案目標的 S3 儲存貯體︰ 
+ 它必須與資料庫執行個體位於相同的 AWS 區域和 AWS 帳戶。
+ 它不可以開放給大眾使用。
+ 儲存貯體擁有者也必須是 IAM 角色擁有者。
+ 您的 IAM 角色必須具有與 S3 儲存貯體伺服器端加密相關聯的客戶自管 KMS 金鑰許可。

用來儲存資料的目標索引鍵遵循此一命名結構描述︰`amzn-s3-demo-bucket/key-prefix/instance-name/audit-name/node_file-name.ext` 

**注意**  
您以 (`S3_BUCKET_ARN`) 選項設定來設定儲存貯體名稱和金鑰前綴的值。

結構描述由下列元素組成︰
+ ***amzn-s3-demo-bucket*** – S3 儲存貯體的名稱。
+ **`key-prefix`** – 您想要使用於稽核日誌的自訂索引鍵字首。
+ **`instance-name`** – Amazon RDS 執行個體的名稱。
+ **`audit-name`** – 稽核的名稱。
+ **`node`** – 節點的識別符，該節點是稽核日誌的來源 (`node1` 或 `node2`)。單一可用區執行個體有一個節點，多可用區執行個體則有兩個複寫節點。這些節點並不是主要和次要節點，因為主要和次要角色會隨著時間而改變。反之，節點識別符只是一個簡單的標籤。
  + **`node1`** – 第一個複寫節點 (單一可用區只有一個節點)。
  + **`node2`** – 第二個複寫節點 (多可用區有兩個節點)。
+ **`file-name`** – 目標檔案名稱。檔案名稱係從 SQL Server 依現狀取得。
+ **`ext`** – 檔案的副檔名 (`zip` 或 `sqlaudit`)：
  + **`zip`** – 如果啟用了壓縮 (預設)。
  + **`sqlaudit`** – 如果停用了壓縮。

# 手動建立適用於 SQL Server 稽核的IAM 角色
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

一般而言，當您建立新的選項時， 會為您AWS 管理主控台建立 IAM 角色和 IAM 信任政策。然而，您可以手動建立新的 IAM 角色，並使用於 SQL Server 稽核，以便使用您可能有的其他要求自訂該角色。若要這麼做，請建立一個 IAM 角色，並委派許可，以便 Amazon RDS 服務可以使用 Amazon S3 儲存貯體。當您建立 IAM 角色時，您需要附加信任和許可政策。信任政策允許 Amazon RDS 擔任此角色。許可政策定義此角色可以執行的動作。如需詳細資訊，請參閱《 *AWSIdentity and Access Management 使用者指南*》中的[建立角色以將許可委派給 AWS服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

您可以使用本節的範例建立您需要的信任關係和許可政策。

以下範例說明 SQL Server Audit 的信任關係。該政策會使用*服務主體* `rds.amazonaws.com`，以允許 RDS 寫入 S3 儲存貯體。「服務委託人」**是用來將許可授予給服務的識別符。當您允許以此種方式存取 `rds.amazonaws.com` 時，就是允許 RDS 代表您執行動作。如需服務委託人的詳細資訊，請參閱 [AWS JSON 政策元素：委託人](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

**Example SQL Server Audit 的信任關係**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Principal": {
	                "Service": "rds.amazonaws.com"
	            },
	            "Action": "sts:AssumeRole"
	        }
	    ]
	}
```

建議您在資源型信任關係中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容金鑰，將服務的許可限定於特定資來源。這是防止[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)最有效的方式。

您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 `aws:SourceArn` 值。在此情況下，當在相同陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 裡的帳户時，兩者必須使用同樣的帳户 ID。
+ 如果您想要跨服務存取單一資源，請使用 `aws:SourceArn`。
+ 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

在信任關係中，請務必使用 `aws:SourceArn` 全域條件內容索引鍵，其中包含存取角色的資源之完整 Amazon 資源名稱 (ARN)。針對 SQL Server Audit，請確認同時包括資料庫選項群組和資料庫執行個體，如以下範例所示。

**Example SQL Server Audit 的全域條件內容索引鍵信任關係**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier",
                        "arn:aws:rds:Region:my_account_ID:og:option_group_name"
                    ]
                }
            }
        }
    ]
}
```

在以下 SQL Server Audit 的許可政策範例中，我們指定了 Amazon S3 儲存貯體的 ARN。您可以使用 ARN 識別您想要授予存取權的特定帳戶、使用者或角色。如需使用 ARN 的詳細資訊，請參閱 [ Amazon 資源名稱 (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。

**Example SQL Server Audit 的許可政策**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Action": "s3:ListAllMyBuckets",
	            "Resource": "*"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:ListBucket",
	                "s3:GetBucketACL",
	                "s3:GetBucketLocation"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:PutObject",
	                "s3:ListMultipartUploadParts",
	                "s3:AbortMultipartUpload"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
	        }
	    ]
	}
```

**注意**  
驗證相同AWS帳戶同時擁有 S3 儲存貯體和 SQL Server 資料庫執行個體時，需要 `s3:ListAllMyBuckets`動作。此動作會列出帳戶中儲存貯體的名稱。  
S3 儲存貯體命名空間是全域的。如果您不小心刪除了儲存貯體，其他使用者可在不同帳戶中建立相同名稱的儲存貯體。然後 SQL Server 稽核資料將會寫入新的儲存貯體。

# 支援 Amazon RDS for SQL Server 中的 SQL Server Analysis Services
<a name="Appendix.SQLServer.Options.SSAS"></a>

Microsoft SQL Server Analysis Services (SSAS) 是 Microsoft 商業智慧 (MSBI) 套件的一部分。SSAS 是安裝在 SQL Server 內的線上分析處理 (OLAP) 和資料採礦工具。您可以使用 SSAS 來分析資料，以協助您做出商業決策。SSAS 與 SQL Server 關聯式資料庫不同，因為 SSAS 是針對商業智慧環境中常見的查詢和計算最佳化。

 您可以在現有或新的資料庫執行個體上開啟 SSAS。它安裝在與資料庫引擎相同的資料庫執行個體上。如需 SSAS 的詳細資訊，請參閱 Microsoft [Analysis Services 文件](https://docs.microsoft.com/en-us/analysis-services)。

Amazon RDS 的下列版本支援 SSAS for SQL Server Standard 和 Enterprise Edition：
+ 表格模式：
  + SQL Server 2019，15.00.4043.16.v1 版和更新版本
  + SQL Server 2017，14.00.3223.3.v1 版和更新版本
  + SQL Server 2016，13.00.5426.0.v1 版和更新版本
+ 多維度模式：
  + SQL Server 2019，15.00.4153.1.v1 版和更新版本
  + SQL Server 2017，14.00.3381.3.v1 版和更新版本
  + SQL Server 2016，13.00.5882.1.v1 版和更新版本

**Contents**
+ [限制](#SSAS.Limitations)
+ [開啟 SSAS](SSAS.Enabling.md)
  + [建立 SSAS 的選項群組。](SSAS.Enabling.md#SSAS.OptionGroup)
  + [將 SSAS 選項新增至選項群組](SSAS.Enabling.md#SSAS.Add)
  + [將選項群組關聯至您的資料庫執行個體](SSAS.Enabling.md#SSAS.Apply)
  + [允許對 VPC 安全群組進行傳入存取](SSAS.Enabling.md#SSAS.InboundRule)
  + [啟用 Amazon S3 整合](SSAS.Enabling.md#SSAS.EnableS3)
+ [在 Amazon RDS 上部署 SSAS 專案](SSAS.Deploy.md)
+ [監視部署任務的狀態](SSAS.Monitor.md)
+ [在 Amazon RDS 上使用 SSAS](SSAS.Use.md)
  + [為 SSAS 設定通過 Windows 驗證的使用者](SSAS.Use.md#SSAS.Use.Auth)
  + [新增網域使用者做為資料庫管理員](SSAS.Use.md#SSAS.Admin)
  + [建立 SSAS Proxy](SSAS.Use.md#SSAS.Use.Proxy)
  + [使用 SQL Server Agent 排程 SSAS 資料庫處理作業](SSAS.Use.md#SSAS.Use.Schedule)
  + [從 Proxy 撤銷 SSAS 存取權](SSAS.Use.md#SSAS.Use.Revoke)
+ [備份 SSAS 資料庫](SSAS.Backup.md)
+ [還原 SSAS 資料庫](SSAS.Restore.md)
  + [將資料庫執行個體還原至指定的時間](SSAS.Restore.md#SSAS.PITR)
+ [變更 SSAS 模式](SSAS.ChangeMode.md)
+ [關閉 SSAS](SSAS.Disable.md)
+ [疑難排解 SSAS 問題](SSAS.Trouble.md)

## 限制
<a name="SSAS.Limitations"></a>

在 RDS for SQL Server 上使用 SSAS 時適用下列限制：
+ RDS for SQL Server 支援在表格或多維度模式下執行 SSAS。如需詳細資訊，請參閱 Microsoft 說明文件中的[比較表格和多維度解決方案](https://docs.microsoft.com/en-us/analysis-services/comparing-tabular-and-multidimensional-solutions-ssas)在微軟檔案中。
+ 一次只能使用一種 SSAS 模式。變更模式之前，請務必刪除所有 SSAS 資料庫。

  如需更多詳細資訊，請參閱 [變更 SSAS 模式](SSAS.ChangeMode.md)。
+ 不支援異地同步備份執行個體。
+ 執行個體必須使用自我管理的 Active Directory 或 AWS Directory Service for Microsoft Active Directory for SSAS 身分驗證。如需更多詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。
+ 使用者不會獲得 SSAS 伺服器系統管理員存取權，但可以獲得資料庫層級的系統管理員存取權。
+ 唯一支援存取 SSAS 的連接埠是 2383。
+ 您無法直接部署專案。我們提供 RDS 預存程序來執行此操作。如需更多詳細資訊，請參閱 [在 Amazon RDS 上部署 SSAS 專案](SSAS.Deploy.md)。
+ 不支援在部署期間進行處理。
+ 不支援使用 .xmla 檔案進行部署。
+ SSAS 專案輸入檔案和資料庫備份輸出檔案只能位於資料庫執行個體的 `D:\S3` 資料夾中。

# 開啟 SSAS
<a name="SSAS.Enabling"></a>

使用下列程序為資料庫執行個體開啟 SSAS：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `SSAS` 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

1. 允許傳入存取 SSAS 監聽器連接埠的 Virtual Private Cloud (VPC) 安全群組。

1. 開啟 Amazon S3 整合。

## 建立 SSAS 的選項群組。
<a name="SSAS.OptionGroup"></a>

使用 AWS 管理主控台或 AWS CLI 來建立對應至您打算使用之 SQL Server 引擎和資料庫執行個體版本的選項群組。

**注意**  
如果現有的選項群組適用於正確的 SQL Server 引擎和版本，則也可以使用。

### 主控台
<a name="SSAS.OptionGroup.Console"></a>

下列主控台程序會建立 SQL Server Standard Edition 2017 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 窗格中，執行下列動作：

   1. 在 **Name** (名稱) 中，輸入您 AWS 帳戶中的唯一選項群組名稱，例如 **ssas-se-2017**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **SSAS option group for SQL Server SE 2017**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **14.00**。

1. 選擇**建立**。

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

下列 CLI 範例會為 SQL Server Standard Edition 2017 建立選項群組。

**建立選項群組**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-option-group \
      --option-group-name ssas-se-2017 \
      --engine-name sqlserver-se \
      --major-engine-version 14.00 \
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

  針對 Windows：

  ```
  aws rds create-option-group ^
      --option-group-name ssas-se-2017 ^
      --engine-name sqlserver-se ^
      --major-engine-version 14.00 ^
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

## 將 SSAS 選項新增至選項群組
<a name="SSAS.Add"></a>

接下來，使用 AWS 管理主控台或 AWS CLI 將 `SSAS` 選項加入至選項群組。

### 主控台
<a name="SSAS.Add.Console"></a>

**新增 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛建立的選項群組。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details (選項詳細資料)** 下，選擇 **SSAS** 做為 **Option name (選項名稱)**。

1. 在 **Option settings (選項設定)** 下，執行下列動作：

   1. 為 **Max memory** (最大記憶體) 輸入範圍 10–80 間的值。

      **Max memory (最大記憶體)** 指定 SSAS 開始更積極釋放記憶體的閾值上限，以便為正在執行的要求以及新的高優先順序要求騰出空間。這個數字是資料庫執行個體總記憶體的百分比。允許的值為 10–80，預設值是 45。

   1. 為 **Mode** (模式) 選擇 SSAS 伺服器模式 **Tabular** (表格) 或 **Multidimensional** (多維度)。

      如果您看不到 **Mode** (模式) 選項設定，表示您的 AWS 區域不支援多維度模式。如需詳細資訊，請參閱 [限制](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations)。

      預設選項為 **Tabular** (表格)。

   1. 針對 **Security groups (安全群組)**，選擇要與選項產生關聯的 VPC 安全群組。
**注意**  
會預先填入存取 SSAS 的連接埠 (2383)。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

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

**新增 SSAS 選項**

1. 使用下列參數建立 JSON 檔案，例如 `ssas-option.json`：
   + `OptionGroupName` – 您先前建立或選擇的選項群組名稱 (在下列範例中是 `ssas-se-2017`)。
   + `Port` – 您用來存取 SSAS 的連接埠。唯一支援的連接埠是 2383。
   + `VpcSecurityGroupMemberships` – RDS 資料庫執行個體的 VPC 安全群組成員資格。
   + `MAX_MEMORY` – SSAS 應開始更積極釋放記憶體的閾值上限，以便為正在執行的要求以及新的高優先順序要求騰出空間。這個數字是資料庫執行個體總記憶體的百分比。允許的值為 10–80，預設值是 45。
   + `MODE` – SSAS 伺服器模式 `Tabular` 或 `Multidimensional`。預設值為 `Tabular`。

     如果您收到錯誤，顯示 `MODE` 選項設定無效，表示您的 AWS 區域不支援多維度模式。如需詳細資訊，請參閱 [限制](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations)。

   以下是含有 SSAS 選項設定的 JSON 檔案範例。

   ```
   {
   "OptionGroupName": "ssas-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSAS",
   	"Port": 2383,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [{"Name":"MAX_MEMORY","Value":"60"},{"Name":"MODE","Value":"Multidimensional"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. 將 `SSAS` 選項新增至選項群組。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssas-option.json \
       --apply-immediately
   ```

   針對 Windows：

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssas-option.json ^
       --apply-immediately
   ```

## 將選項群組關聯至您的資料庫執行個體
<a name="SSAS.Apply"></a>

您可以使用主控台或 CLI 為選項群組與資料庫執行個體建立關聯。

### 主控台
<a name="SSAS.Apply.Console"></a>

將您的選項群組關聯至新的或現有的資料庫執行個體：
+ 對於新的資料庫執行個體，當您啟動執行個體時，將選項群組關聯至資料庫執行個體。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請修改執行個體並與新的選項群組建立關聯。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
**注意**  
如果您使用現有執行個體，則該執行個體必須已有與其相關聯的 Active Directory 網域和 AWS Identity and Access Management (IAM) 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

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

您可以將選項群組關聯至新的或現有的資料庫執行個體。

**注意**  
如果您使用現有執行個體，則該執行個體必須已有與其相關聯的 Active Directory 網域和 IAM 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

**建立使用選項群組的資料庫執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssasinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.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 ssas-se-2017
  ```

  針對 Windows：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssasinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.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 ssas-se-2017
  ```

**修改資料庫執行個體以關聯選項群組**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssasinstance \
      --option-group-name ssas-se-2017 \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssasinstance ^
      --option-group-name ssas-se-2017 ^
      --apply-immediately
  ```

## 允許對 VPC 安全群組進行傳入存取
<a name="SSAS.InboundRule"></a>

在與您的資料庫執行個體相關聯的 VPC 安全群組中，為指定的 SSAS 接聽程式連接埠建立傳入規則。如需設定安全群組的詳細資訊，請參閱[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

## 啟用 Amazon S3 整合
<a name="SSAS.EnableS3"></a>

若要將模型組態檔下載到主機以進行部署，請使用 Amazon S3 整合。如需詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。

# 在 Amazon RDS 上部署 SSAS 專案
<a name="SSAS.Deploy"></a>

在 RDS 上，您無法使用 SQL Server Management Studio (SSMS) 直接部署 SSAS 專案。若要部署專案，請使用 RDS 預存程序。

**注意**  
不支援使用 .xmla 檔案進行部署。

部署專案之前，請確定下列事項：
+ Amazon S3 整合已開啟。如需更多詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。
+ `Processing Option` 組態設定設為 `Do Not Process`。此設定表示部署後不會進行任何處理。
+ 您同時擁有 `myssasproject.asdatabase` 和 `myssasproject.deploymentoptions` 檔案。它們會在您建置 SSAS 專案時自動產生。

**在 RDS 上部署 SSAS 專案**

1. 將 `.asdatabase` (SSAS 模型) 檔案從 S3 儲存貯體下載到資料庫執行個體，如下列範例所示。如需下載參數的詳細資訊，請參閱[將 Amazon S3 儲存貯體中的檔案下載至 SQL Server 資料庫執行個體](Appendix.SQLServer.Options.S3-integration.using.md#Appendix.SQLServer.Options.S3-integration.using.download)。

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

1. 將 `.deploymentoptions` 檔案從 S3 儲存貯體下載到您的資料庫執行個體。

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

1. 部署專案。

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSAS_DEPLOY_PROJECT',
   @file_path='D:\S3\myssasproject.asdatabase';
   ```

# 監視部署任務的狀態
<a name="SSAS.Monitor"></a>

若要追蹤部署 (或下載) 任務的狀態，請呼叫 `rds_fn_task_status` 函數。需要兩個參數。第一個參數不適用於 SSAS，所以應該一律為 `NULL`。第二個參數接受任務 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` | 對於 SSAS，任務可以有下列任務類型： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `database_name` | 不適用於 SSAS 任務。 | 
| `% complete` | 任務的進度 (以百分比表示)。 | 
| `duration (mins)` | 任務所花的時間 (以分鐘為單位)。 | 
| `lifecycle` |  任務的狀態。可能的狀態如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `task_info` | 任務的其他資訊。如果處理期間發生錯誤，此欄包含該錯誤的相關資訊。 如需更多詳細資訊，請參閱 [疑難排解 SSAS 問題](SSAS.Trouble.md)。 | 
| `last_updated` | 上次更新任務狀態的日期和時間。 | 
| `created_at` | 建立任務的日期和時間。 | 
| `S3_object_arn` |  不適用於 SSAS 任務。  | 
| `overwrite_S3_backup_file` | 不適用於 SSAS 任務。 | 
| `KMS_master_key_arn` |  不適用於 SSAS 任務。  | 
| `filepath` |  不適用於 SSAS 任務。  | 
| `overwrite_file` |  不適用於 SSAS 任務。  | 
| `task_metadata` | 與 SSAS 任務相關聯的中繼資料。 | 

# 在 Amazon RDS 上使用 SSAS
<a name="SSAS.Use"></a>

部署 SSAS 專案之後，您可以在 SSMS 上直接處理 OLAP 資料庫。

**在 RDS 上使用 SSAS**

1. 在 SSMS 中，使用 Active Directory 網域的使用者名稱和密碼連線到 SSAS。

1. 展開 **Databases** (資料庫)。新部署的 SSAS 資料庫隨即出現。

1. 找到連線字串，更新使用者名稱和密碼，為來源 SQL 資料庫提供存取權。這是處理 SSAS 物件的必要操作。

   1. 若使用表格模式，請執行下列操作：

      1. 展開 **Connections** (連線) 索引標籤。

      1. 開啟連線物件的內容 (按一下滑鼠右鍵) 選單，然後選擇 **Properties** (屬性)。

      1. 檢查連線字串中的使用者名稱和密碼。

   1. 若使用多維度模式，請執行下列操作：

      1. 展開 **Data Sources** (資料來源 索引標籤)

      1. 開啟資料來源的內容 (按一下滑鼠右鍵) 選單，然後選擇 **Properties** (屬性)。

      1. 檢查連線字串中的使用者名稱和密碼。

1. 開啟您所建立之 SSAS 資料庫的內容 (按一下滑鼠右鍵) 功能表，然後選擇 **Process Database (處理資料庫)**。

   視輸入資料的大小而定，處理作業可能需要幾分鐘才能完成。

**Topics**
+ [為 SSAS 設定通過 Windows 驗證的使用者](#SSAS.Use.Auth)
+ [新增網域使用者做為資料庫管理員](#SSAS.Admin)
+ [建立 SSAS Proxy](#SSAS.Use.Proxy)
+ [使用 SQL Server Agent 排程 SSAS 資料庫處理作業](#SSAS.Use.Schedule)
+ [從 Proxy 撤銷 SSAS 存取權](#SSAS.Use.Revoke)

## 為 SSAS 設定通過 Windows 驗證的使用者
<a name="SSAS.Use.Auth"></a>

主要管理員使用者 (又稱為主要使用者) 可以使用下列程式碼範例，設定通過 Windows 驗證的登入資料，並授予必要的程序許可。這樣做會為網域使用者授予許可，允許執行 SSAS 客戶任務、使用 S3 檔案傳輸程序、建立憑證以及使用 SQL Server Agent Proxy。如需詳細資訊，請參閱[登入資料 (資料庫引擎)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) 和 Microsoft 文件中的[建立 SQL Server 代理程式 Proxy](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 domain user login, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO

-- Create domain user, if it doesn't already exist
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]
GO

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

USE [msdb]
GO
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
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO
```

## 新增網域使用者做為資料庫管理員
<a name="SSAS.Admin"></a>

您可以使用下列方式，將網域使用者新增為 SSAS 資料庫管理員：
+ 資料庫管理員可以使用 SSMS 來建立具有 `admin` 權限的角色，然後將使用者新增至該角色。
+ 您可以使用下列預存程序。

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_ADD_DB_ADMIN_MEMBER',
  @database_name='myssasdb',
  @ssas_role_name='exampleRole',
  @ssas_role_member='domain_name\domain_user_name';
  ```

  下列是必要參數：
  + `@task_type` – MSBI 任務的類型，在此案例中為 `SSAS_ADD_DB_ADMIN_MEMBER`。
  + `@database_name`– 您要授與系統管理員權限的 SSAS 資料庫名稱。
  + `@ssas_role_name` – SSAS 資料庫管理員角色名稱。如果角色不存在，則會建立該角色。
  + `@ssas_role_member` – 您要新增至系統管理員角色的 SSAS 資料庫使用者。

## 建立 SSAS Proxy
<a name="SSAS.Use.Proxy"></a>

需先建立 SSAS 憑證和 SSAS Proxy，才能使用 SQL Server Agent 排程 SSAS 資料庫處理作業。以 Windows 驗證的使用者身分執行這些程序。

**建立 SSAS 憑證**
+ 建立代理的登入資料。若要執行這項操作，您可以使用 SSMS 或下列 SQL 陳述式。

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**注意**  
`IDENTITY` 必須是網域驗證的登入。以網域驗證登入的密碼取代 `mysecret`。

**建立 SSAS Proxy**

1. 使用下面的 SQL 陳述式來建立代理。

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

1. 使用下列 SQL 陳述式可將代理伺服器的存取權授予其他使用者。

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

1. 使用下列 SQL 陳述式來提供 SSAS 子系統 Proxy 的存取權。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   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 排程 SSAS 資料庫處理作業
<a name="SSAS.Use.Schedule"></a>

建立憑證和 Proxy，並授予 SSAS Proxy 的存取權後，就可以建立 SQL Server Agent 任務來排程 SSAS 資料庫處理作業。

**排程 SSAS 資料庫處理作業**
+ 使用 SSMS 或 T-SQL 來建立 SQL Server Agent 任務。下列範例使用 T-SQL。您可以透過 SSMS 或 T-SQL 進一步設定其任務排程。
  + `@command` 參數概述要由 SQL Server Agent 任務執行的 XML for Analysis (XMLA) 命令。此範例設定了 SSAS 多維度資料庫處理作業。
  + `@server` 參數概述 SQL Server Agent 任務的目標 SSAS 伺服器名稱。

    若要在 SQL Server Agent 任務所在的相同 RDS 資料庫執行個體中呼叫 SSAS 服務，請使用 `localhost:2383`。

    若要從 RDS 資料庫執行個體外部呼叫 SSAS 服務，請使用 RDS 端點。如果 RDS 資料庫執行個體是由同一個網域加入，也可以使用 Kerberos Active Directory (AD) 端點 (`your-DB-instance-name.your-AD-domain-name`)。若使用外部資料庫執行個體，請務必正確設定與 RDS 資料庫執行個體相關聯的 VPC 安全群組，以確保安全連線。

  您可以進一步編輯查詢以支援各種 XMLA 作業。SQL Server Agent 任務建立後，可直接修改 T-SQL 查詢或使用 SSMS UI 進行編輯。

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'SSAS_Job', 
      @enabled=1, 
      @notify_level_eventlog=0, 
      @notify_level_email=0, 
      @notify_level_netsend=0, 
      @notify_level_page=0, 
      @delete_level=0, 
      @category_name=N'[Uncategorized (Local)]', 
      @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver 
      @job_name=N'SSAS_Job', 
      @server_name = N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'SSAS_Job', @step_name=N'Process_SSAS_Object', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=1, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'ANALYSISCOMMAND', 
      @command=N'<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
          <Parallel>
              <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" 
                  xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" 
                  xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" 
                  xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" 
                  xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" 
                  xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
                  <Object>
                      <DatabaseID>Your_SSAS_Database_ID</DatabaseID>
                  </Object>
                  <Type>ProcessFull</Type>
                  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
              </Process>
          </Parallel>
      </Batch>', 
      @server=N'localhost:2383', 
      @database_name=N'master', 
      @flags=0, 
      @proxy_name=N'SSAS_Proxy'
  GO
  ```

## 從 Proxy 撤銷 SSAS 存取權
<a name="SSAS.Use.Revoke"></a>

您可以撤銷 SSAS 子系統的存取權，並使用下列預存程序刪除 SSAS Proxy。

**撤銷存取權並刪除代理伺服器**

1. 撤銷子系統存取權。

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

1. 撤銷代理上的授權。

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

1. 刪除代理。

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

# 備份 SSAS 資料庫
<a name="SSAS.Backup"></a>

您只能在資料庫執行個體的 `D:\S3` 資料夾中建立 SSAS 資料庫備份檔案。若要將備份檔案移至 S3 儲存貯體，請使用 Amazon S3。

您可以依照以下方式備份 SSAS 資料庫：
+ 具有特定資料庫 `admin` 角色的網域使用者，可以使用 SSMS 將資料庫備份至 `D:\S3` 資料夾。

  如需更多詳細資訊，請參閱 [新增網域使用者做為資料庫管理員](SSAS.Use.md#SSAS.Admin)。
+ 您可以使用下列預存程序。預存程序不支援加密。

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_BACKUP_DB',
  @database_name='myssasdb',
  @file_path='D:\S3\ssas_db_backup.abf',
  [@ssas_apply_compression=1],
  [@ssas_overwrite_file=1];
  ```

  下列是必要參數：
  + `@task_type` – MSBI 任務的類型，在此案例中為 `SSAS_BACKUP_DB`。
  + `@database_name`– 您要備份之 SSAS 資料庫的名稱。
  + `@file_path`– SSAS 備份檔案的路徑。`.abf` 副檔名為必要項目。

  下列是選用參數：
  + `@ssas_apply_compression` – 是否要套用 SSAS 備份壓縮。有效值為 1 (是) 和 0 (否)。
  + `@ssas_overwrite_file` – 是否覆寫 SSAS 備份檔案。有效值為 1 (是) 和 0 (否)。

# 還原 SSAS 資料庫
<a name="SSAS.Restore"></a>

使用下列預存程序從備份還原 SSAS 資料庫。

如果存在具有相同名稱的現有 SSAS 資料庫，則無法還原資料庫。還原的預存程序不支援加密的備份檔案。

```
exec msdb.dbo.rds_msbi_task
@task_type='SSAS_RESTORE_DB',
@database_name='mynewssasdb',
@file_path='D:\S3\ssas_db_backup.abf';
```

下列是必要參數：
+ `@task_type` – MSBI 任務的類型，在此案例中為 `SSAS_RESTORE_DB`。
+ `@database_name` – 您要還原的新 SSAS 資料庫名稱。
+ `@file_path` – SSAS 備份檔案的路徑。

## 將資料庫執行個體還原至指定的時間
<a name="SSAS.PITR"></a>

時間點復原 (PITR) 不適用於 SSAS 資料庫。如果您執行 PITR，則已還原執行個體只能使用所要求時間之前最後一個快照中的 SSAS 資料。

**在已還原資料庫執行個體上擁有最新的 SSAS 資料庫**

1. 將 SSAS 資料庫備份到來源執行個體上的 `D:\S3` 資料夾。

1. 將備份檔案傳輸到 S3 儲存貯體。

1. 將備份檔案從 S3 儲存貯體傳輸到已還原執行個體上的 `D:\S3` 資料夾。

1. 執行預存程序，將 SSAS 資料庫還原到還原的執行個體。

   您也可以重新處理 SSAS 專案，以還原資料庫。

# 變更 SSAS 模式
<a name="SSAS.ChangeMode"></a>

您可以變更 SSAS 執行的模式 (表格或多維度)。若要變更模式，請使用 AWS 管理主控台 或 AWS CLI 來修改 SSAS 選項中的選項設定。

**重要**  
一次只能使用一種 SSAS 模式。變更模式之前請務必刪除所有 SSAS 資料庫，否則會收到錯誤訊息。

## 主控台
<a name="SSAS.ChangeMode.CON"></a>

以下 Amazon RDS 主控台程序將 SSAS 模式變更為「表格」，並將 `MAX_MEMORY` 參數設為 70%。

**修改 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您想修改具有 `SSAS` 選項的選項群組 (上述範例中的 `ssas-se-2017`)。

1. 選擇 **Modify option** (修改選項)。

1. 變更選項設定：

   1. 為 **Max memory** (最大記憶體) 輸入 **70**。

   1. 為 **Mode** (模式) 選擇**表格**。

1. 選擇 **Modify option** (修改選項)。

## AWS CLI
<a name="SSAS.ChangeMode.CLI"></a>

以下 AWS CLI 範例將 SSAS 模式變更為「表格」，並將 `MAX_MEMORY` 參數設為 70%。

為了讓 CLI 命令正常運作，即使沒有要修改，也務必包含所有必要參數。

**修改 SSAS 選項**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssas-se-2017 \
      --options "OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}]" \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssas-se-2017 ^
      --options OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}] ^
      --apply-immediately
  ```

# 關閉 SSAS
<a name="SSAS.Disable"></a>

若要關閉 SSAS，請從其選項群組中移除 `SSAS` 選項。

**重要**  
移除 `SSAS` 選項之前，請先刪除您的 SSAS 資料庫。  
我們強烈建議您先備份 SSAS 資料庫，然後再刪除它們並移除 `SSAS` 選項。

## 主控台
<a name="SSAS.Disable.Console"></a>

**從選項群組中移除 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您想移除具有 `SSAS` 選項的選項群組 (上述範例中的 `ssas-se-2017`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，選擇 **SSAS** 作為 **Options to delete (要刪除的選項)**。

1. 在 **Apply immediately (立即套用)** 下，選擇 **Yes (是)** 立即刪除選項，或選擇 **No (否)** 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

## AWS CLI
<a name="SSAS.Disable.CLI"></a>

**從選項群組中移除 SSAS 選項**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssas-se-2017 \
      --options SSAS \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssas-se-2017 ^
      --options SSAS ^
      --apply-immediately
  ```

# 疑難排解 SSAS 問題
<a name="SSAS.Trouble"></a>

使用 SSAS 時可能會遇到下列問題。


| 問題 | Type | 故障診斷建議 | 
| --- | --- | --- | 
| 無法設定 SSAS 選項。要求的 SSA 模式為 new\$1mode，但目前的資料庫執行個體具有數目個 current\$1mode 資料庫。先刪除現有資料庫，再切換到 new\$1mode 模式。若要重新取得 current\$1mode 模式的存取權，可以更新目前的資料庫選項群組，或者連接新的選項群組 (SSAS 選項的 MODE 選項設定值使用 %s)。 | RDS 事件 | 如果仍有 SSAS 資料庫使用目前模式，就無法變更 SSAS 模式。刪除 SSAS 資料庫，然後再試一次。 | 
| 無法移除 SSAS 選項，因為有數目個現有的模式資料庫。在刪除所有 SSAS 資料庫之前，無法移除 SSAS 選項。再次新增 SSAS 選項，刪除所有 SSAS 資料庫然後重試。 | RDS 事件 | 如果您仍有 SSAS 資料庫，就無法關閉 SSAS。刪除 SSAS 資料庫，然後再試一次。 | 
| SSAS 選項未啟用，或正在進行啟用作業。請稍後再試。 | RDS 預存程序 | 當選項處於關閉狀態或進行開啟作業時，無法執行 SSAS 預存程序。 | 
| SSAS 選項設定不正確。確認選項群組成員資格狀態為 "in-sync"，並檢閱 RDS 事件日誌中的相關 SSAS 組態錯誤訊息。進行這些調查之後，請再試一次。如果錯誤持續出現，請聯絡 AWS Support。 | RDS 預存程序 |  若選項群組成員資格不處於 `in-sync` 狀態，就無法執行 SSAS 預存程序。這會導致 SSAS 選項處於錯誤的組態狀態。 如果您的選項群組成員資格狀態由於 SSAS 選項修改而變更為 `failed`，可能有兩個原因： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Trouble.html) 重新設定 SSAS 選項，因為 RDS 一次只允許使用一種 SSAS 模式，且不支援在 SSAS 資料庫存在的情況下刪除 SSAS 選項。 檢查 RDS 事件日誌中的 SSAS 執行個體組態錯誤，並視情況解決些問題。  | 
| 部署失敗。變更只能部署在執行 deployment\$1file\$1mode 模式的伺服器上。目前的伺服器模式為 current\$1mode。 | RDS 預存程序 |  無法將表格模式的資料庫部署到多維度模式的伺服器，也不能將多維度模式資料庫部署到表格模式伺服器。 請確認您使用的是模式正確的檔案，然後驗證 `MODE` 選項設定設為適當的值。  | 
| 還原失敗。備份檔案只能在執行 restore\$1file\$1mode 模式的伺服器上還原。目前的伺服器模式為 current\$1mode。 | RDS 預存程序 |  無法將表格模式的資料庫還原到多維度模式的伺服器，也不能將多維度模式資料庫還原到表格模式伺服器。 請確認您使用的是模式正確的檔案，然後驗證 `MODE` 選項設定設為適當的值。  | 
| 還原失敗。備份檔案和 RDS 資料庫執行個體版本不相容。 | RDS 預存程序 |  無法還原與 SQL Server 執行個體版本不相容的 SSAS 資料庫版本。 如需詳細資訊，請參閱 Microsoft 說明文件中的[表格模式的相容性層級](https://docs.microsoft.com/en-us/analysis-services/tabular-models/compatibility-level-for-tabular-models-in-analysis-services)和[多維度資料庫的相容性層級](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/compatibility-level-of-a-multidimensional-database-analysis-services)。  | 
| 還原失敗。還原作業中指定的備份檔案已損毀或非 SSAS 備份檔案。確認 @rds\$1file\$1path 的格式正確。 | RDS 預存程序 |  無法還原具有損毀檔案的 SSAS 資料庫。 請確認檔案未損毀或損壞。 若 `@rds_file_path` 格式不正確 (例如含有雙反斜槓，如 `D:\S3\\incorrect_format.abf` 中所述)，也可能出現此錯誤。  | 
| 還原失敗。還原的資料庫名稱不能包含任何保留字詞或以下無效字元：. , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < >>，長度也不能超過 100 個字元。 | RDS 預存程序 |  還原的資料庫名稱不能包含任何保留字詞，長度也不能超過 100 個字元。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 
| 提供的角色名稱無效。角色名稱不能包含任何保留的字串。 | RDS 預存程序 |  角色名稱不能包含任何保留的字串。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 
| 提供的角色名稱無效。角色名稱不能包含以下任何保留字元：. , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | RDS 預存程序 |  角色名稱不能包含任何保留字元。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 

# 支援 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 資料庫和更新多維度 Cube 資料。

SSIS 專案會組織成儲存為 XML .dtsx 檔案的套件。套件可以包含控制流量和資料流程。您可以使用資料流程來表示 ETL 操作。部署後，套件會儲存在 SSISDB 資料庫中的 SQL Server 中。SSISDB 是在完整復原模式下的線上交易處理 (OLTP) 資料庫。

Amazon RDS for SQL Server 會支援直接在 RDS 資料庫執行個體上執行 SSIS。您可以在現有或新的資料庫執行個體上啟用 SSIS。SSIS 會安裝在與資料庫引擎相同的資料庫執行個體上。

下列版本的 RDS 支援 SSIS for SQL Server Standard 和 Enterprise Edition：
+ 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 代理程式排程 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` 保護模式來建立要在 RDS 上部署的 SSIS 專案 (.ispac) 檔案。
+ SSIS 不支援有讀取複本的 Always On 執行個體。
+ 您無法備份與 `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 Standard Edition 2016 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 視窗中，執行下列動作：

   1. 針對**名稱**，輸入您 AWS 帳戶中唯一的選項群組名稱，例如 **ssis-se-2016**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **SSIS option group for SQL Server SE 2016**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **13.00**。

1. 選擇**建立**。

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

下列程序會建立 SQL Server Standard Edition 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 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛剛建立的選項群組，在這個例子中為 **ssis-se-2016**。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details (選項詳細資料)** 下，選擇 **SSIS** 做為 **Option name (選項名稱)**。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

#### 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>

為對應到 SQL Server 版本和您計畫用於 SSIS 的資料庫執行個體版本的 `clr enabled` 參數來建立或修改參數群組。

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

下列範例會建立 SQL Server Standard Edition 2016 的參數群組。

**建立參數群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇 **Create parameter group (建立參數群組)**。

1. 在 **Create parameter group (建立參數群組)** 窗格中執行下列動作：

   1. 對於 **Parameter group family (參數群組家族)**，請選擇 **sqlserver-se-13.0**。

   1. 對於 **Group name (群組名稱)**，輸入參數群組的識別碼，例如 **ssis-sqlserver-se-13**。

   1. 對於 **Description (說明)**，輸入 **clr enabled parameter group**。

1. 選擇**建立**。

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

下列範例會建立 SQL Server Standard Edition 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 Standard Edition 2016 建立的參數群組。

**修改參數群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇參數群組，例如 **ssis-sqlserver-se-13**。

1. 在 **Parameters** (參數) 下，篩選 **clr** 的參數清單。

1. 選擇 **clr enabled (clr 已啟用)**。

1. 選擇 **Edit parameters** (編輯參數)。

1. 從 **Values (值)** 中選擇 **1**。

1. 選擇**儲存變更**。

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

下列範例會修改您為 SQL Server Standard Edition 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 中具有下列權限：
+ alter on ssis\$1admin role
+ alter on ssis\$1logreader role
+ 變更任何使用者

因為主要使用者是 SQL 驗證的使用者，所以您無法使用主要使用者來執行 SSIS 套件。主要使用者可以使用這些權限來建立新的 SSISDB 使用者，並將它們新增至 ssis\$1admin 和 ssis\$1logreader 角色。這樣做對於授予網域使用者使用 SSIS 的存取權非常有用。

## 為 SSIS 設定 Windows 驗證的使用者
<a name="SSIS.Use.Auth"></a>

主要使用者可以使用下列程式碼範例，在 SSISDB 中設定 Windows 驗證的登入，並授予必要的程序許可。這樣做會授予網域使用者部署和執行 SSIS 套件、使用 S3 檔案傳輸程序、建立登入資料，以及搭配 SQL Server Agent 代理使用的許可。如需詳細資訊，請參閱[登入資料 (資料庫引擎)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) 和 Microsoft 文件中的[建立 SQL Server 代理程式 Proxy](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` 函數。需要兩個參數。第一個參數不適用於 SSIS，所以應該一律為 `NULL`。第二個參數接受任務 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_tw/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 代理程式來加以排程。您必須使用 Windows 驗證的登入來執行 SSIS 套件。如需更多詳細資訊，請參閱 [為 SSIS 設定 Windows 驗證的使用者](SSIS.Permissions.md#SSIS.Use.Auth)。

**Topics**
+ [設定 SSIS 專案的資料庫連線管理員](#SSIS.Use.ConnMgrs)
+ [建立 SSIS 代理](#SSIS.Use.Proxy)
+ [使用 SQL Server 代理程式排程 SSIS 套件](#SSIS.Use.Schedule)
+ [從代理撤銷 SSIS 存取權](#SSIS.Use.Revoke)

## 設定 SSIS 專案的資料庫連線管理員
<a name="SSIS.Use.ConnMgrs"></a>

當您使用連線管理員時，您可以使用下列類型的驗證：
+ 對於使用 AWS 受管 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>

若要能夠使用 SQL Server 代理程式排程 SSIS 套件，請建立 SSIS 登入資料和 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 代理程式排程 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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `SSIS` 選項的選項群組 (上述範例中的 `ssis-se-2016`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，為 **Options to delete (要刪除的選項)** 選擇 **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 目錄。

# Amazon RDS for SQL Server 中的 SQL Server Reporting Services 支援
<a name="Appendix.SQLServer.Options.SSRS"></a>

Server Reporting Services (SSRS) 是以伺服器為基礎的應用程式，用於產生和分發報告。它是 SQL Server 服務套件的一部分，該套件也包含 SQL Server Analysis Services (SSAS) 和 SQL Server Integration Services (SSIS)。SSRS 是以 SQL Server 為基礎而建立的服務。您可以使用它來收集來自各種資料來源的資料，並以易於理解且準備好進行分析的方式呈現。

Amazon RDS for SQL Server 支援直接在 RDS 資料庫執行個體上執行 SSRS。您可以在現有或新的資料庫執行個體上使用 SSRS。

下列版本的 RDS 支援 SSRS for SQL Server Standard 和 Enterprise Edition：
+ SQL Server 2022，所有版本
+ SQL Server 2019，15.00.4043.16.v1 版和更新版本
+ SQL Server 2017，14.00.3223.3.v1 版和更新版本
+ SQL Server 2016，13.00.5820.21.v1 版和更新版本

**Contents**
+ [限制與建議](#SSRS.Limitations)
+ [開啟 SSRS](SSRS.Enabling.md)
  + [為 SSRS 建立選項群組](SSRS.Enabling.md#SSRS.OptionGroup)
  + [將 SSRS 選項新增到您的選項群組](SSRS.Enabling.md#SSRS.Add)
  + [將選項群組與資料庫執行個體建立關聯](SSRS.Enabling.md#SSRS.Apply)
  + [允許對 VPC 安全群組進行傳入存取](SSRS.Enabling.md#SSRS.Inbound)
+ [報告伺服器資料庫](#SSRS.DBs)
+ [SSRS 日誌檔案](#SSRS.Logs)
+ [存取 SSR Web 入口網站](SSRS.Access.md)
  + [在 RDS 上使用 SSL](SSRS.Access.md#SSRS.Access.SSL)
  + [授予網域使用者的存取權](SSRS.Access.md#SSRS.Access.Grant)
  + [存取 Web 入口網站](SSRS.Access.md#SSRS.Access)
+ [部署報告和設定報告資料來源](SSRS.DeployConfig.md)
  + [將報告部署到 SSRS](SSRS.DeployConfig.md#SSRS.Deploy)
  + [設定報告資料來源](SSRS.DeployConfig.md#SSRS.ConfigureDataSource)
+ [使用 SSRS 電子郵件傳送報告](SSRS.Email.md)
+ [撤銷系統層級許可](SSRS.Access.Revoke.md)
+ [監控任務的狀態](SSRS.Monitor.md)
+ [停用和刪除 SSRS 資料庫](SSRS.DisableDelete.md)
  + [關閉 SSRS](SSRS.DisableDelete.md#SSRS.Disable)
  + [刪除 SSRS 資料庫](SSRS.DisableDelete.md#SSRS.Drop)

## 限制與建議
<a name="SSRS.Limitations"></a>

在 RDS for SQL Server 上執行 SSRS 時適用下列限制和建議：
+ 您不能在具有僅供讀取複本的資料庫執行個體上使用 SSRS。
+ 執行個體必須使用自我管理的 Active Directory 或 AWS Directory Service for Microsoft Active Directory for SSRS Web 入口網站和 Web 伺服器身分驗證。如需更多詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。
+ 您無法備份使用 SSRS 選項建立的報告伺服器資料庫。
+ 不支援從 SSRS 的其他執行個體匯入和還原報告伺服器資料庫。如需更多詳細資訊，請參閱 [報告伺服器資料庫](#SSRS.DBs)。
+ 您無法將 SSRS 設定為在預設 SSL 連接埠 (443) 上接聽。允許的數值是 1150–49511，但不包括 1234、1434、3260、3343、3389 和 47001。
+ 不支援透過 Microsoft Windows 檔案共用的訂閱。
+ 不支援使用 Reporting Services Configuration Manager。
+ 不支援建立和修改角色。
+ 不支援修改報表告服器屬性。
+ 不授予系統管理員和系統使用者角色。
+ 您無法透過 Web 入口網站編輯系統層級的角色指派。

# 開啟 SSRS
<a name="SSRS.Enabling"></a>

使用下列程序為資料庫執行個體開啟 SSRS：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `SSRS` 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

1. 對 SSRS 接聽程式連接埠允許 Virtual Private Cloud (VPC) 安全群組的傳入存取。

## 為 SSRS 建立選項群組
<a name="SSRS.OptionGroup"></a>

若要使用 SSRS，請建立對應至您打算使用之 SQL Server 引擎和資料庫執行個體版本的選項群組。若要這樣做，請使用 AWS 管理主控台 或 AWS CLI。

**注意**  
如果現有的選項群組適用於正確的 SQL Server 引擎和版本，則也可以使用。

### 主控台
<a name="SSRS.OptionGroup.Console"></a>

下列程序會建立 SQL Server Standard Edition 2017 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 窗格中，執行下列動作：

   1. 針對**名稱**，輸入在您的 中唯一之選項群組的名稱 AWS 帳戶，例如 **ssrs-se-2017**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **SSRS option group for SQL Server SE 2017**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **14.00**。

1. 選擇**建立**。

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

下列程序會建立 SQL Server Standard Edition 2017 的選項群組。

**建立選項群組**
+ 請執行下列其中一個命令：

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds create-option-group \
    --option-group-name ssrs-se-2017 \
    --engine-name sqlserver-se \
    --major-engine-version 14.00 \
    --option-group-description "SSRS option group for SQL Server SE 2017"
```
在 Windows 中：  

```
aws rds create-option-group ^
    --option-group-name ssrs-se-2017 ^
    --engine-name sqlserver-se ^
    --major-engine-version 14.00 ^
    --option-group-description "SSRS option group for SQL Server SE 2017"
```

## 將 SSRS 選項新增到您的選項群組
<a name="SSRS.Add"></a>

接著，使用 AWS 管理主控台 或 AWS CLI 將 `SSRS` 選項新增至您的選項群組。

### 主控台
<a name="SSRS.Add.CON"></a>

**新增 SSRS 選項**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛才建立的選項群組，然後選擇 **Add option** (新增選項)。

1. 在 **Option details (選項詳細資訊)** 下，選擇 **SSRS** 做為 **Option name (選項名稱)**。

1. 在 **Option settings (選項設定)** 下，執行下列動作：

   1. 輸入 SSRS 服務要接聽的連接埠。預設值為 8443。如需允許值的清單，請參閱[限制與建議](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations)。

   1. 輸入 **Max memory (最大記憶體)** 的數值。

      **Max memory (最大記憶體)** 指定沒有新的記憶體配置請求會授予報告伺服器應用程式的閾值上限。這個數字是資料庫執行個體總記憶體的百分比。允許的數值為 10–80：

   1. 針對 **Security groups (安全群組)**，選擇要與選項產生關聯的 VPC 安全群組。使用與資料庫執行個體相關聯的相同安全群組。

1. 若要使用 SSRS 電子郵件傳送報告，請選擇 **Configure email delivery options** (報告服務中的電子郵件傳送) 中的 **Email delivery in reporting services** (設定電子郵件傳送選項) 核取方塊，然後執行下列動作：

   1. 對於 **Sender email address** (寄件人電子郵件地址)，使用 **From** (從) SSRS 電子郵件傳送的郵件部分，輸入您要使用的電子郵件位址。

      指定具有從 SMTP 伺服器傳送郵件之權限的使用者帳戶。

   1. 對於 **SMTP server** (SMTP 伺服器)，指定要使用的 SMTP 伺服器或閘道。

      它可以是 IP 地址、公司內部網路上電腦的 NetBIOS 名稱，或是完整合格的網域名稱。

   1. 對於 **SMTP port** (SMTP 連接埠)，輸入用來連線至郵件伺服器的連接埠。預設為 25。

   1. 若要使用身分驗證：

      1. 請選取 **Use authentication** (使用身分驗證) 核取方塊。

      1. 針對**機密 Amazon Resource Name (ARN)**，輸入使用者登入資料的 AWS Secrets Manager ARN。

         使用下列格式：

         **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

         例如：

         **arn:aws:secretsmanager:*us-west-2*:*123456789012*:secret:*MySecret-a1b2c3***

         如需建立祕密的詳細資訊，請參閱 [使用 SSRS 電子郵件傳送報告](SSRS.Email.md)。

   1. 選取 **Use Secure Sockets Layer (SSL)** (使用 Secure Sockets Layer (SSL)) 核取方塊，以使用 SSL 加密電子郵件訊息。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

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

**新增 SSRS 選項**

1. 建立 JSON 檔案，例如 `ssrs-option.json`。

   1. 設定下列必要參數：
      + `OptionGroupName` – 您先前建立或選擇的選項群組名稱 (在下列範例中是 `ssrs-se-2017`)。
      + `Port` – SSRS 服務要接聽的連接埠。預設值為 8443。如需允許值的清單，請參閱[限制與建議](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations)。
      + `VpcSecurityGroupMemberships` – RDS 資料庫執行個體的 VPC 安全群組成員資格。
      + `MAX_MEMORY` – 沒有新的記憶體配置請求會授予報告伺服器應用程式的閾值上限。這個數字是資料庫執行個體總記憶體的百分比。允許的數值為 10–80：

   1. (選用) 設定使用 SSRS 電子郵件的下列參數：
      + `SMTP_ENABLE_EMAIL` - 將 `true` 設為使用 SSRS 電子郵件。預設值為 `false`。
      + `SMTP_SENDER_EMAIL_ADDRESS` - SSRS 電子郵件發送訊息時，**From** (從) 欄位使用的電子郵件地址。指定具有從 SMTP 伺服器傳送郵件之權限的使用者帳戶。
      + `SMTP_SERVER` - 使用的 SMTP 伺服器或閘道。可以是 IP 地址、公司內部網路上電腦的 NetBIOS 名稱，或是完整合格的網域名稱。
      + `SMTP_PORT` - 用來連線至郵件伺服器的連接埠。預設為 25。
      + `SMTP_USE_SSL` - 將 `true` 設為使用 SSL 加密電子郵件。預設值為 `true`。
      + `SMTP_EMAIL_CREDENTIALS_SECRET_ARN` - 保存使用者憑證的 Secrets Manager ARN。使用下列格式：

        **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

        如需建立秘密的詳細資訊，請參閱 [使用 SSRS 電子郵件傳送報告](SSRS.Email.md)。
      + `SMTP_USE_ANONYMOUS_AUTHENTICATION` - 如果您不想使用身分驗證，請設定為 `true` 並且不包括 `SMTP_EMAIL_CREDENTIALS_SECRET_ARN`。

        預設為 `false` 當 `SMTP_ENABLE_EMAIL` 時為 `true`。

   下列範例包含使用秘密 ARN 的 SSRS 電子郵件參數。

   ```
   {
   "OptionGroupName": "ssrs-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSRS",
   	"Port": 8443,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [
               {"Name": "MAX_MEMORY","Value": "60"},
               {"Name": "SMTP_ENABLE_EMAIL","Value": "true"}
               {"Name": "SMTP_SENDER_EMAIL_ADDRESS","Value": "nobody@example.com"},
               {"Name": "SMTP_SERVER","Value": "email-smtp.us-west-2.amazonaws.com"},
               {"Name": "SMTP_PORT","Value": "25"},
               {"Name": "SMTP_USE_SSL","Value": "true"},
               {"Name": "SMTP_EMAIL_CREDENTIALS_SECRET_ARN","Value": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3"}
               ]
   	}],
   "ApplyImmediately": true
   }
   ```

1. 將 `SSRS` 選項新增至選項群組。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssrs-option.json \
       --apply-immediately
   ```

   在 Windows 中：

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssrs-option.json ^
       --apply-immediately
   ```

## 將選項群組與資料庫執行個體建立關聯
<a name="SSRS.Apply"></a>

使用 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="SSRS.Apply.Console"></a>

您可以將選項群組與新的或現有的資料庫執行個體建立關聯。
+ 針對新的資料庫執行個體，在啟動執行個體時與選項群組建立關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請修改執行個體並與新的選項群組建立關聯。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

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

您可以將選項群組關聯至新的或現有的資料庫執行個體。

**建立使用選項群組的資料庫執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssrsinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.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 ssrs-se-2017
  ```

  在 Windows 中：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.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 ssrs-se-2017
  ```

**修改資料庫執行個體以使用您的選項群組**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssrsinstance \
      --option-group-name ssrs-se-2017 \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --option-group-name ssrs-se-2017 ^
      --apply-immediately
  ```

## 允許對 VPC 安全群組進行傳入存取
<a name="SSRS.Inbound"></a>

若要允許傳入存取與資料庫執行個體相關聯的 VPC 安全群組，請為指定的 SSRS 接聽程式連接埠建立傳入規則。如需設定安全群組的詳細資訊，請參閱[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

## 報告伺服器資料庫
<a name="SSRS.DBs"></a>

當您的資料庫執行個體與 SSRS 選項相關聯時，會在您的資料庫執行個體上建立兩個新的資料庫：
+ `rdsadmin_ReportServer`
+ `rdsadmin_ReportServerTempDB`

這些資料庫代表 ReportServer 和 ReportServerTempDB 資料庫。SSRS 會將其資料存放在 ReportServer 資料庫中，並將其資料快取在 ReportServerTempDB 資料庫中。如需詳細資訊，請參閱 Microsoft 文件中的[報表伺服器資料庫](https://learn.microsoft.com/en-us/sql/reporting-services/report-server/report-server-database-ssrs-native-mode?view=sql-server-ver15)。

RDS 擁有和管理這些資料庫，因此不允許在其上進行資料庫操作，如 ALTER 和 DROP。不允許存取 `rdsadmin_ReportServerTempDB` 資料庫。然而，您可以在 `rdsadmin_ReportServer` 資料庫上執行讀取操作。

## SSRS 日誌檔案
<a name="SSRS.Logs"></a>

您可以列出、檢視和下載 SSRS 日誌檔案。SSRS 日誌檔案遵循 ReportServerService\$1*timestamp*.log 的命名慣例。這些報表伺服器日誌位於 `D:\rdsdbdata\Log\SSRS` 目錄中。(`D:\rdsdbdata\Log` 目錄也是錯誤日誌和 SQL Server Agent 日誌的父目錄)。如需更多詳細資訊，請參閱 [檢視並列出資料庫日誌檔案](USER_LogAccess.Procedural.Viewing.md)。

若為現有 SSRS 執行個體，可能需要重新啟動 SSRS 服務才能存取報告伺服器日誌。您可更新 `SSRS` 選項重新啟動服務。

如需更多詳細資訊，請參閱 [使用 Amazon RDS for Microsoft SQL Server 日誌](Appendix.SQLServer.CommonDBATasks.Logs.md)。

# 存取 SSR Web 入口網站
<a name="SSRS.Access"></a>

請使用下列程序來存取 SSRS Web 入口網站：

1. 開啟 Secure Sockets Layer (SSL)。

1. 授予網域使用者的存取權。

1. 使用瀏覽器和網域使用者登入資料存取 Web 入口網站。

## 在 RDS 上使用 SSL
<a name="SSRS.Access.SSL"></a>

SSRS 使用 HTTPS SSL 通訊協定進行連線。若要使用此通訊協定，請將 SSL 憑證匯入至用戶端電腦上的 Microsoft Windows 作業系統中。

如需 SSL 憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需在使用 SSL 搭配 MySQL 的詳細資訊，請參閱[對 Microsoft SQL Server 資料庫執行個體使用 SSL](SQLServer.Concepts.General.SSL.Using.md)。

## 授予網域使用者的存取權
<a name="SSRS.Access.Grant"></a>

啟用全新的 SSRS 時，SSRS 中不會有角色指派。為了讓網域使用者或使用者群組存取 Web 入口網站，RDS 會提供預存程序。

**將存取權授予 Web 入口網站上的網域使用者**
+ 請使用下列預存程序。

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_GRANT_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

對於網域使用者或使用者群組，會授予 `RDS_SSRS_ROLE` 系統角色。此角色獲授予下列系統層級的任務：
+ 執行報告
+ 管理任務
+ 管理共用排程
+ 檢視共用排程

也會授予根資料夾上 `Content Manager` 的項目層級角色。

## 存取 Web 入口網站
<a name="SSRS.Access"></a>

`SSRS_GRANT_PORTAL_PERMISSION` 任務順利完成後，您就可以使用網頁瀏覽器存取入口網站。Web 入口網站 URL 具有下列格式。

```
https://rds_endpoint:port/Reports
```

在此格式中，適用以下各項：
+ *`rds_endpoint`* – 您搭配 SSRS 使用之 RDS 資料庫執行個體的端點。

  您可以在資料庫執行個體的 **Connectivity & security (連線與安全)** 標籤上找到端點。如需更多詳細資訊，請參閱 [連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。
+ `port` – 您在 `SSRS` 選項中設定 SSRS 的接聽程式連接埠。

**存取 Web 入口網站**

1. 在瀏覽器中輸入 Web 入口網站 URL。

   ```
   https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/Reports
   ```

1. 使用您獲授予 `SSRS_GRANT_PORTAL_PERMISSION` 任務存取權之網域使用者的登入資料登入。

# 部署報告和設定報告資料來源
<a name="SSRS.DeployConfig"></a>

使用下列程序，將報告部署至 SSRS 並設定報告資料來源：

**Topics**
+ [將報告部署到 SSRS](#SSRS.Deploy)
+ [設定報告資料來源](#SSRS.ConfigureDataSource)

## 將報告部署到 SSRS
<a name="SSRS.Deploy"></a>

您可以存取入口網站之後，就可以將報告部署至該入口網站。您可以使用 Web 入口網站中的「上傳」工具上傳報告，或直接從 [SQL Server 資料工具 (SSDT)](https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt)部署。從 SSDT 部署時，請確定下列事項：
+ 啟動 SSDT 的使用者可以存取 SSRS 入口網站。
+ SSRS 專案屬性中的 `TargetServerURL` 值會設定為 RDS 資料庫執行個體的 HTTPS 端點，並帶有字尾 `ReportServer`，例如：

  ```
  https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/ReportServer
  ```

## 設定報告資料來源
<a name="SSRS.ConfigureDataSource"></a>

將報告部署至 SSRS 之後，您應該設定報告資料來源。設定報告資料來源時，請確保下列事項：
+ 對於加入至 AWS Directory Service for Microsoft Active Directory 的 RDS for SQL Server 資料庫執行個體，請使用完整網域名稱 (FQDN) 做為連線字串的資料來源名稱。例如 `myssrsinstance.corp-ad.example.com`，其中 `myssrsinstance` 是資料庫執行個體名稱，而且 `corp-ad.example.com` 是完整網域名稱。
+ 對於加入至自我管理 Active Directory 的 RDS for SQL Server 資料庫執行個體，請使用 `.` 或 `LocalHost` 做為連線字串的資料來源名稱。

# 使用 SSRS 電子郵件傳送報告
<a name="SSRS.Email"></a>

SSRS 包含 SSRS 電子郵件擴充功能，您可以用來將報告傳送給使用者。

若要設定 SSRS 電子郵件，請使用 `SSRS` 選項設定。如需詳細資訊，請參閱[將 SSRS 選項新增到您的選項群組](SSRS.Enabling.md#SSRS.Add)。

設定 SSRS 電子郵件之後，您可以訂閱報告伺服器上的報告。如需詳細資訊，請參閱 Microsoft 文件中的《[報告服務中的電子郵件傳遞](https://docs.microsoft.com/en-us/sql/reporting-services/subscriptions/e-mail-delivery-in-reporting-services)》。

SSRS 電子郵件AWS Secrets Manager需要與 整合，才能在 RDS 上運作。若要與 Secrets Manager 整合，您需要建立秘密。

**注意**  
如果您稍後變更秘密，則也必須更新 `SSRS` 選項群組中的選項。

**若要建立 SSRS 電子郵件的秘密**

1. 依照《*AWS Secrets Manager 使用者指南*》中[建立秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)的步驟進行。

   1. 針對 **Select secret type (選取秘密類型)**，選擇 **Other type of secrets (其他秘密類型)**。

   1. 對於 **ey/value pairs** (鍵/值對)，輸入下列：
      + **SMTP\$1USERNAME** - 輸入具有從 SMTP 伺服器傳送郵件權限的使用者。
      + **SMTP\$1PASSWORD** - 輸入 SMTP 使用者的密碼。

   1. 對於 **Encryption key** (加密金鑰)，請勿使用預設 AWS KMS key。使用您自己的現有金鑰或建立新的金鑰。

      KMS 金鑰政策必須允許 `kms:Decrypt` 動作，例如：

      ```
      {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": {
              "Service": [
                  "rds.amazonaws.com"
              ]
          },
          "Action": [
              "kms:Decrypt"
          ],
          "Resource": "*"
      }
      ```

1. 請遵循*AWS Secrets Manager使用者指南*中[將許可政策連接至秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)的步驟。權限政策提供 `secretsmanager:GetSecretValue` 動作至 `rds.amazonaws.com` 服務主體。

   建議您使用政策中的 `aws:sourceAccount` 和 `aws:sourceArn` 條件金鑰，保護自己免受*混淆代理人問題*的困擾。使用AWS 帳戶適用於 的 `aws:sourceAccount`和適用於 的選項群組 ARN`aws:sourceArn`。如需詳細資訊，請參閱[防止跨服務混淆代理人問題](cross-service-confused-deputy-prevention.md)。

   以下範例示範許可政策。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [ {
       "Effect" : "Allow",
       "Principal" : {
         "Service" : "rds.amazonaws.com"
       },
       "Action" : "secretsmanager:GetSecretValue",
       "Resource" : "*",
       "Condition" : {
         "StringEquals" : {
           "aws:sourceAccount" : "123456789012"
         },
         "ArnLike" : {
           "aws:sourceArn" : "arn:aws:rds:us-west-2:123456789012:og:ssrs-se-2017"
         }
       }
     } ]
   }
   ```

------

   如需更多範例，請參閱*AWS Secrets Manager《 使用者指南*》中的 [AWSSecrets Manager 的許可政策範例](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html)。

# 撤銷系統層級許可
<a name="SSRS.Access.Revoke"></a>

`RDS_SSRS_ROLE` 系統角色沒有足夠的許可，無法刪除系統層級角色指派。若要從 `RDS_SSRS_ROLE` 中移除使用者或使用者群組，請使用您用來授予角色的相同預存程序，但使用 `SSRS_REVOKE_PORTAL_PERMISSION` 任務類型。

**撤銷 Web 入口網站的網域使用者存取權**
+ 請使用下列預存程序。

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_REVOKE_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

這麼做會將使用者從 `RDS_SSRS_ROLE` 系統角色中刪除。如果使用者擁有 `Content Manager` 項目層級角色，也會從該項目層級角色中刪除該使用者。

# 監控任務的狀態
<a name="SSRS.Monitor"></a>

若要追蹤授予或撤銷任務的狀態，請呼叫 `rds_fn_task_status` 函數。需要兩個參數。第一個參數不適用於 SSAS，所以應該一律為 `NULL`。第二個參數接受任務 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` | 對於 SSRS，任務可以有下列任務類型： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `database_name` | 不適用於 SSRS 任務。 | 
| `% complete` | 任務的進度 (以百分比表示)。 | 
| `duration (mins)` | 任務所花的時間 (以分鐘為單位)。 | 
| `lifecycle` |  任務的狀態。可能的狀態如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `task_info` | 任務的其他資訊。如果處理期間發生錯誤，此欄包含該錯誤的相關資訊。 | 
| `last_updated` | 上次更新任務狀態的日期和時間。 | 
| `created_at` | 建立任務的日期和時間。 | 
| `S3_object_arn` |  不適用於 SSRS 任務。  | 
| `overwrite_S3_backup_file` | 不適用於 SSRS 任務。 | 
| `KMS_master_key_arn` |  不適用於 SSRS 任務。  | 
| `filepath` |  不適用於 SSRS 任務。  | 
| `overwrite_file` |  不適用於 SSRS 任務。  | 
| `task_metadata` | 與 SSRS 任務相關聯的中繼資料。 | 

# 停用和刪除 SSRS 資料庫
<a name="SSRS.DisableDelete"></a>

使用下列程序停用 SSRS 和刪除 SSRS 資料庫：

**Topics**
+ [關閉 SSRS](#SSRS.Disable)
+ [刪除 SSRS 資料庫](#SSRS.Drop)

## 關閉 SSRS
<a name="SSRS.Disable"></a>

若要關閉 SSRS，請從其選項群組中移除 `SSRS` 選項。移除此選項並不會刪除 SSRS 資料庫。如需詳細資訊，請參閱 [刪除 SSRS 資料庫](#SSRS.Drop)。

您可以通過新增回 `SSRS` 選項來再次打開 SSRS。如果您也已刪除 SSRS 資料庫，在相同的資料庫執行個體上重新新增 SSRS 會建立新的報告伺服器資料庫。

### 主控台
<a name="SSRS.Disable.Console"></a>

**從選項群組中移除 SSRS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `SSRS` 選項的選項群組 (上述範例中的 `ssrs-se-2017`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，為 **Options to delete (要刪除的選項)** 選擇 **SSRS**。

1. 在 **Apply immediately (立即套用)** 下，選擇 **Yes (是)** 立即刪除選項，或選擇 **No (否)** 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

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

**從選項群組中移除 SSRS 選項**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssrs-se-2017 \
      --options SSRS \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssrs-se-2017 ^
      --options SSRS ^
      --apply-immediately
  ```

## 刪除 SSRS 資料庫
<a name="SSRS.Drop"></a>

移除 `SSRS` 選項並不會刪除報告伺服器資料庫。若要刪除它們，請使用下列預存程序。

若要刪除報告伺服器資料庫，請務必先移除 `SSRS` 選項。

**刪除 SSRS 資料庫**
+ 請使用下列預存程序。

  ```
  exec msdb.dbo.rds_drop_ssrs_databases
  ```

# RDS for SQL Server 中的 Microsoft Distributed Transaction Coordinator 支援
<a name="Appendix.SQLServer.Options.MSDTC"></a>

*分散式交易*是涉及兩個或多個網路主機的資料庫交易。RDS for SQL Server 支援主機之間的分散式交易，其中單一主機可以是下列其中一項：
+ RDS for SQL Server 資料庫執行個體
+ 內部部署 SQL Server 主機
+ 已安裝 SQL Server 的 Amazon EC2 主機
+ 任何其他具有支援分散式交易之資料庫引擎的 EC2 主機或 RDS 資料庫執行個體

在 RDS 中，自 SQL Server 2012 (11.00.5058.0.v1 版及更新版本) 開始，RDS for SQL Server 的所有版本都支援分散式交易。支援是使用 Microsoft Distributed Transaction Coordinator (MSDTC) 提供。如需 MSDTC 的深入資訊，請參閱 Microsoft 文件中的[分散式交易協調器](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85))。

**Contents**
+ [限制](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [啟用 MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [建立 MSDTC 的選項群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [將 MSDTC 選項新增至選項群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [建立 MSDTC 的參數群組](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [修改 MSDTC 的參數](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [將選項群組和參數群組與資料庫執行個體建立關聯](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [修改 MSDTC 選項](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [使用交易](#Appendix.SQLServer.Options.MSDTC.Using)
  + [使用分散式交易](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [使用 XA 交易](#MSDTC.XA)
  + [使用交易追蹤](#MSDTC.Tracing)
+ [停用 MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [對 RDS for SQL Server 的 MSDTC 進行故障診斷](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## 限制
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

在 RDS for SQL Server 上使用 MSDTC 時適用下列限制：
+ 使用 SQL Server 資料庫鏡像的執行個體不支援 MSDTC。如需詳細資訊，請參閱[交易 - 可用性群組和資料庫鏡像](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-ver15#non-support-for-distributed-transactions)。
+ `in-doubt xact resolution` 參數必須設為 1 或 2。如需詳細資訊，請參閱[修改 MSDTC 的參數](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)。
+ MSDTC 要求所有參與分散式交易的主機皆可使用其主機名稱進行解析。RDS 會自動為加入網域的執行個體維護此功能。不過，對於獨立執行個體，請務必手動設定 DNS 伺服器。
+ SQL Server 2017 14.00.3223.3 版和更新版本以及 SQL Server 2019 支援 Java Database Connectivity (JDBC) XA 交易。
+ 在 RDS 執行個體上不支援依存於用戶端動態連結程式庫 (DLL) 的分散式交易。
+ 不支援使用自訂 XA 動態連結程式庫。

# 啟用 MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

請使用下列程序為您的資料庫執行個體啟用 MSDTC：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `MSDTC` 選項新增至選項群組。

1. 建立新參數群組，或選擇現有參數群組。

1. 修改參數群組，將 `in-doubt xact resolution` 參數設定為 1 或 2。

1. 將選項群組和參數群組與資料庫執行個體建立關聯。

## 建立 MSDTC 的選項群組
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

使用AWS 管理主控台或 AWS CLI 來建立對應至 SQL Server 引擎和資料庫執行個體版本的選項群組。

**注意**  
如果現有的選項群組適用於正確的 SQL Server 引擎和版本，則也可以使用。

### 主控台
<a name="OptionGroup.MSDTC.Console"></a>

下列程序會建立 SQL Server Standard Edition 2016 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 窗格中，執行下列動作：

   1. 在 **Name** (名稱) 中，輸入您 AWS 帳戶中的唯一選項群組名稱，例如 **msdtc-se-2016**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **MSDTC option group for SQL Server SE 2016**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **13.00**。

1. 選擇**建立**。

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

下列 範例會為 SQL Server Standard Edition 2016 建立選項群組。

**建立選項群組**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

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

  在 Windows 中：

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

## 將 MSDTC 選項新增至選項群組
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

接下來，使用 AWS 管理主控台或 AWS CLI 將 `MSDTC` 選項加入至選項群組。

下列選項設定是必要的：
+ **Port (連接埠)** – 您用來存取 MSDTC 的連接埠。允許的數值是 1150–49151，但不包括 1234、1434、3260、3343、3389 和 47001。預設值為 5000。

  確定您要使用的連接埠已在防火牆規則中啟用。此外，請確定在與資料庫執行個體相關聯的安全群組的傳入和傳出規則中已啟用此連接埠。如需更多詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。
+ **Security groups** (安全群組) – RDS 資料庫執行個體的 VPC 或安全群組成員資格。
+ **Authentication (身分驗證類型)** – 主機之間的身分驗證模式。支援下列身分驗證類型：
  + 相互驗證 – RDS 執行個體使用整合式驗證彼此相互驗證。如果選取此選項，與此選項群組相關聯的所有執行個體都必須加入網域。
  + 無 – 主機之間不執行身分驗證。我們不建議您生產環境中使用此模式。
+ **交易日誌 大小** – MSDTC 交易日誌的大小。允許的數值是 4–1024 MB。預設大小為 4 MB。

下列選項設定是選擇性的：
+ **Enable inbound connections (啟用傳入連線)** – 是否允許對與此選項群組相關聯的執行個體進行傳入 MSDTC 連線。
+ **Enable outbound connections (啟用輸出連線)** – 是否允許從此選項群組相關聯的執行個體進行傳出 MSDTC 連線。
+ **Enable XA (啟用 XA)** – 是否允許 XA 交易。如需 XA 通訊協定的詳細資訊，請參閱 [XA 規格](https://publications.opengroup.org/c193)。
+ **Enable SNA LU (啟用 SNA LU)** – 是否允許 SNA LU 通訊協定用於分散式交易。如需 SNA LU 通訊協定支援的詳細資訊，請參閱 Microsoft 文件中的[管理 IBM CICS LU 6.2 交易](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85))。

### 主控台
<a name="Options.MSDTC.Add.Console"></a>

**新增 MSDTC 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛建立的選項群組。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details (選項詳細資訊)** 下，選擇 **MSDTC** 做為 **Option name (選項名稱)**。

1. 在 **Options settings (選項設定)** 下：

   1. 針對 **Port (連接埠)**，輸入存取 MSDTC 的連接埠號碼。預設值為 **5000**。

   1. 針對 **Security groups (安全群組)**，選擇要與選項產生關聯的 VPC 安全群組。

   1. 在 **Authentication type (身分驗證類型)** 中，選擇 **Mutual (相互)** 或 **None (無)**。

   1. 針對 **Transaction log size (交易日誌大小)**，輸入 4–1024 之間的值。預設值為 **4**。

1. 在 **Additional configuration (其他設定)** 下，請執行下列動作：

   1. 針對 **Connections (連線)**，視需要選擇 **Enable inbound connections (啟用傳入連線)** 和 **Enable outbound connections (啟用傳出連線)**。

   1. 針對 **Allowed protocols (允許的通訊協定)**，視需要選擇 **Enable XA (啟用 XA)** 和 **Enable SNA LU (啟用 SNA LU)**。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

   若要新增此選項，不需要重新開機。

### CLI
<a name="Options.MSDTC.Add.CLI"></a>

**新增 MSDTC 選項**

1. 使用下列必要的參數建立 JSON 檔案，例如 `msdtc-option.json`。

   ```
   {
   "OptionGroupName":"msdtc-se-2016",
   "OptionsToInclude": [
   	{
   	"OptionName":"MSDTC",
   	"Port":5000,
   	"VpcSecurityGroupMemberships":["sg-0abcdef123"],
   	"OptionSettings":[{"Name":"AUTHENTICATION","Value":"MUTUAL"},{"Name":"TRANSACTION_LOG_SIZE","Value":"4"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. 將 `MSDTC` 選項新增至選項群組。  
**Example**  

   對於 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   在 Windows 中：

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   不需要重新開機。

## 建立 MSDTC 的參數群組
<a name="MSDTC.CreateParamGroup"></a>

為對應到 SQL Server 版本和資料庫執行個體版本的 `in-doubt xact resolution` 參數建立或修改參數群組。

### 主控台
<a name="CreateParamGroup.MSDTC.Console"></a>

下列範例會建立 SQL Server Standard Edition 2016 的參數群組。

**建立參數群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇 **Create parameter group (建立參數群組)**。

1. 在 **Create parameter group (建立參數群組)** 窗格中執行下列動作：

   1. 對於 **Parameter group family (參數群組家族)**，請選擇 **sqlserver-se-13.0**。

   1. 對於 **Group name (群組名稱)**，輸入參數群組的識別碼，例如 **msdtc-sqlserver-se-13**。

   1. 對於 **Description (說明)**，輸入 **in-doubt xact resolution**。

1. 選擇**建立**。

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

下列範例會建立 SQL Server Standard Edition 2016 的參數群組。

**建立參數群組**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "in-doubt xact resolution"
  ```

  在 Windows 中：

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "in-doubt xact resolution"
  ```

## 修改 MSDTC 的參數
<a name="ModifyParam.MSDTC"></a>

修改參數群組中對應至 SQL Server 版本和資料庫執行個體版本的 `in-doubt xact resolution` 參數。

對於 MSDTC，請將 `in-doubt xact resolution` 參數設定為下列其中一項：
+ `1` – `Presume commit`。任何有疑問的 MSDTC 交易都假設已經遞交。
+ `2` – `Presume abort`。任何有疑問的 MSDTC 交易都假設已停止。

如需詳細資訊，請參閱 Microsoft 文件中的[有疑問的 xact 解析伺服器組態選項](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option)。

### 主控台
<a name="ModifyParam.MSDTC.Console"></a>

下列範例會修改您為 SQL Server Standard Edition 2016 所建立的參數群組。

**修改參數群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇參數群組，例如 **msdtc-sqlserver-se-13**。

1. 在 **Parameters** (參數) 下，篩選 **xact** 的參數清單。

1. 選擇 **in-doubt xact resolution (有疑問的 xact 解析)**。

1. 選擇 **Edit parameters** (編輯參數)。

1. 輸入 **1** 或 **2**。

1. 選擇**儲存變更**。

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

下列範例會修改您為 SQL Server Standard Edition 2016 所建立的參數群組。

**修改參數群組**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

  在 Windows 中：

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

## 將選項群組和參數群組與資料庫執行個體建立關聯
<a name="MSDTC.Apply"></a>

您可以使用AWS 管理主控台或 AWS CLI，將 MSDTC 選項群組和參數群組與資料庫執行個體產生關聯。

### 主控台
<a name="MSDTC.Apply.Console"></a>

您可以將 MSDTC 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。
+ 對於新的資料庫執行個體，請在啟動執行個體時將它們相關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
**注意**  
如果您使用現有資料庫執行個體，則該執行個體必須已具有與其相關聯的 Active Directory 網域和 AWS Identity and Access Management IAM 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需更多詳細資訊，請參閱 [使用具有 RDS for SQL Server 的 AWS 受管 Active Directory](USER_SQLServerWinAuth.md)。

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

您可以將 MSDTC 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。

**注意**  
如果您使用現有已加入網域的資料庫執行個體，則該執行個體必須已具有與其相關聯的 Active Directory 網域和 IAM 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需更多詳細資訊，請參閱 [使用具有 RDS for SQL Server 的 AWS 受管 Active Directory](USER_SQLServerWinAuth.md)。

**使用 MSDTC 選項群組和參數群組建立資料庫執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --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 msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

  在 Windows 中：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --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 msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

**修改資料庫執行個體並建立 MSDTC 選項群組和參數群組的關聯**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

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

  在 Windows 中：

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

## 修改 MSDTC 選項
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

啟用 `MSDTC` 選項後，您可以修改其設定。如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。

**注意**  
MSDTC 選項設定的某些變更需要重新啟動 MSDTC 服務。此需求可能會影響執行中的分散式交易。

## 使用交易
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### 使用分散式交易
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

在 Amazon RDS for SQL Server 中，您執行分散式交易的方式與在內部部署執行的分散式交易相同：
+ 使用 .NET Framework `System.Transactions` 可升級的交易，透過延遲到有需要時再建立交易，可最佳化分散式交易。

  在這種情況下，升級是自動的，而不需要您進行任何干預。如果交易中只有一個資源管理員，則不會執行任何升級。如需隱含交易範圍的詳細資訊，請參閱 Microsoft 文件中的[使用交易範圍實作隱含交易](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope)。

  以下 .NET 實作支援可升級的交易：
  + 自 ADO.NET 2.0 開始，`System.Data.SqlClient` 支援與 SQL Server 進行可升級的交易。如需詳細資訊，請參閱 Microsoft 文件中的[與 SQL Server 的 System.Transactions 整合](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server)。
  + ODP.NET 支援 `System.Transactions`。在 `TransactionsScope` 範圍中對 Oracle 資料庫 11g 版本 1 (11.1 版) 及更新版本開啟的第一個連線會建立本機交易。當開啟第二個連線時，會自動將此交易升級為分散式交易。如需 ODP.NET 中的分散式交易支援的詳細資訊，請參閱 Microsoft 文件中的 [Microsoft Distributed Transaction Coordinator 整合](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) 。
+ 使用 `BEGIN DISTRIBUTED TRANSACTION` 陳述式。如需詳細資訊，請參閱 Microsoft 文件中的 [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) 。

### 使用 XA 交易
<a name="MSDTC.XA"></a>

從 RDS for SQL Server 2017 14.00.3223.3 版開始，您可以使用 JDBC 控制分散式交易。當您在 `MSDTC` 選項中，將 `Enable XA` 選項設定為 `true` 時，RDS 會自動啟用 JDBC 交易，並將 `SqlJDBCXAUser` 角色授與 `guest` 使用者。如此可允許透過 JDBC 執行分佈式交易。如需包含程式碼範例在內的詳細資訊，請參閱 Microsoft 文件中的[認識 XA 交易](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions)。

### 使用交易追蹤
<a name="MSDTC.Tracing"></a>

RDS 支援控制 MSDTC 交易追蹤，以及從 RDS 資料庫執行個體下載追蹤以進行故障診斷。您可以執行下列 RDS 預存程序來控制交易追蹤工作階段。

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

以下是必要參數：
+ `trace_action` – 追蹤動作。其可能是 `START`、`STOP` 或 `STATUS`。

下列是選用參數：
+ `@traceall` – 設定為 1 可追蹤所有分散式交易。預設為 0。
+ `@traceaborted` – 設定為 1 可追蹤已取消的分散式交易。預設為 0。
+ `@tracelong` – 設定為 1 可追蹤長時間執行的分散式交易。預設為 0。

**Example 開始追蹤動作**  
若要開始新的交易追蹤工作階段，請執行下列範例陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
一次只能使用一個交易追蹤工作階段。如果在追蹤工作階段作用中時發出新的追蹤工作階段 `START` 命令，則會傳回錯誤，且使用中的追蹤工作階段會維持不變。

**Example 停止追蹤動作**  
若要停止交易追蹤工作階段，請執行下列陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
此陳述式會停止作用中的交易追蹤工作階段，並將交易追蹤資料儲存至 RDS 資料庫執行個體上的日誌目錄。輸出的第一列包含整體結果，後續幾行指出該操作的詳細資訊。  
以下是成功停止追蹤工作階段的範例。  

```
OK: Trace session has been successfully stopped.
Setting log file to: D:\rdsdbdata\MSDTC\Trace\dtctrace.log
Examining D:\rdsdbdata\MSDTC\Trace\msdtctr.mof for message formats,  8 found.
Searching for TMF files on path: (null)
Logfile D:\rdsdbdata\MSDTC\Trace\dtctrace.log:
 OS version    10.0.14393  (Currently running on 6.2.9200)
 Start Time    <timestamp>
 End Time      <timestamp>
 Timezone is   @tzres.dll,-932 (Bias is 0mins)
 BufferSize            16384 B
 Maximum File Size     10 MB
 Buffers  Written      Not set (Logger may not have been stopped).
 Logger Mode Settings (11000002) ( circular paged
 ProcessorCount         1 
Processing completed   Buffers: 1, Events: 3, EventsLost: 0 :: Format Errors: 0, Unknowns: 3
Event traces dumped to d:\rdsdbdata\Log\msdtc_<timestamp>.log
```
您可以使用詳細資訊來查詢產生之日誌檔案的名稱。如需從 RDS 資料庫執行個體下載日誌檔案的詳細資訊，請參閱 [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。  
追蹤工作階段記錄會在執行個體上保留 35 天。系統會自動刪除任何較舊的追蹤工作階段日誌。

**Example 狀態追蹤動作**  
若要追蹤交易追蹤工作階段的狀態，請執行下列陳述式。  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
此陳述式會將下列項目輸出為結果集不同的列。  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
第一行指出該操作的整體結果：`OK` 或 `ERROR`，加上詳細資訊 (如果適用)。後續各行指出有關追蹤工作階段狀態的詳細資訊：  
+ `SessionStatus` 可為下列其中之一：
  + `Started` 如果追蹤工作階段正在執行中。
  + `Stopped` 如果沒有追蹤工作階段正在執行中。
+ 追蹤工作階段旗標可以是 `True` 或 `False`，取決於其在 `START` 命令中的設定方式。

# 停用 MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

若要停用 SSAS，請將 `MSDTC` 選項從其選項群組中移除。

## 主控台
<a name="Options.MSDTC.Disable.Console"></a>

**將 MSDTC 選項從其選項群組中移除**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `MSDTC` 選項的選項群組 (上述範例中的 `msdtc-se-2016`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，為 **Options to delete (要刪除的選項)** 選擇 **MSDTC**。

1. 在 **Apply immediately (立即套用)** 下，選擇 **Yes (是)** 立即刪除選項，或選擇 **No (否)** 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

## CLI
<a name="Options.MSDTC.Disable.CLI"></a>

**將 MSDTC 選項從其選項群組中移除**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# 對 RDS for SQL Server 的 MSDTC 進行故障診斷
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

在某些情況下，您可能無法在用戶端電腦上執行的 MSDTC 與 RDS for SQL Server 資料庫執行個體上執行的 MSDTC 服務之間建立連線。若是如此，請確定下列事項：
+ 與資料庫執行個體相關聯之安全群組的傳入規則已正確設定。如需更多詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。
+ 您的用戶端電腦設定正確。
+ 您的用戶端電腦上已啟用 MSDTC 防火牆規則。

**設定用戶端電腦**

1. 開啟 **Component Services (元件服務)**。

   或者，在 **Server Manager (伺服器管理員)** 中，選擇 **Tools (工具)**，然後選擇 **Component Services (元件服務)**。

1. 展開 **Component Services (元件服務)**，展開 **Computers (電腦)**，展開 **My Computer (我的電腦)**，然後展開 **分散式交易協調器**。

1. 開啟 **Local DTC (本機 DTC)** 的內容 (按右鍵) 功能表，然後選擇 **Properties (屬性)**。

1. 選擇 **Security (安全)** 標籤。

1. 選擇下列所有項目：
   + **Network DTC Access (網路 DTC 存取)**
   + **Allow Inbound (允許傳入)**
   + **Allow Outbound (允許傳出)**

1. 請確定已選擇正確的身分驗證模式：
   + **Mutual Authentication Required (需要相互驗證)** – 用戶端電腦與參與分散式交易的其他節點加入相同的網域，或是網域之間已設定信任關係。
   + **No Authentication Required (不需要驗證)** – 所有其他情況。

1. 選擇 **OK (確定)** 以儲存變更。

1. 如果系統提示您重新啟動服務，請選擇 **Yes (是)**。

**啟用 MSDTC 防火牆規則**

1. 開啟 Windows 防火牆，然後選擇 **Advanced settings (進階設定)**。

   開啟 **Server Manager (伺服器管理員)**，選擇 **Tools (工具)**，然後選取 **Windows Firewall with Advanced Security (具有進階安全性的 Windows 防火牆)**。
**注意**  
視您的作業系統而定，Windows 防火牆可能稱為 Windows Defender 防火牆。

1. 在左窗格中選擇 **Inbound Rules (傳入規則)**。

1. 啟用下列防火牆規則 (如果尚未啟用)：
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. 關閉 Windows 防火牆。

# 使用 RDS for SQL Server 的 Microsoft SQL Server 資源長
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

Resource Governor 是一種 SQL Server Enterprise Edition 功能，可讓您精確控制執行個體資源。它可讓您設定工作負載如何使用 CPU、記憶體和實體 I/O 資源的特定限制。透過資源長，您可以：
+ 透過管理不同工作負載共用執行個體資源的方式，防止多租戶環境中的資源統一
+ 為不同的使用者和應用程式設定特定資源限制和優先順序，以提供可預測的效能

您可以在現有或新的 RDS for SQL Server 資料庫執行個體上啟用資源長。

資源長使用三個基本概念：
+ **資源集區** - 管理執行個體實體資源 (CPU、記憶體和 I/O) 的容器。您有兩個內建集區 （內部和預設），而且可以建立其他自訂集區。
+ **工作負載群組** - 具有類似特性之資料庫工作階段的容器。每個工作負載群組都屬於資源集區。您有兩個內建工作負載群組 （內部和預設），而且可以建立其他自訂工作負載群組。
+ **分類** - 根據使用者名稱、應用程式名稱、資料庫名稱或主機名稱，決定哪些工作負載群組處理傳入工作階段的程序。

如需 SQL Server 中資源主管功能的其他詳細資訊，請參閱 Microsoft 文件中的[資源主管](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16)。

**Contents**
+ [支援的版本和區域](#ResourceGovernor.SupportedVersions)
+ [限制與建議](#ResourceGovernor.Limitations)
+ [為您的 RDS for SQL Server 執行個體啟用 Microsoft SQL Server 資源長](ResourceGovernor.Enabling.md)
  + [建立 `RESOURCE_GOVERNOR` 的選項群組](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [將 `RESOURCE_GOVERNOR` 選項新增至選項群組](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [將選項群組關聯至您的資料庫執行個體](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [針對 RDS for SQL Server 執行個體使用 Microsoft SQL Server 資源長](ResourceGovernor.Using.md)
  + [管理資源集區](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [建立資源集區](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [變更資源集區](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [捨棄資源集區](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [管理工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [建立工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [修改工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [捨棄工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [建立和註冊分類器函數](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [捨棄分類器函數](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [取消註冊分類器函數](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [重設統計資料](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [資源長組態變更](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [將 TempDB 繫結至資源集區](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [從資源集區取消繫結 TempDB](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [清除資源長](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [多可用區域部署考量](#ResourceGovernor.Considerations)
+ [僅供讀取複本的考量](#ResourceGovernor.ReadReplica)
+ [使用 RDS for SQL Server 執行個體的系統檢視來監控 Microsoft SQL Server 資源長](ResourceGovernor.Monitoring.md)
  + [資源集區執行時間統計資料](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [停用 RDS for SQL Server 執行個體的 Microsoft SQL Server 資源長](ResourceGovernor.Disabling.md)
+ [在 RDS for SQL Server 上設定資源長的最佳實務](ResourceGovernor.BestPractices.md)

## 支援的版本和區域
<a name="ResourceGovernor.SupportedVersions"></a>

在提供 RDS for SQL Server 的所有 AWS 區域 中，Amazon RDS 支援下列 SQL Server 版本的資源長：
+ SQL Server 2022 開發人員和企業版本
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## 限制與建議
<a name="ResourceGovernor.Limitations"></a>

下列限制和建議適用於資源長：
+ 版本和服務限制：
  + 僅適用於 SQL Server Enterprise Edition。
  + 資源管理僅限於 SQL Server 資料庫引擎。不支援 Analysis Services、 Integration Services 和 Reporting Services 的資源主管。
+ 組態限制：
  + 必須對所有組態使用 Amazon RDS 預存程序。
  + 不支援原生 DDL 陳述式和 SQL Server Management Studio GUI 組態。
+ 資源集區參數：
  + `rds_` 不支援以 開頭的集區名稱。
  + 不允許修改內部和預設資源集區。
  + 對於使用者定義的資源集區，不支援下列資源集區參數：
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ 工作負載群組參數：
  + `rds_` 不支援以 開頭的工作負載群組名稱。
  + 不允許修改內部工作負載群組。
  + 對於預設工作負載群組：
    + 只有 `REQUEST_MAX_MEMORY_GRANT_PERCENT` 參數可以修改。
    + 對於預設工作負載群組， `REQUEST_MAX_MEMORY_GRANT_PERCENT` 必須介於 1 到 70 之間。
    + 所有其他參數都已鎖定，無法變更。
  + 使用者定義的工作負載群組允許修改所有參數。
+ 分類器函數限制：
  + 分類器函數會根據指定的條件 （使用者名稱、資料庫、主機或應用程式名稱），將連線路由至自訂工作負載群組。
  + 支援最多兩個具有各自路由條件的使用者定義工作負載群組。
  + 將條件與每個群組中的`AND`條件結合。
  + 每個工作負載群組至少需要一個路由條件。
  + 僅支援上述分類方法。
  + 函數名稱必須以 開頭`rg_classifier_`。
  + 如果沒有條件相符，則預設群組指派。

# 為您的 RDS for SQL Server 執行個體啟用 Microsoft SQL Server 資源長
<a name="ResourceGovernor.Enabling"></a>

將 `RESOURCE_GOVERNOR`選項新增至 RDS for SQL Server 資料庫執行個體，以啟用資源長。請使用下列程序：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `RESOURCE_GOVERNOR` 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

**注意**  
透過選項群組啟用資源長不需要重新啟動。

## 建立 `RESOURCE_GOVERNOR` 的選項群組
<a name="ResourceGovernor.OptionGroup"></a>

若要啟用資源協調人員，請建立選項群組或修改對應至 SQL Server 版本和您計劃使用的資料庫執行個體版本的選項群組。若要完成此程序，請使用 AWS 管理主控台 或 AWS CLI。

### 主控台
<a name="ResourceGovernor.OptionGroup.Console"></a>

使用下列程序建立 SQL Server Enterprise Edition 2022 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 視窗中，執行下列動作：

   1. 針對**名稱**，輸入您 AWS 帳戶中唯一的選項群組名稱，例如 **resource-governor-ee-2022**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **RESOURCE\$1GOVERNOR option group for SQL Server EE 2022**。用於顯示用途的說明。

   1. 針對**引擎**，選擇 **sqlserver-ee**。

   1. 針對**主要引擎版本**，選擇 **16.00**。

1. 選擇**建立**。

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

下列程序會建立 SQL Server Enterprise Edition 2022 的選項群組。

**建立選項群組**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-option-group \
      --option-group-name resource-governor-ee-2022 \
      --engine-name sqlserver-ee \
      --major-engine-version 16.00 \
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

  在 Windows 中：

  ```
  aws rds create-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --engine-name sqlserver-ee ^
      --major-engine-version 16.00 ^
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

## 將 `RESOURCE_GOVERNOR` 選項新增至選項群組
<a name="ResourceGovernor.Add"></a>

接著，使用 AWS 管理主控台 或 AWS CLI 將 `RESOURCE_GOVERNOR` 選項新增至您的選項群組。

### 主控台
<a name="ResourceGovernor.Add.Console"></a>

**新增 RESOURCE\$1GOVERNOR 選項**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 在此範例中，選擇您剛建立的選項群組 **resource-governor-ee-2022**。

1. 選擇 **Add option (新增選項)**。

1. 在**選項詳細資訊**下，選擇**選項名稱**的 **RESOURCE\$1GOVERNOR**。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

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

**新增 `RESOURCE_GOVERNOR` 選項**
+ 將 `RESOURCE_GOVERNOR` 選項新增至選項群組。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options "OptionName=RESOURCE_GOVERNOR" \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds add-option-to-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options "OptionName=RESOURCE_GOVERNOR" ^
      --apply-immediately
  ```

## 將選項群組關聯至您的資料庫執行個體
<a name="ResourceGovernor.Apply"></a>

若要將`RESOURCE_GOVERNOR`選項群組與您的資料庫執行個體建立關聯，請使用 AWS 管理主控台 或 AWS CLI。

### 主控台
<a name="ResourceGovernor.Apply.Console"></a>

若要完成啟用資源長，請將您的`RESOURCE_GOVERNOR`選項群組與新的或現有的資料庫執行個體建立關聯：
+ 對於新的資料庫執行個體，請在啟動執行個體時將它們相關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

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

您可以將`RESOURCE_GOVERNOR`選項群組與新的或現有的資料庫執行個體建立關聯。

**使用`RESOURCE_GOVERNOR`選項群組建立執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserverresourcegovernorinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-ee \
      --engine-version 16.00 \
      --license-model license-included \
      --allocated-storage 100 \
      --master-username admin \
      --master-user-password password \
      --storage-type gp2 \
      --option-group-name resource-governor-ee-2022
  ```

  在 Windows 中：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserverresourcegovernorinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-ee ^
      --engine-version 16.00 ^
      --license-model license-included ^
      --allocated-storage 100 ^
      --master-username admin ^
      --master-user-password password ^
      --storage-type gp2 ^
      --option-group-name resource-governor-ee-2022
  ```

**修改執行個體並關聯 `RESOURCE_GOVERNOR` 選項群組**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestinstance \
      --option-group-name resource-governor-ee-2022 \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestinstance ^
      --option-group-name resource-governor-ee-2022 ^
      --apply-immediately
  ```

# 針對 RDS for SQL Server 執行個體使用 Microsoft SQL Server 資源長
<a name="ResourceGovernor.Using"></a>

將資源長者選項新增至選項群組後，資源長者尚未在資料庫引擎層級處於作用中狀態。若要完全啟用資源決策者，您必須使用 RDS for SQL Server 預存程序來啟用它並建立必要的資源決策者物件。如需詳細資訊，請參閱[連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。

首先，連線至 SQL Server 資料庫，然後呼叫適當的 RDS for SQL Server 預存程序以完成組態。如需連接資料庫的指示，請參閱[連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。

如需如何呼叫每個預存程序的相關指示，請參閱下列主題：

**Topics**
+ [管理資源集區](#ResourceGovernor.ManageResourcePool)
+ [管理工作負載群組](#ResourceGovernor.ManageWorkloadGroups)
+ [建立和註冊分類器函數](#ResourceGovernor.ClassifierFunction)
+ [捨棄分類器函數](#ResourceGovernor.DropClassifier)
+ [取消註冊分類器函數](#ResourceGovernor.DeregisterClassifier)
+ [重設統計資料](#ResourceGovernor.ResetStats)
+ [資源長組態變更](#ResourceGovernor.ConfigChanges)
+ [將 TempDB 繫結至資源集區](#ResourceGovernor.BindTempDB)
+ [從資源集區取消繫結 TempDB](#ResourceGovernor.UnbindTempDB)
+ [清除資源長](#ResourceGovernor.Cleanup)

## 管理資源集區
<a name="ResourceGovernor.ManageResourcePool"></a>

### 建立資源集區
<a name="ResourceGovernor.CreateResourcePool"></a>

在選項群組上啟用資源協調器後，您可以使用 建立自訂資源集區`rds_create_resource_pool`。這些集區可讓您將 CPU、記憶體和 IOPS 的特定百分比分配給不同的工作負載。

**用途**

```
USE [msdb]
EXEC dbo.rds_create_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value
```

下列是必要參數：
+ `@group_name` - 是現有使用者定義工作負載群組的名稱。
+ `@pool_name` - 是資源集區的使用者定義名稱。 *pool\$1name* 是英數字元，最多可達 128 個字元，在資料庫引擎執行個體中必須是唯一的，並且必須符合資料庫識別符的規則。

下列是選用參數：
+ `@MAX_CPU_PERCENT` - 指定資源集區中所有請求在 CPU 爭用時接收的最大平均 CPU 頻寬。 *值*是預設設定為 100 的整數。*值*的允許範圍介於 1 到 100 之間。
+ `@CAP_CPU_PERCENT` - 指定資源集區中所有請求接收的 CPU 頻寬硬性上限。將 CPU 頻寬層級上限限制為與指定值相同。 *值*是預設設定為 100 的整數。*值*的允許範圍為 1 到 100。
+ `@MAX_MEMORY_PERCENT` - 指定此資源集區中請求可使用的查詢工作區記憶體數量上限。 *值*是預設設定為 100 的整數。*值*的允許範圍為 1 到 100。
+ `@MAX_IOPS_PER_VOLUME` - 指定每個磁碟區允許資源集區的最大每秒 I/O 操作數 (IOPS)。*值*的允許範圍是從 0 到 2^31-1 (2，147，483，647)。指定 0 以移除集區的 IOPS 限制。預設值為 0。

**範例**

使用所有預設值建立資源集區的範例：

```
--This creates resource pool 'SalesPool' with all default values
USE [msdb]
EXEC rds_create_resource_pool @pool_name = 'SalesPool';
     
--Apply changes
USE [msdb]
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
     
--Validate configuration
select * from sys.resource_governor_resource_pools
```

使用不同的指定參數建立資源集區的範例：

```
--creates resource pool
USE [msdb]
EXEC dbo.rds_create_resource_pool    
@pool_name='analytics',
@MAX_CPU_PERCENT = 30,
@CAP_CPU_PERCENT = 40,
@MAX_MEMORY_PERCENT = 20;
            
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
    
--Validate configuration
select * from sys.resource_governor_resource_pools
```

### 變更資源集區
<a name="ResourceGovernor.AlterResourcePool"></a>

**用途**

```
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value;
```

下列是必要參數：
+ `@pool_name` - 是現有使用者定義資源集區的名稱。Amazon RDS SQL Server 中不允許變更預設資源集區。

必須指定至少一個選用參數：
+ `@MAX_CPU_PERCENT` - 指定資源集區中所有請求在 CPU 爭用時接收的最大平均 CPU 頻寬。 *值*是預設設定為 100 的整數。*值*的允許範圍為 1 到 100。
+ `@CAP_CPU_PERCENT` - 指定資源集區中所有請求接收的 CPU 頻寬硬性上限。將 CPU 頻寬層級上限限制為與指定值相同。 *值*是預設設定為 100 的整數。*值*的允許範圍為 1 到 100。
+ `@MAX_MEMORY_PERCENT` - 指定此資源集區中請求可使用的查詢工作區記憶體數量上限。 *值*是預設設定為 100 的整數。*值*的允許範圍為 1 到 100。
+ `@MAX_IOPS_PER_VOLUME` - 指定每個磁碟區允許資源集區的最大每秒 I/O 操作數 (IOPS)。*值*的允許範圍是從 0 到 2^31-1 (2，147，483，647)。指定 0 以移除集區的 IOPS 限制。預設值為 0。

**範例**

```
--This alters resource pool
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name='analytics',
    @MAX_CPU_PERCENT = 10,
    @CAP_CPU_PERCENT = 20,
    @MAX_MEMORY_PERCENT = 50;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration.
select * from sys.resource_governor_resource_pools
```

### 捨棄資源集區
<a name="ResourceGovernor.DropResourcePool"></a>

**用途**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

以下是必要參數：
+ `@pool_name` - 是現有使用者定義資源集區的名稱。

**注意**  
SQL Server 中不允許捨棄內部或預設資源集區。

**範例**

```
--This drops resource pool
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name='analytics'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_resource_pools
```

## 管理工作負載群組
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

使用 和 建立和管理`rds_create_workload_group`的工作負載群組，`rds_alter_workload_group`可讓您設定查詢群組的重要性層級、記憶體授權和其他參數。

### 建立工作負載群組
<a name="ResourceGovernor.CreateWorkloadGroup"></a>

**用途**

```
USE [msdb]
EXEC dbo.rds_create_workload_group 
@group_name = value, 
@IMPORTANCE ={ LOW | MEDIUM | HIGH }, 
@REQUEST_MAX_MEMORY_GRANT_PERCENT =value, 
@REQUEST_MAX_CPU_TIME_SEC = value , 
@REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value, 
@MAX_DOP = value, 
@GROUP_MAX_REQUESTS = value, 
@pool_name = value
```

下列是必要參數：
+ `@pool_name` - 是現有使用者定義資源集區的名稱。
+ `@group_name` - 是現有使用者定義工作負載群組的名稱。

下列是選用參數：
+ `@IMPORTANCE` - 指定工作負載群組中請求的相對重要性。預設值為 `MEDIUM`。
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT` - 指定單一請求可從集區取得的最大查詢工作區記憶體數量。 *值*是 所定義資源集區大小的百分比`MAX_MEMORY_PERCENT`。預設值為 25。
+ `@REQUEST_MAX_CPU_TIME_SEC` - 指定批次請求可使用的 CPU 時間上限，以秒為單位。*值*必須為 0 或正整數。*值*的預設設定為 0，這表示無限制。
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC` - 指定查詢可等待查詢工作區記憶體的記憶體授權變成可用的最大時間，以秒為單位。*值*必須為 0 或正整數。*值* 0 的預設設定會根據查詢成本使用內部計算來判斷最長時間。
+ `@MAX_DOP` - 指定平行查詢執行的最大平行處理程度 (`MAXDOP`)。允許*的值*範圍為 0 到 64。*值* 0 的預設設定會使用全域設定。
+ `@GROUP_MAX_REQUESTS` = 指定允許在工作負載群組中同時執行的請求數目上限。 *值*必須為 0 或正整數。*值*的預設設定為 0，並允許無限制的請求。
+ `@pool_name` = 將工作負載群組與 *pool\$1name* 識別的使用者定義資源集區或`default`資源集區建立關聯。如果未提供 *pool\$1name*，工作負載群組會與內建`default`集區相關聯。

**範例**

```
--This creates workload group named 'analytics'
USE msdb;
EXEC dbo.rds_create_workload_group 
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 25, 
    @REQUEST_MAX_CPU_TIME_SEC = 0, 
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 0, 
    @MAX_DOP = 0, 
    @GROUP_MAX_REQUESTS = 0, 
    @pool_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
  
--Validate configuration
select * from sys.resource_governor_workload_groups
```

### 修改工作負載群組
<a name="ResourceGovernor.AlterWorkloadGroup"></a>

**用途**

```
EXEC msdb.dbo.rds_alter_workload_group
    @group_name = value,
    @IMPORTANCE = 'LOW|MEDIUM|HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = value,
    @REQUEST_MAX_CPU_TIME_SEC = value,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value,
    @MAX_DOP = value,
    @GROUP_MAX_REQUESTS = value,
    @pool_name = value
```

下列是必要參數：
+ `@group_name` - 是預設或現有使用者定義工作負載群組的名稱。

**注意**  
僅支援變更預設工作負載群組上的`REQUEST_MAX_MEMORY_GRANT_PERCENT`參數。對於預設工作負載群組， `REQUEST_MAX_MEMORY_GRANT_PERCENT` 必須介於 1 到 70 之間。無法在預設工作負載群組中修改其他參數。您可以在使用者定義的工作負載群組中修改所有參數。

下列是選用參數：
+ `@IMPORTANCE` - 指定工作負載群組中請求的相對重要性。預設值為 MEDIUM。
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT` - 指定單一請求可從集區取得的最大查詢工作區記憶體數量。 *值*是 所定義資源集區大小的百分比`MAX_MEMORY_PERCENT`。預設值為 25。在 Amazon RDS 上， `REQUEST_MAX_MEMORY_GRANT_PERCENT` 必須介於 1 到 70 之間。
+ `@REQUEST_MAX_CPU_TIME_SEC` - 指定批次請求可使用的 CPU 時間上限，以秒為單位。*值*必須為 0 或正整數。*值*的預設設定為 0，這表示無限制。
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC` - 指定查詢可以等待來自查詢工作區記憶體的記憶體授權變成可用的最長時間，以秒為單位。*值*必須為 0 或正整數。*值* 0 的預設設定會根據查詢成本使用內部計算來判斷最長時間。
+ `@MAX_DOP` - 指定平行查詢執行的最大平行處理程度 (MAXDOP)。*值*的允許範圍為 0 到 64。*值* 0 的預設設定使用全域設定。
+ `@GROUP_MAX_REQUESTS` - 指定允許在工作負載群組中同時執行的請求數目上限。 *值*必須為 0 或正整數。*值*的預設設定為 0，並允許無限制的請求。
+ `@pool_name` - 將工作負載群組與 *pool\$1name* 識別的使用者定義資源集區建立關聯。

**範例**

修改預設工作負載群組變更 REQUEST\$1MAX\$1MEMORY\$1GRANT\$1PERCENT 的範例：

```
--Modify default workload group (set memory grant cap to 10%)
USE msdb
EXEC dbo.rds_alter_workload_group    
    @group_name = 'default',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT=10;
    
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
SELECT * FROM sys.resource_governor_workload_groups WHERE name='default';
```

修改非預設工作負載群組的範例：

```
EXEC msdb.dbo.rds_alter_workload_group    
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 30,
    @REQUEST_MAX_CPU_TIME_SEC = 3600,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 60,
    @MAX_DOP = 4,
    @GROUP_MAX_REQUESTS = 100;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

將非預設工作負載群組移至另一個資源集區的範例：

```
EXEC msdb.dbo.rds_alter_workload_group    
@group_name = 'analytics',
@pool_name='abc'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

### 捨棄工作負載群組
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**用途**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

下列是必要參數：
+ `@group_name` - 是現有使用者定義工作負載群組的名稱。

**範例**

```
--Drops a Workload Group:
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

## 建立和註冊分類器函數
<a name="ResourceGovernor.ClassifierFunction"></a>

此程序會在主資料庫中建立資源協調人員分類器函數，根據指定的條件 （使用者名稱、資料庫、主機或應用程式名稱） 將連線路由至自訂工作負載群組。如果資源協調器已啟用，且在資源協調器組態中指定分類器函數，則函數輸出會決定用於新工作階段的工作負載群組。如果沒有分類器函數，所有工作階段都會分類為 `default`群組。

**功能：**
+ 支援最多兩個具有各自路由條件的工作負載群組。
+ 將條件與每個群組中的`AND`條件結合。
+ 每個工作負載群組至少需要一個路由條件。
+ 函數名稱必須以 開頭`rg_classifier_`。
+ 如果沒有條件相符，則預設群組指派。

分類器函數具有下列特性和行為：
+ 函數是在伺服器範圍 （在主資料庫中） 中定義。
+ 函數是以結構描述繫結來定義。
+ 即使啟用連線集區，也會針對每個新工作階段評估函數。
+ 函數會傳回工作階段的工作負載群組內容。工作階段會指派給分類器在工作階段生命週期內傳回的工作負載群組。
+ 如果函數傳回 NULL、預設或不存在工作負載群組的名稱，則會為工作階段提供預設工作負載群組內容。如果函數因任何原因失敗，也會提供工作階段預設內容。
+ 您可以建立多個分類器函數。不過，SQL Server 一次僅允許註冊一個分類器函數。
+ 除非使用將函數名稱設定為 NULL 的取消註冊程序 (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) 移除其分類器狀態，或使用 (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`) 註冊另一個分類器函數，否則無法捨棄分類器函數
+ 如果沒有分類器函數，所有工作階段都會分類為預設群組。
+ 在資源決策者組態中參考分類器函數時，您無法修改該函數。不過，您可以修改組態以使用不同的分類器函數。如果您想要變更分類器，請考慮建立一對分類器函數。例如，您可以建立 `rg_classifier_a`和 `rg_classifier_b`。

**用途**

```
EXEC msdb.dbo.rds_create_classifier_function 
@function_name = value,
@workload_group1 = value, 
@user_name1 = value,
@db_name1 = value,
@host_name1 = value, 
@app_name1 = value, 
@workload_group2 = value,
@user_name2 = value,
@db_name2 = value,
@host_name2 = value,
@app_name2 = value
```

下列是必要參數：
+ `@function_name` - 分類器函數的名稱。必須以 開頭 `rg_classifier_`
+ `@workload_group1` - 第一個工作負載群組的名稱

下列是選用參數：

（群組 1 必須指定至少其中一個條件）
+ `@user_name1` - 群組 1 的登入名稱
+ `@db_name1` - 群組 1 的資料庫名稱
+ `@host_name1` - 群組 1 的主機名稱
+ `@app_name1` - 群組 1 的應用程式名稱

（如果指定群組 2，必須至少提供一個條件）
+ `@workload_group2` - 第二個工作負載群組的名稱
+ `@user_name2` - 群組 2 的登入名稱
+ `@db_name2` - 群組 2 的資料庫名稱
+ `@host_name2` - 群組 2 的主機名稱
+ `@app_name2` - 群組 2 的應用程式名稱

**注意**  
系統帳戶、資料庫、應用程式和主機受到限制。

**範例**

一個工作負載群組的基本範例：

```
/*Create a classifier to route all requests from 'PowerBI' app to workload group 
'reporting_group'*/

EXEC msdb.dbo.rds_create_classifier_function
@function_name = 'rg_classifier_a',
@workload_group1 = 'reporting_group',
@app_name1 = 'PowerBI';

--Register the classifier
EXEC msdb.dbo.rds_alter_resource_governor_configuration
@classifier_function = 'rg_classifier_a';

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration

/*Query sys.resource_governor_configuration to validate that resource governor is enabled and is using the classifier function we created and registered*/

use master
go
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name,
       OBJECT_NAME(classifier_function_id) AS classifier_object_name,
       is_enabled
FROM sys.resource_governor_configuration;
```

## 捨棄分類器函數
<a name="ResourceGovernor.DropClassifier"></a>

**用途**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

以下是必要參數：
+ `@function_name` - 是現有使用者定義分類器函數的名稱

**範例**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## 取消註冊分類器函數
<a name="ResourceGovernor.DeregisterClassifier"></a>

使用此程序取消註冊分類器函數。取消註冊函數後，新的工作階段會自動指派給預設工作負載群組。

**用途**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

若要取消註冊，需要下列參數：
+ `@deregister_function` 必須是 1

**範例**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## 重設統計資料
<a name="ResourceGovernor.ResetStats"></a>

資源長統計資料是自上次伺服器重新啟動後累積的。如果您需要從特定時間開始收集統計資料，您可以使用下列 Amazon RDS 預存程序重設統計資料。

**用途**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

對於重設統計資料，需要以下參數：
+ `@reset_statistics` 必須是 1

## 資源長組態變更
<a name="ResourceGovernor.ConfigChanges"></a>

未啟用資源總代理程式時， `rds_alter_resource_governor_configuration`會啟用資源總代理程式。啟用資源長有下列結果：
+ 如果有分類器函數，則會針對新工作階段執行，將它們指派給工作負載群組。
+ 系統會遵守並強制執行資源總署組態中指定的資源限制。
+ 系統會遵守並強制執行資源總署組態中指定的資源限制。
+ 啟用資源長之前存在的請求可能會受到啟用資源長時所做的任何組態變更的影響。
+ 在啟用資源長之前，現有的請求可能會受到啟用資源長時所做的任何組態變更的影響。
+ 在 RDS for SQL Server 上，`EXEC msdb.dbo.rds_alter_resource_governor_configuration`必須執行 ，才能使任何資源決策者組態變更生效。

**用途**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## 將 TempDB 繫結至資源集區
<a name="ResourceGovernor.BindTempDB"></a>

您可以使用 Amazon RDS SQL Server 2019 版及更高版本`rds_bind_tempdb_metadata_to_resource_pool`中的 ，將 tempdb 記憶體最佳化中繼資料繫結至特定資源集區。

**注意**  
必須先啟用記憶體最佳化的 tempdb 中繼資料功能，才能將 tempdb 中繼資料繫結至資源集區。若要在 Amazon RDS 上啟用此功能，其為靜態參數 `tempdb metadata memory-optimized`。

在 Amazon RDS 上啟用靜態參數，並在不容錯移轉的情況下執行重新啟動，讓參數生效：

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name test-sqlserver-ee-2022 \
    --parameters "ParameterName='tempdb metadata memory-optimized',ParameterValue=True,ApplyMethod=pending-reboot"
```

**用途**

```
USE [msdb]
EXEC dbo.rds_bind_tempdb_metadata_to_resource_pool  
@pool_name=value;
```

以下是必要參數：
+ `@pool_name` - 是現有使用者定義資源集區的名稱。

**注意**  
即使已啟用記憶體最佳化的 TempDB 中繼資料功能，此變更也需要在沒有容錯移轉的情況下重新啟動 sql 服務才能生效。

## 從資源集區取消繫結 TempDB
<a name="ResourceGovernor.UnbindTempDB"></a>

從資源集區取消綁定 tempdb 記憶體最佳化中繼資料。

**注意**  
此變更也需要重新啟動 sql 服務而不容錯移轉，才能生效

**用途**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## 清除資源長
<a name="ResourceGovernor.Cleanup"></a>

此程序是在您從選項群組移除資源總代理程式選項之後，清除所有相關聯的物件。這會停用資源協調器、將預設工作負載群組還原為預設設定、移除自訂工作負載群組、資源集區和分類器函數。

**主要功能**
+ 將預設工作負載群組還原為預設設定
+ 停用資源長
+ 移除自訂工作負載群組
+ 移除自訂資源集區
+ 捨棄分類器函數
+ 如果啟用，移除 tempdb 資源集區繫結

**重要**  
如果工作負載群組上有作用中的工作階段，則此清除可能會發生錯誤。根據您的業務需求，等待作用中工作階段完成或終止作用中工作階段。建議在維護時段執行此操作。  
如果資源集區繫結至 tempdb 且尚未進行容錯移轉重新啟動，則此清除可能會發生錯誤。如果您將資源集區繫結至 tempdb，或從 tempdb 取消繫結資源集區，請執行重新啟動而不容錯移轉，讓變更生效。建議在維護時段執行此操作。

**用途**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```

## 多可用區域部署考量
<a name="ResourceGovernor.Considerations"></a>

RDS for SQL Server 會將資源長複寫到多可用區部署中的次要執行個體。您可以驗證上次與次要執行個體同步修改和新資源總管的時間。

使用下列查詢來檢查複寫`last_sync_time`的 ：

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

在查詢結果中，如果同步時間超過資源長更新或建立時間，則資源長會與次要同步。

若要執行手動資料庫容錯移轉以確認資源總管複寫，請等待 `last_sync_time` 先更新。然後，繼續進行多可用區域容錯移轉。

## 僅供讀取複本的考量
<a name="ResourceGovernor.ReadReplica"></a>
+ 對於與來源資料庫執行個體位於相同區域中的 SQL Server 複本，請使用與來源相同的選項群組。選項群組的變更會立即傳播至複本，無論其維護時段為何。
+ 當您建立 SQL Server 跨區域複本時，RDS 會為其建立專用選項群組。
+ 您無法從專用選項群組中移除 SQL Server 跨區域複本。其他資料庫執行個體都不能使用 SQL Server 跨區域複本的專用選項群組。
+ 資源長選項是未複寫的選項。您可以從專用選項群組新增或移除下列非複寫選項：
+ 當您提升 SQL Server 跨區域僅供讀取複本時，提升的複本就像其他 SQL Server 資料庫執行個體一樣運作，包括管理其選項。

**注意**  
在僅供讀取複本上使用 Resource Governor 時，您必須手動確保在將選項新增至選項群組之後，已在僅供讀取複本上使用 Amazon RDS 預存程序設定資源 Governor。資源管理員組態不會自動複寫至僅供讀取複本。此外，僅供讀取複本上的工作負載通常與主要執行個體不同。因此，建議您根據您的工作負載和執行個體類型，在複本上套用資源組態。您可以在僅供讀取複本上獨立執行這些 Amazon RDS 預存程序，以在僅供讀取複本上設定資源長。

# 使用 RDS for SQL Server 執行個體的系統檢視來監控 Microsoft SQL Server 資源長
<a name="ResourceGovernor.Monitoring"></a>

資源管理員統計資料是自上次伺服器重新啟動後累積的。如果您需要從特定時間開始收集統計資料，您可以使用下列 Amazon RDS 預存程序重設統計資料：

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

## 資源集區執行時間統計資料
<a name="ResourceGovernor.ResourcePoolStats"></a>

針對每個資源集區，資源局會追蹤 CPU 和記憶體使用率、out-of-memory事件、記憶體授權、I/O 和其他統計資料。如需詳細資訊，請參閱 [ sys.dm\$1resource\$1governor\$1resource\$1pools](https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-resource-governor-resource-pools-transact-sql?view=sql-server-ver17)。

下列查詢會傳回所有資源集區的可用統計資料子集：

```
SELECT rp.pool_id,
       rp.name AS resource_pool_name,
       wg.workload_group_count,
       rp.statistics_start_time,
       rp.total_cpu_usage_ms,
       rp.target_memory_kb,
       rp.used_memory_kb,
       rp.out_of_memory_count,
       rp.active_memgrant_count,
       rp.total_memgrant_count,
       rp.total_memgrant_timeout_count,
       rp.read_io_completed_total,
       rp.write_io_completed_total,
       rp.read_bytes_total,
       rp.write_bytes_total,
       rp.read_io_stall_total_ms,
       rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
            SELECT COUNT(1) AS workload_group_count
            FROM sys.dm_resource_governor_workload_groups AS wg
            WHERE wg.pool_id = rp.pool_id
            ) AS wg;
```

# 停用 RDS for SQL Server 執行個體的 Microsoft SQL Server 資源長
<a name="ResourceGovernor.Disabling"></a>

當您在 RDS for SQL Server 上停用資源長時，服務會停止管理工作負載資源。在您停用資源長之前，請檢閱這如何影響您的資料庫連線和組態。

停用資源長有下列結果：
+ 開啟新連線時，不會執行分類器函數。
+ 新的連線會自動分類為預設工作負載群組。
+ 所有現有的工作負載群組和資源集區設定都會重設為其預設值。
+ 達到限制時不會觸發任何事件。
+ 您可以進行資源長組態變更，但變更在資源長啟用之前不會生效。

若要停用資源長，請從其`RESOURCE_GOVERNOR`選項群組中移除 選項。

## 主控台
<a name="ResourceGovernor.Disabling.Console"></a>

下列程序會移除 `RESOURCE_GOVERNOR` 選項。

**從選項群組中移除 RESOURCE\$1GOVERNOR 選項**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `RESOURCE_GOVERNOR` 選項的選項群組 (上述範例中的 `resource-governor-ee-2022`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在**刪除選項**下，為**要刪除的選項**選擇 **RESOURCE\$1GOVERNOR**。

1. 在 **Apply immediately** (立即套用) 下，選擇 **Yes** (是) 立即刪除選項，或選擇 **No** (否) 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

## CLI
<a name="ResourceGovernor.Disabling.CLI"></a>

下列程序會移除 `RESOURCE_GOVERNOR` 選項。

**從選項群組中移除 RESOURCE\$1GOVERNOR 選項**
+ 請執行下列其中一個命令：  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options RESOURCE_GOVERNOR \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options RESOURCE_GOVERNOR ^
      --apply-immediately
  ```

# 在 RDS for SQL Server 上設定資源長的最佳實務
<a name="ResourceGovernor.BestPractices"></a>

為了控制資源消耗，RDS for SQL Server 支援 Microsoft SQL Server 資源長。下列最佳實務可協助您避免常見的組態問題，並最佳化資料庫效能。

1. 資源長組態會存放在 `master` 資料庫中。建議您一律分別儲存資源總長組態指令碼的副本。

1. 分類器函數會延長登入處理時間，因此建議避免分類器中的複雜邏輯。過於複雜的函數可能會導致登入延遲或連線逾時，包括 Amazon RDS 自動化工作階段。這可能會影響 Amazon RDS 自動化監控執行個體運作狀態的能力。因此，在生產環境實作 之前，一律建議在生產前環境中測試分類器函數。

1. 避免在工作負載群組`REQUEST_MAX_MEMORY_GRANT_PERCENT`中為 設定高值 （超過 70)，因為這可能會阻止資料庫執行個體為其他並行查詢配置足夠的記憶體，進而可能導致記憶體授予逾時錯誤 （錯誤 8645)。相反地，將此值設定為太低 （小於 1) 或設為 0 可能會阻止需要記憶體工作區的查詢 （例如涉及排序或雜湊操作的查詢） 在使用者定義的工作負載群組中正確執行。RDS 會在預設工作負載群組上將值限制在 1 到 70 之間，以強制執行這些限制。

1. 對於將 tempdb 繫結至資源集區，在將記憶體最佳化的 tempdb 中繼資料繫結至集區之後，集區可能會達到其最大設定，而使用 的任何查詢`tempdb`可能會因為out-of-memory錯誤而失敗。在某些情況下，如果發生out-of-memory錯誤，SQL Server 可能會停止。若要降低發生這種情況的機率，請將記憶體集區的 `MAX_MEMORY_PERCENT`設定為高值。