

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

# Microsoft SQL Server on Amazon RDS 的其他功能
<a name="User.SQLServer.AdditionalFeatures"></a>

在下列章節中，您可以找到執行 Microsoft SQL Server 資料庫引擎擴增 Amazon RDS 執行個體的相關資訊。

**Topics**
+ [在 RDS for SQL Server 上使用密碼政策進行 SQL Server 登入](SQLServer.Concepts.General.PasswordPolicy.Using.md)
+ [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)
+ [在 Amazon RDS for SQL Server 上使用 Database Mail](SQLServer.DBMail.md)
+ [執行個體存放區支援 Amazon RDS for SQL Server 上的 tempdb 資料庫](SQLServer.InstanceStore.md)
+ [搭配 Amazon RDS for Microsoft SQL Server 使用擴充事件](SQLServer.ExtendedEvents.md)
+ [使用 RDS for SQL Server 存取交易日誌備份](USER.SQLServer.AddlFeat.TransactionLogAccess.md)

# 在 RDS for SQL Server 上使用密碼政策進行 SQL Server 登入
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS 可讓您為執行 Microsoft SQL Server 的 Amazon RDS 資料庫執行個體設定密碼政策。採用此做法，為使用 SQL Server 驗證對您的資料庫執行個體進行身分驗證的登入設定複雜性、長度和鎖定需求。

## 重要用語
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**登入**  
在 SQL Server 中，可以向資料庫執行個體進行身分驗證的伺服器層級主體稱為**登入**。其他資料庫引擎可能會將此主體稱為*使用者*。在 RDS for SQL Server 中，登入可以使用 SQL Server 驗證或 Windows 驗證進行身分驗證。

**SQL Server 登入**  
使用 SQL Server 驗證以使用者名稱和密碼進行身分驗證的登入，是 SQL Server 登入。您透過資料庫參數設定的密碼政策，僅適用於 SQL Server 登入。

**Windows 登入**  
以 Windows 主體為基礎，並使用 Windows 驗證進行身分驗證的登入，是 Windows 登入。您可以在 Active Directory 中為 Windows 登入設定密碼政策。如需詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

## 啟用和停用每次登入的政策
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 每次 SQL Server 登入都會有 `CHECK_POLICY` 和 `CHECK_EXPIRATION` 的旗標。依預設會建立新的登入，並將 `CHECK_POLICY` 設定為 `ON`，`CHECK_EXPIRATION` 設定為 `OFF`。

如果為登入啟用了 `CHECK_POLICY`，RDS for SQL Server 將會根據複雜性和長度下限需求驗證密碼。鎖定政策也適用。啟用 `CHECK_POLICY` 和 `CHECK_EXPIRATION` 的範例 T-SQL 陳述式：

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

如果啟用了 `CHECK_EXPIRATION`，密碼將會受限於密碼使用期限政策。檢查是否設定了 `CHECK_POLICY` 和 `CHECK_EXPIRATION` 的 T-SQL 陳述式：

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## 密碼政策參數
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

所有密碼政策參數都是動態的，無須將資料庫重新開機即可生效。下表列出您可以設定哪些資料庫參數來修改 SQL Server 登入的密碼政策：


****  

| 資料庫參數 | 描述 | 允許值 | 預設值 | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | 建立或變更 SQL Server 登入的密碼時，必須符合密碼複雜性需求。必須符合下列限制條件：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | SQL Server 登入的密碼中所需的字元數下限。 | 0-14 | 0 | 
| rds.password\$1min\$1age | 使用者在能夠變更 SQL Server 登入密碼之前必須使用密碼的天數下限。設定為 0 時，可立即變更密碼。 | 0-998 | 0 | 
| rds.password\$1max\$1age | 使用者在必須變更 SQL Server 登入密碼之前可使用密碼的天數上限。設定為 0 時，密碼永遠不會過期。 | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | 導致 SQL Server 登入遭到鎖定的連續登入失敗嘗試次數。 | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | 鎖定的 SQL Server 登入在解除鎖定之前必須等待的分鐘數。 | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | 在失敗的登入嘗試之後，失敗登入嘗試計數器重設為 0 之前必須經過的分鐘數。 | 1-60 | 10 | 

**注意**  
如需 SQL Server 密碼政策的詳細資訊，請參閱[密碼政策](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy)。  
密碼複雜性和長度下限政策也適用於自主資料庫中的資料庫使用者。如需詳細資訊，請參閱[自主資料庫](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases)。

下列限制條件適用於密碼政策參數：
+ `rds.password_min_age` 參數必須小於 `rds.password_max_age parameter`，除非 `rds.password_max_age` 設定為 0
+ `rds.password_lockout_reset_counter_after` 參數必須小於或等於 `rds.password_lockout_duration` 參數。
+ 如果 `rds.password_lockout_threshold` 設定為 0，則不適用 `rds.password_lockout_duration` 和 `rds.password_lockout_reset_counter_after`。

### 現有登入的考量
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

在執行個體上修改密碼政策後，**不會**根據新的密碼複雜性和長度需求回溯評估現有的登入密碼。只有新密碼會根據新政策進行驗證。

SQL Server **會**評估現有密碼的使用期限需求。

修改密碼政策後，密碼可能會立即過期。例如，如果登入已啟用 `CHECK_EXPIRATION`，且其密碼上次變更是在 100 天前，而您將 `rds.password_max_age` 參數設定為 5 天，則密碼會立即過期，登入必須在下次嘗試登入時變更密碼。

**注意**  
RDS for SQL Server 不支援密碼歷史記錄政策。歷史記錄政策可防止登入重複使用先前使用的密碼。

### 多可用區域部署考量
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

多可用區域執行個體的失敗登入嘗試計數器和鎖定狀態不會在節點間複寫。若登入在多可用區執行個體容錯移轉時遭到鎖定，該登入在新節點上有可能已解除鎖定。

# 主要登入的密碼考量
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

當您建立 RDS for SQL Server 資料庫執行個體時，並不會根據密碼政策來評估主要使用者密碼。在對主要使用者執行操作時 (特別是在 `ModifyDBInstance` 命令中設定 `MasterUserPassword` 時)，也不會根據密碼評估新的主要密碼。在這兩種情況下，您都可以為主要使用者設定不符合密碼政策的密碼，且操作仍會成功。不符合政策時，RDS 會嘗試引發 RDS 事件，並建議設定強式密碼。請注意，強式密碼只應對主要使用者使用。

當主要使用者密碼不符合密碼政策需求時，RDS 會嘗試產生下列事件訊息：
+ 主要使用者已建立，但密碼不符合密碼政策的長度下限需求。考慮使用更嚴格的密碼。
+ 主要使用者已建立，但密碼不符合密碼政策的複雜性需求。考慮使用更嚴格的密碼。
+ 主要使用者密碼已重設，但密碼不符合密碼政策的長度下限需求。考慮使用更嚴格的密碼。
+ 主要使用者密碼已重設，但密碼不符合密碼政策的複雜性需求。考慮使用更嚴格的密碼。

根據預設，建立主要使用者時會將 `CHECK_POLICY` 和 `CHECK_EXPIRATION` 設定為 `OFF`。若要將密碼政策套用至主要使用者，您必須在建立資料庫執行個體後手動為主要使用者啟用這些旗標。啟用這些旗標後，請直接在 SQL Server 中修改主要使用者密碼 (例如，透過 T-SQL 陳述式或 SSMS)，以根據密碼政策驗證新密碼。

**注意**  
如果主要使用者遭到鎖定，您可以使用 `ModifyDBInstance` 命令重設主要使用者密碼，將使用者解除鎖定。

## 修改主要使用者密碼
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

您可以使用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 命令修改主要使用者密碼。

**注意**  
當您重設主要使用者密碼時，RDS 會重設主要使用者的各種許可，而主要使用者可能會失去特定許可。重設主要使用者密碼也會將主要使用者解除鎖定 (如果遭到鎖定)。

RDS 驗證新的主要使用者密碼，並在密碼不符合政策時嘗試發出 RDS 事件。即使密碼不符合密碼政策，RDS 也會設定密碼。

# 整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

您可以在執行 Amazon RDS for SQL Server 的資料庫執行個體與 Amazon S3 儲存貯體之間傳輸檔案。這樣做可讓您搭配 SQL Server 功能來使用 Amazon S3，例如 BULK INSERT。例如，您可以從 Amazon S3 將 .csv、.xml、.txt 和其他檔案下載至資料庫執行個體主機，並將 `D:\S3\` 中的資料匯入資料庫。所有檔案都存放在資料庫執行個體的 `D:\S3\` 中。

有下列限制：

**注意**  
RDS 主機與 S3 之間的流量會透過 RDS 內部 VPC 端點進行路由，用於所有使用 S3 的 SQL Server 功能。此流量不使用 RDS 執行個體端點 ENI。S3 儲存貯體政策無法用網路條件來限制 RDS 流量。
+ 在多可用區域執行個體上進行容錯移轉後，會刪除待命複本上 `D:\S3` 資料夾中的檔案。如需詳細資訊，請參閱[S3 整合的多可用區域限制](#S3-MAZ)。
+ 資料庫執行個體和 S3 儲存貯體必須位於相同的 AWS 區域。
+ 如果您一次執行多個 S3 整合任務，這些任務會循序執行，而不是並行執行。
**注意**  
S3 整合任務與原生備份和還原任務有相同的佇列。不論何時，此佇列中最多只能有兩個任務在進行。因此，兩個執行中的原生備份和還原任務會封鎖任何 S3 整合任務。
+ 在已還原的執行個體上，您必須重新啟用 S3 整合功能。S3 整合不會從來源執行個體傳播到還原的執行個體。`D:\S3` 中的檔案會在還原的執行個體上刪除。
+ 下載至資料庫執行個體的檔案最多 100 個。換言之，`D:\S3\` 中的檔案不能超過 100 個。
+ 只有沒有副檔名或具有下列副檔名的檔案才支援下載：.abf、.asdatabase、.bcp、.configsettings、.csv、.dat、.deploymentoptions、.deploymenttargets、.fmt、.info、.ispac、.lst、.tbl、.txt、.xml 和 .xmla。
+ S3 儲存貯體必須與 related AWS Identity and Access Management (IAM) 角色具有相同的擁有者。因此，不支援跨帳戶 S3 整合。
+ 另外，S3 儲存貯體不能對外公開。
+ 從 RDS 上傳至 S3 的檔案大小限制為每個檔案 50 GB。
+ 從 S3 下載至 RDS 的檔案大小限制為 S3 支援的最大值。

**Topics**
+ [整合 RDS for SQL Server 與 S3 的先決條件](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [啟用 RDS for SQL Server 與 S3 的整合](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [在 RDS for SQL Server 與 Amazon S3 之間傳輸檔案](Appendix.SQLServer.Options.S3-integration.using.md)
+ [列出 RDS 資料庫執行個體上的檔案](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [刪除 RDS 資料庫執行個體上的檔案](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [監控檔案傳輸任務的狀態](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [取消任務](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [S3 整合的多可用區域限制](#S3-MAZ)
+ [停用 RDS for SQL Server 與 S3 的整合](Appendix.SQLServer.Options.S3-integration.disabling.md)

如需有關使用 Amazon S3 中檔案的詳細資訊，請參閱 [Amazon Simple Storage Service 入門](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3)。

# 整合 RDS for SQL Server 與 S3 的先決條件
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

開始之前，請尋找或建立您要使用的 S3 儲存貯體。另外，新增許可，以允許 RDS DB 執行個體存取 S3 儲存貯體。若要設定此存取，請建立 IAM 政策和 IAM 角色。

## 主控台
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**建立 IAM 政策以存取 Amazon S3**

1. 在 [IAM 管理主控台](https://console.aws.amazon.com/iam/home?#home)的導覽窗格中，選擇 **Policies (政策)**。

1. 建立新政策，並使用 **Visual editor (視覺化編輯器)** 索引標籤執行下列步驟。

1. 針對 **Service (服務)**，輸入 **S3**，然後選擇 **S3** 服務。

1. 針對 **Actions (動作)**，選擇下列選項，以授予資料庫執行個體所需的存取：
   + `ListAllMyBuckets` – 必要
   + `ListBucket` – 必要
   + `GetBucketAcl` – 必要
   + `GetBucketLocation` – 必要
   + `GetObject` – 將 S3 中的檔案下載至 時需要`D:\S3\`
   + `PutObject` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要
   + `ListMultipartUploadParts` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要
   + `AbortMultipartUpload` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要

1. 針對 **Resources (資源)**，顯示的選項取決於您在上一步選擇的動作。您看到的選項可能是 **bucket (儲存貯體)**、**object (物件)** 或兩者都有。對於每一項，新增適當的 Amazon Resource Name (ARN)。

   針對 **bucket (儲存貯體)**，新增您要使用的儲存貯體的 ARN。例如，如果儲存貯體名為 *amzn-s3-demo-bucket*，請將 ARN 設為 `arn:aws:s3:::amzn-s3-demo-bucket`。

   針對 **object (物件)**，輸入儲存貯體的 ARN，然後選擇下列其中一個：
   + 若要允許存取指定儲存貯體中的所有檔案，對於 **Bucket name (儲存貯體)** 和 **Object name (物件名稱)**，請都選擇 **Any (任何)**。
   + 若要允許存取儲存貯體中的特定檔案或資料夾，請提供您要讓 SQL Server 存取的特定儲存貯體和物件的 ARN。

1. 遵循主控台的指示操作，直到完成建立政策。

   以上為設定政策的簡略指南。如需建立 IAM 政策的詳細指示，請參閱 *IAM 使用者指南*中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

**建立 IAM 角色以使用前一個程序中的 IAM 政策**

1. 在 [IAM 管理主控台](https://console.aws.amazon.com/iam/home?#home)的導覽窗格中，選擇 **Roles (角色)**。

1. 建立新的 IAM 角色，並選擇以下出現在主控台的選項：
   + **AWS服務**
   + **RDS**
   + **RDS – Add Role to Database (RDS - 將角色新增至資料庫)**

   然後在底部選擇 **Next:Permissions (下一步：許可)**。

1. 針對 **Attach permissions policies (連接許可政策)**，輸入您先前建立的 IAM 政策的名稱。然後從清單中選擇該政策。

1. 遵循主控台的指示操作，直到完成建立角色。

   以上為設定角色的簡略指南。如需有關建立角色的詳細指示，請參閱*《IAM 使用者指南》*中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

使用以下程序，為 Amazon RDS 授予 Amazon S3 儲存貯體的存取權：

1. 建立 IAM 政策以允許 Amazon RDS 存取 S3 儲存貯體。

1. 建立 IAM 角色，讓 Amazon RDS 可代表您存取 S3 儲存貯體。

   如需更多詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

1. 將您建立的 IAM 政策附加至您建立的 IAM 角色。

**若要建立 IAM 政策**

包含適當動作，以授予資料庫執行個體所需的存取：
+ `ListAllMyBuckets` – 必要
+ `ListBucket` – 必要
+ `GetBucketAcl` – 必要
+ `GetBucketLocation` – 必要
+ `GetObject` – 將 S3 中的檔案下載至 時需要`D:\S3\`
+ `PutObject` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要
+ `ListMultipartUploadParts` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要
+ `AbortMultipartUpload` – 將 `D:\S3\` 中的檔案上傳至 S3 時需要

1. 下列AWS CLI命令會使用這些選項建立名為 `rds-s3-integration-policy`的 IAM 政策。其將存取權授予名為 *amzn-s3-demo-bucket* 的儲存貯體。  
**Example**  

   對於 Linux、macOS 或 Unix：

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "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:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   在 Windows 中：

   務必將行尾改成您的界面所支援的字元 (`^` 而不是 `\`)。另外，在 Windows 中，您必須以 `\` 逸出所有雙引號。為了避免需要在 JSON 中逸出雙引號，您可以將 JSON 儲存為檔案，然後當作參數傳遞。

   首先，建立包含下列許可政策的 `policy.json` 檔案：

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

****  

   ```
   {
       "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:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   然後，使用以下命令建立政策：

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. 政策建立後，請記下政策的 Amazon Resource Name (ARN)。後續步驟需要此 ARN。

**建立 IAM 角色**
+ 下列AWS CLI命令會為此目的建立 `rds-s3-integration-role` IAM 角色。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  在 Windows 中：

  務必將行尾改成您的界面所支援的字元 (`^` 而不是 `\`)。另外，在 Windows 中，您必須以 `\` 逸出所有雙引號。為了避免需要在 JSON 中逸出雙引號，您可以將 JSON 儲存為檔案，然後當作參數傳遞。

  首先，建立包含下列政策的 `assume_role_policy.json` 檔案：

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

****  

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

------

  使用以下命令建立 IAM 角色：

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example 使用全域條件內容索引鍵建立 IAM 角色**  

  建議您在資源型政策中使用 [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)。為進行 S3 整合，請務必包含資料庫執行個體 ARN，如下列範例所示。

  對於 Linux、macOS 或 Unix：

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "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"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  在 Windows 中：

  將全域條件內容索引鍵新增至 `assume_role_policy.json`。

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

****  

  ```
  {
      "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"
                  }
              }
          }
      ]
  }
  ```

------

**將 IAM 政策連接至 IAM 角色**
+ 下列AWS CLI命令會將政策連接至名為 的角色`rds-s3-integration-role`。將 `your-policy-arn` 替換為您前個步驟記下的政策 ARN。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  在 Windows 中：

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```

# 啟用 RDS for SQL Server 與 S3 的整合
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

在下一節，您可以找到如何啟用 Amazon S3 與 Amazon RDS for SQL Server 整合的資訊。若要使用 S3 整合，在使用 `S3_INTEGRATION` feature-name 參數之前，資料庫執行個體必須與您先前建立的 IAM 角色相關聯。

**注意**  
若要將 IAM 角色新增至資料庫執行個體，資料庫執行個體的狀態必須為 **available (可用)**。

## 主控台
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**將 IAM 角色與資料庫執行個體建立關聯**

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

1. 選擇 RDS for SQL Server 資料庫執行個體名稱，以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力與安全性)** 索引標籤上的 **Manage IAM roles (管理 IAM 角色)** 區段中，選擇要在 **Add IAM roles to this instance (將 IAM 角色新增至此執行個體)** 下新增的 IAM 角色。

1. 針對 **Feature (功能)** 選擇 **S3\$1INTEGRATION**。  
![\[新增 S3_INTEGRATION 角色\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. 選擇 **Add role (新增角色)**。

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**將 IAM 角色新增至 RDS for SQL Server 資料庫執行個體**
+ 下列 AWS CLI 命令將 IAM 角色新增至名為 `mydbinstance` 的 RDS for SQL Server 資料庫執行個體。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds add-role-to-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  在 Windows 中：

  ```
  aws rds add-role-to-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  將 `your-role-arn` 替換為您前個步驟記下的角色 ARN。`S3_INTEGRATION` 必須在 `--feature-name` 選項中指定。

# 在 RDS for SQL Server 與 Amazon S3 之間傳輸檔案
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

您可以使用 Amazon RDS 預存程序，在 Amazon S3 與 RDS 資料庫執行個體之間下載和上傳檔案。您也可以使用 Amazon RDS 預存程序，列出和刪除 RDS 執行個體上的檔案。

您自 S3 下載和上傳至 S3 的檔案會存放在 `D:\S3` 資料夾。您只有透過此資料夾才能存取您的檔案。您可以將檔案組織成子資料夾，在下載期間，當您包含目的地資料夾時，將為您建立這些子資料夾。

您需要提供 S3 儲存貯體和檔案的 Amazon Resource Name (ARN)，才能使用某些預存程序。ARN 的格式為 `arn:aws:s3:::amzn-s3-demo-bucket/file_name`。Amazon S3 不需要 ARNs中的帳戶號碼或 AWS 區域。

S3 整合任務循序執行，與原生備份和還原任務共同相同的佇列。不論何時，此佇列中最多只能有兩個任務在進行。可能需要五分鐘後，任務才會開始處理。

## 將 Amazon S3 儲存貯體中的檔案下載至 SQL Server 資料庫執行個體
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

若要將 S3 儲存貯體中的檔案下載至 RDS for SQL Server 資料庫執行個體，請使用 Amazon RDS 預存程序 `msdb.dbo.rds_download_from_s3` 並搭配下列參數。


| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  必要  |  要下載之檔案的 S3 ARN，例如：`arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  選用  |  RDS 執行個體的檔案路徑。若沒有指定，則檔案路徑為 `D:\S3\<filename in s3>`。RDS 支援絕對路徑和相對路徑。如果您要建立子資料夾，請將子資料夾包含在檔案路徑中。  | 
|  `@overwrite_file`  |  INT  |  0  |  選用  | 覆寫現有檔案： 0 = 不覆寫 1 = 覆寫 | 

您可以下載沒有副檔名的檔案以及具有下列副檔名的檔案：.bcp、.csv、.dat、.fmt、.info、.lst、.tbl、.txt 和 .xml。

**注意**  
啟用 SQL Server Integration Services 時，可支援下載具有 .ispac 副檔名的檔案。如需如何啟用 SSIS 的詳細資訊，請參閱 [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md)。  
啟用 SQL Server Analysis Services 時，可支援下載具有下列副檔名的檔案：.abf、.asdatabase、.configsettings、.deploymentoptions、.deploymenttargets 和 .xmla。如需如何啟用 SSAS 的詳細資訊，請參閱 [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md)。

下列範例顯示從 S3 下載檔案的預存程序。

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

範例 `rds_download_from_s3` 操作在 `seed_data` 中建立名為 `D:\S3\` 的資料夾 (如果此資料夾尚不存在)。然後，範例從 S3 將來源檔案 `bulk_data.csv` 下載至資料庫執行個體上名為 `data.csv` 的新檔案。因為 `@overwrite_file` 參數設為 `1`，如果檔案已事先存在，則會覆寫檔案。

## 從 SQL Server 資料庫執行個體將檔案上傳至 Amazon S3 儲存貯體
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

若要從 RDS for SQL Server 資料庫執行個體將檔案上傳送至 S3 儲存貯體，請使用 Amazon RDS 預存程序 `msdb.dbo.rds_upload_to_s3` 並搭配下列參數。


| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  必要  |  要在 S3 中建立之檔案的 S3 ARN，例如：`arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  必要  | 要上傳至 S3 之檔案的檔案路徑。支援絕對和相對路徑。 | 
|  `@overwrite_file`  |  INT  |  –  |  選用  |  覆寫現有檔案： 0 = 不覆寫 1 = 覆寫  | 

下列範例從指定的位置 `data.csv` 中，將名為 `D:\S3\seed_data\` 的檔案，上傳至以 ARN 指定的 S3 儲存貯體中的檔案 `new_data.csv`。

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

因為 @overwrite\$1file 參數設為 `1`，如果檔案已事先存在於 S3，則會覆寫檔案。

# 列出 RDS 資料庫執行個體上的檔案
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

若要列出資料庫執行個體上存在的檔案，請使用預存程序和函數。首先，執行下列預存程序，從 `D:\S3\` 中的檔案收集檔案詳細資料。

```
exec msdb.dbo.rds_gather_file_details;
```

預存程序會傳回任務的 ID。就像其他任務一樣，此預存程序以非同步方式執行。一旦任務的狀態變成 `SUCCESS`，您就可以在 `rds_fn_list_file_details` 函數中使用任務 ID，以列出 D:\$1S3\$1 中現有的檔案和目錄，如下所示。

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

`rds_fn_list_file_details` 函數會傳回含有以下幾欄的表格：


| 輸出參數 | 描述 | 
| --- | --- | 
| filepath | 檔案的絕對路徑 (例如，D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | 檔案大小 (以位元組為單位) | 
| last\$1modified\$1utc | 上次修改日期和時間 (UTC 格式) | 
| is\$1directory | 指出項目是否為目錄的選項 (true/false) | 

# 刪除 RDS 資料庫執行個體上的檔案
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

若要刪除資料庫執行個體上存在的檔案，請使用 Amazon RDS 預存程序 `msdb.dbo.rds_delete_from_filesystem` 並搭配下列參數。


| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  必要  | 要刪除之檔案的檔案路徑。支援絕對和相對路徑。 | 
|  `@force_delete`  |  INT  | 0 |  選用  |  若要刪除目錄，必須包含此標旗並設為 `1`。 `1` = 刪除目錄 如果是刪除檔案，則會忽略此參數。  | 

若要刪除目錄，`@rds_file_path` 的結尾必須是反斜線 (`\`)，`@force_delete` 必須設為 `1`。

以下範例刪除檔案 `D:\S3\delete_me.txt`。

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

以下範例刪除目錄 `D:\S3\example_folder\`。

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# 監控檔案傳輸任務的狀態
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

若要追蹤 S3 整合任務的狀態，請呼叫 `rds_fn_task_status` 函數。需要兩個參數。第一個參數不適用於 S3 整合，應該一律為 `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`  |  就 S3 整合而言，任務可以有下列任務類型： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | 不適用於 S3 整合任務。 | 
|  `% complete`  |  任務的進度 (以百分比表示)。  | 
|  `duration(mins)`  |  任務所花的時間 (以分鐘為單位)。  | 
|  `lifecycle`  |  任務的狀態。可能的狀態如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  任務的其他資訊。如果處理期間發生錯誤，此欄包含該錯誤的相關資訊。  | 
|  `last_updated`  |  上次更新任務狀態的日期和時間。  | 
|  `created_at`  |  建立任務的日期和時間。  | 
|  `S3_object_arn`  |  下載或上傳時往返之 S3 物件的 ARN。  | 
|  `overwrite_S3_backup_file`  |  不適用於 S3 整合任務。  | 
|  `KMS_master_key_arn`  |  不適用於 S3 整合任務。  | 
|  `filepath`  |  RDS 資料庫執行個體上的檔案路徑。  | 
|  `overwrite_file`  |  指出是否覆寫現存檔案的選項。  | 
|  `task_metadata`  |  不適用於 S3 整合任務。  | 

# 取消任務
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

若要取消 S3 整合任務，請使用 `msdb.dbo.rds_cancel_task` 預存程序並搭配 `task_id` 參數。進行中的刪除和列出任務無法取消。以下範例顯示請求取消任務。

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

若要綜觀所有任務及其任務 ID，請使用 `rds_fn_task_status` 函數，如[監控檔案傳輸任務的狀態](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)中所述。

## S3 整合的多可用區域限制
<a name="S3-MAZ"></a>

在多可用區域執行個體上，備用複本上 `D:\S3` 資料夾中的檔案會在容錯移轉後刪除。容錯移轉可能是計劃中的，例如在修改資料庫執行個體期間變更執行個體類別或升級引擎版本。容錯移轉也可能是在主要伺服器中斷期間意外發生的。

**注意**  
我們不建議您使用 `D:\S3` 資料夾來儲存檔案。最佳實務是將建立的檔案上傳至 Amazon S3 使檔案能夠耐久，並在需要匯入資料時下載檔案。

若要判斷上次容錯移轉時間，您可以使用 `msdb.dbo.rds_failover_time` 預存程序。如需更多詳細資訊，請參閱 [判斷 Amazon RDS for SQL Server 的上次容錯移轉時間](Appendix.SQLServer.CommonDBATasks.LastFailover.md)。

**Example 沒有最近的容錯移轉**  
此範例顯示錯誤日誌中沒有最近的容錯移轉時的輸出。自從 2020-04-29 23:59:00.01 以來，沒有發生任何容錯移轉。  
因此，在那段時間之後下載且尚未使用 `rds_delete_from_filesystem` 預存程序刪除的所有檔案仍然可以在目前的主機上存取。在那段時間之前下載的檔案也可能可用。  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example 最近的容錯移轉**  
此範例顯示錯誤日誌中有容錯移轉時的輸出。最近一次的容錯移轉是在 2020-05-05 18:57:51.89。  
在那段時間之後下載且尚未使用 `rds_delete_from_filesystem` 預存程序刪除的所有檔案仍然可以在目前的主機上存取。  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  2020-05-05 18:57:51.8900000  | 

# 停用 RDS for SQL Server 與 S3 的整合
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

接下來，您可以找到如何停用 Amazon S3 與 Amazon RDS for SQL Server 整合的資訊。停用 S3 整合時，不會刪除 `D:\S3\` 中的檔案。

**注意**  
若要從資料庫執行個體中移除 IAM 角色，資料庫執行個體的狀態必須為 `available`。

## 主控台
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**取消 IAM 角色與資料庫執行個體的關聯**

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

1. 選擇 RDS for SQL Server 資料庫執行個體名稱，以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力與安全性)** 索引標籤上的 **Manage IAM roles (管理 IAM 角色)** 區段中，選擇要移除的 IAM 角色。

1. 選擇 **刪除**。

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**從 RDS for SQL Server 資料庫執行個體中移除 IAM 角色**
+ 下列 AWS CLI 命令從名為 `mydbinstance` 的 RDS for SQL Server 資料庫執行個體中移除 IAM 角色。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  在 Windows 中：

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  根據 `your-role-arn` 選項，將 `--feature-name` 換成適當的 IAM 角色 ARN。

# 在 Amazon RDS for SQL Server 上使用 Database Mail
<a name="SQLServer.DBMail"></a>

您可以在 SQL Server 資料庫執行個體上使用 Database Mail，從您的 Amazon RDS 傳送電子郵件訊息給使用者。訊息可包含檔案和查詢結果。Database Mail 包含下列元件：
+ **設定和安全性物件** – 這些物件會建立設定檔和帳戶，並儲存在 `msdb` 資料庫中。
+ **傳訊物件** – 這些物件包括用來傳送訊息的 [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) 預存程序，以及保留訊息相關資訊的資料結構。這些物件會儲存在 `msdb` 資料庫中。
+ **記錄和稽核物件 ** – Database Mail會將記錄資訊寫入 `msdb` 資料庫和 Microsoft Windows 應用程式事件記錄檔。
+ **Database Mail可執行檔** – `DatabaseMail.exe` 會從 `msdb` 資料庫中的佇列讀取，並傳送電子郵件訊息。

RDS 支援 Web、標準和企業版上的所有 SQL Server 版本的 Database Mail。

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

在 SQL Server 資料庫執行個體上使用 Database Mail 時將適用下列限制：
+ Database Mail 不支援 SQL Server Express 版本。
+ 不支援修改 Database Mail 組態參數。若要查看預先設定的值 (預設值)，請使用 [sysmail\$1help\$1configure\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql) 預存程序。
+ 不完全支援檔案附件。如需更多詳細資訊，請參閱 [使用檔案附件](#SQLServer.DBMail.Files)。
+ 檔案附件大小上限為 1 MB。
+ Database Mail 需要在多可用區域資料庫執行個體上設定其他組態。如需更多詳細資訊，請參閱 [多可用區域部署考量](#SQLServer.DBMail.MAZ)。
+ 不支援將 SQL Server 代理程式設定為傳送電子郵件訊息給預先定義的運算子。

# 啟用 Database Mail
<a name="SQLServer.DBMail.Enable"></a>

請使用下列程序啟用資料庫執行個體的 Database Mail：

1. 建立新的參數群組。

1. 修改參數群組，將 `database mail xps` 參數設定為 1。

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

## 建立 Database Mail 的參數群組
<a name="DBMail.CreateParamGroup"></a>

為對應到 SQL Server 版本和資料庫執行個體版本的 `database mail xps` 參數建立參數群組。

**注意**  
您也可以修改現有的參數群組。請遵循 [修改啟用 Database Mail 的參數](#DBMail.ModifyParamGroup) 中的程序。

### 主控台
<a name="DBMail.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 (群組名稱)**，輸入參數群組的識別碼，例如 **dbmail-sqlserver-se-13**。

   1. 對於 **Description (說明)**，輸入 **Database Mail XPs**。

1. 選擇**建立**。

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

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

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

  對於 Linux、macOS 或 Unix：

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Database Mail XPs"
  ```

  在 Windows 中：

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Database Mail XPs"
  ```

## 修改啟用 Database Mail 的參數
<a name="DBMail.ModifyParamGroup"></a>

修改參數群組中對應至 SQL Server 版本和資料庫執行個體版本的 `database mail xps` 參數。

若要啟用 Database Mail，請將 `database mail xps` 參數設定為 1。

### 主控台
<a name="DBMail.ModifyParamGroup.Console"></a>

下列範例會修改您為 SQL Server Standard Edition 2016 所建立的參數群組。

**修改參數群組**

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

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

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

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

1. 選擇 **database mail xps**。

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

1. 輸入 **1**。

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

### CLI
<a name="DBMail.ModifyParamGroup.CLI"></a>

下列範例會修改您為 SQL Server Standard Edition 2016 所建立的參數群組。

**修改參數群組**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

  在 Windows 中：

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

## 將參數群組與資料庫執行個體建立關聯
<a name="DBMail.AssocParamGroup"></a>

您可以使用 AWS 管理主控台 或 AWS CLI ，將 Database Mail 參數群組與資料庫執行個體建立關聯。

### 主控台
<a name="DBMail.AssocParamGroup.Console"></a>

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

### CLI
<a name="DBMail.AssocParamGroup.CLI"></a>

您可以將 Database Mail 參數群組與新的或現有的資料庫執行個體建立關聯。

**使用 Database Mail 參數群組建立資料庫執行個體**
+ 指定建立參數群組時所使用的相同資料庫引擎類型和主要版本。  
**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
      --db-parameter-group-name dbmail-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 ^
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

**修改資料庫執行個體並關聯 Database Mail 參數群組**
+ 請使用下列其中一個命令。  
**Example**  

  對於 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --apply-immediately
  ```

  在 Windows 中：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --apply-immediately
  ```

# 設定 Database Mail
<a name="SQLServer.DBMail.Configure"></a>

您可以執行下列任務來設定 Database Mail：

1. 建立 Database Mail 設定檔。

1. 建立 Database Mail 帳戶。

1. 將 Database Mail 帳戶新增至 Database Mail 設定檔。

1. 將使用者新增至 Database Mail 設定檔。

**注意**  
若要設定 Database Mail，請確認您具有 `execute` 資料庫中預存程序的 `msdb` 許可。

## 建立 Database Mail 設定檔
<a name="SQLServer.DBMail.Configure.Profile"></a>

若要建立 Database Mail 設定檔，您可以使用 [sysmail\$1add\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql) 預存程序。以下範例會建立名為 `Notifications` 的設定檔。

**建立設定檔**
+ 使用下列 SQL 陳述式。

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profile_sp  
      @profile_name         = 'Notifications',  
      @description          = 'Profile used for sending outgoing notifications using Amazon SES.';
  GO
  ```

## 建立 Database Mail 帳戶
<a name="SQLServer.DBMail.Configure.Account"></a>

若要建立 Database Mail 帳戶，您可以使用 [sysmail\$1add\$1account\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-account-sp-transact-sql) 預存程序。下列範例使用 Amazon Simple Email Service，在私有 VPC 中的 RDS for SQL Server 資料庫執行個體上建立一個名為 `SES` 的帳戶。

使用 Amazon SES 需要下列參數：
+ `@email_address` – 一個 Amazon SES 驗證身分。如需詳細資訊，請參閱[在 Amazon SES 中驗證身分](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html)。
+ `@mailserver_name` – 一個 Amazon SES SMTP 端點。如需詳細資訊，請參閱[連線至 Amazon SES SMTP 端點](https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html)。
+ `@username` – 一個 Amazon SES SMTP 使用者名稱。如需詳細資訊，請參閱[取得 Amazon SES SMTP 憑證](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html)。

  請勿使用 AWS Identity and Access Management 使用者名稱。
+ `@password` – 一個 Amazon SES SMTP 密碼。如需詳細資訊，請參閱[取得 Amazon SES SMTP 憑證](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html)。

**建立帳戶**
+ 使用下列 SQL 陳述式。

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_account_sp
      @account_name        = 'SES',
      @description         = 'Mail account for sending outgoing notifications.',
      @email_address       = 'nobody@example.com',
      @display_name        = 'Automated Mailer',
      @mailserver_name     = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce.amazonaws.com',
      @port                = 587,
      @enable_ssl          = 1,
      @username            = 'Smtp_Username',
      @password            = 'Smtp_Password';
  GO
  ```
**注意**  
指定此處所顯示提示以外的憑證，作為安全最佳實務。

## 將 Database Mail 帳戶新增至 Database Mail 設定檔
<a name="SQLServer.DBMail.Configure.AddAccount"></a>

若要將 Database Mail 帳戶新增至 Database Mail 設定檔，您可以使用 [sysmail\$1add\$1profileaccount\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql) 預存程序。下列範例會將 `SES` 帳戶新增至 `Notifications` 設定檔。

**將帳戶新增至設定檔**
+ 使用下列 SQL 陳述式。

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name        = 'Notifications',
      @account_name        = 'SES',
      @sequence_number     = 1;
  GO
  ```

## 將使用者新增至 Database Mail 設定檔
<a name="SQLServer.DBMail.Configure.AddUser"></a>

若要授與 `msdb` 資料庫主體使用 Database Mail 設定檔的許可，您可以使用 [sysmail\$1add\$1principalprofile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql) 預存程序。*主體*是可以要求 SQL Server 資源的實體。資料庫主體必須對應至 SQL Server 身分驗證使用者、Windows 身分驗證使用者或 Windows 身分驗證群組。

下列範例會授與 `Notifications` 設定檔的公開存取權。

**將使用者新增至設定檔**
+ 使用下列 SQL 陳述式。

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
      @profile_name       = 'Notifications',  
      @principal_name     = 'public',  
      @is_default         = 1;
  GO
  ```

## 適用於 Database Mail 的 Amazon RDS 預存程序和函數
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft 提供使用 Database Mail 的[預存程序](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql)，例如建立、列出、更新和刪除帳號和設定檔。此外，RDS 還提供適用於 Database Mail 的預存程序和函數，如下表所示。


| 程序/函數 | 描述 | 
| --- | --- | 
| rds\$1fn\$1sysmail\$1allitems | 顯示已傳送的訊息，包括其他使用者提交的訊息。 | 
| rds\$1fn\$1sysmail\$1event\$1log | 顯示事件，包括其他使用者提交訊息的事件。 | 
| rds\$1fn\$1sysmail\$1mailattachments | 顯示附件，包括其他使用者提交訊息的附件。 | 
| rds\$1sysmail\$1control | 啟動和停止郵件佇列 (DatabaseMail.exe 處理程序)。 | 
| rds\$1sysmail\$1delete\$1mailitems\$1sp | 從 Database Mail 內部表格刪除所有使用者傳送的電子郵件訊息。 | 

# 使用 Database Mail 傳送電子郵件訊息
<a name="SQLServer.DBMail.Send"></a>

您可以使用 [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) 預存程序來利用 Database Mail 傳送電子郵件訊息。

## Usage
<a name="SQLServer.DBMail.Send.Usage"></a>

```
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = 'recipient1@example.com[; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';
```

下列是必要參數：
+ `@profile_name` – 要從中傳送訊息的 Database Mail 設定檔名稱。
+ `@recipients` – 要傳送訊息的電子郵件地址的清單 (以分號分隔)。
+ `@subject` – 訊息的主旨。
+ `@body` – 訊息的內文。您也可以使用已宣告的變數作為內文。

下列是選用參數：
+ `@body_format` – 此參數與已宣告的變數一起使用，以 HTML 格式傳送電子郵件。
+ `@file_attachments` – 訊息附件清單 (以分號分隔)。檔案路徑必須是絕對路徑。
+ `@query` – 要執行的 SQL 查詢。查詢結果可以作為檔案貼加，也可以包含在訊息內文中。
+ `@attach_query_result_as_file` – 是否將查詢結果附加為檔案。設定為 0 表示否，1 表示是。預設值為 0。

## 範例
<a name="SQLServer.DBMail.Send.Examples"></a>

下列範例示範如何傳送電子郵件訊息。

**Example 傳送訊息給單一收件人**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO
```

**Example 傳送訊息給多位收件人**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'recipient1@example.com;recipient2@example.com',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO
```

**Example 將 SQL 查詢結果作為檔案附件傳送**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO
```

**Example 以 HTML 格式傳送訊息**  

```
USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO
```

**Example 在資料庫中發生特定事件時使用觸發器傳送訊息**  

```
USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO
```

# 檢視郵件、記錄檔和附件
<a name="SQLServer.DBMail.View"></a>

您可以使用 RDS 預存程序來檢視訊息、事件記錄檔和附件。

**檢視所有電子郵件訊息**
+ 使用下列 SQL 查詢：

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
  ```

**檢視所有電子郵件事件記錄檔**
+ 使用下列 SQL 查詢：

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

**檢視所有電子郵件附件**
+ 使用下列 SQL 查詢：

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

# 刪除訊息
<a name="SQLServer.DBMail.Delete"></a>

您可以使用 `rds_sysmail_delete_mailitems_sp` 預存程序來刪除訊息。

**注意**  
當 DBMail 歷程記錄資料大小達到 1 GB，且保留期限至少為 24 小時，RDS 會自動刪除郵件表格項目。  
如果您想要將郵件項目保留一段較長的時間，可以將其封存。如需詳細資訊，請參閱 Microsoft 文件中的[建立 SQL Server Agent 作業以封存 Database Mail 訊息及事件記錄檔](https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-sql-server-agent-job-to-archive-database-mail-messages-and-event-logs)。

**刪除所有電子郵件訊息**
+ 使用下列 SQL 陳述式。

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE;
  GO
  ```

**刪除所有具有特定狀態的電子郵件**
+ 使用下列 SQL 陳述式刪除所有失敗的訊息。

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed';
  GO
  ```

# 啟動和停止郵件佇列
<a name="SQLServer.DBMail.StartStop"></a>

使用下列指示，啟動和停止資料庫郵件佇列：

**Topics**
+ [啟動郵件佇列](#SQLServer.DBMail.Start)
+ [停用郵件佇列](#SQLServer.DBMail.Stop)

## 啟動郵件佇列
<a name="SQLServer.DBMail.Start"></a>

您可以使用 `rds_sysmail_control` 預存程序來啟動 Database Mail 處理程序。

**注意**  
啟用 Database Mail 會自動啟動郵件佇列。

**啟動郵件佇列**
+ 使用下列 SQL 陳述式。

  ```
  EXECUTE msdb.dbo.rds_sysmail_control start;
  GO
  ```

## 停用郵件佇列
<a name="SQLServer.DBMail.Stop"></a>

您可以使用 `rds_sysmail_control` 預存程序來停止 Database Mail 處理程序。

**停止郵件佇列**
+ 使用下列 SQL 陳述式。

  ```
  EXECUTE msdb.dbo.rds_sysmail_control stop;
  GO
  ```

## 使用檔案附件
<a name="SQLServer.DBMail.Files"></a>

在 SQL Server 上，來自 RDS 的 Database Mail 訊息不支援下列檔案附件副檔名：.ade、.adp、.apk、.appx、.appxbundle、.bat、.bak、.cab、.chm、.cmd、.com、.cpl、.dll、.dmg、.exe、.hta、.inf1、.ins、.isp、.iso、.jar、.job、.js、.jse、.ldf、.lib、.lnk、.mde、.mdf、.msc、.msi、.msix、.msixbundle、.msp、.mst、.nsh、.pif、.ps、.ps1、.psc1、.reg、.rgs、.scr、.sct、.shb、.shs、.svg、.sys、.u3p、.vb、.vbe、.vbs、.vbscript、.vxd、.ws、.wsc、.wsf 和 .wsh。

Database Mail 會使用目前使用者的 Microsoft Windows 安全性內容來控制檔案的存取。使用 SQL Server 身分驗證登入的使用者無法使用 `@file_attachments` 預存程序的 `sp_send_dbmail` 參數附加檔案。Windows 不允許 SQL Server 將登入資料從遠端電腦提供給另一台遠端電腦。因此，從非執行 SQL Server 的電腦執行命令時，Database Mail 無法從網路共用附加檔案。

不過，您可以使用 SQL Server 代理程式任務來附加檔案。如需有關 SQL Server 代理程式的詳細資訊，請參閱 [使用 SQL Server Agent for Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) 和 Microsoft 文件中的 [SQL Server 代理程式](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent)。

## 多可用區域部署考量
<a name="SQLServer.DBMail.MAZ"></a>

當您在多可用區域資料庫執行個體上設定 Database Mail 時，組態不會自動傳播至次要可用區。建議將多可用區域執行個體轉換為單一可用區執行個體、設定 Database Mail，然後將資料庫執行個體轉換回多可用區域。然後，主節點和次要節點均設有 Database Mail 組態。

如果您從已設定 Database Mail 的多可用區域執行個體建立僅供讀取複本，則複本會繼承該組態，但不需要 SMTP 伺服器的密碼。使用密碼更新 Database Mail 帳戶。

## 移除 SMTP (連接埠 25) 限制
<a name="SQLServer.DBMail.SMTP"></a>

根據預設，AWS 會為 RDS for SQL Server 資料庫執行個體封鎖 SMTP (連接埠 25) 上的輸出流量。這是為了根據彈性網路介面擁有者的政策防止垃圾郵件。如有需要，您可以移除此限制。如需詳細資訊，請參閱[如何從我的 Amazon EC2 執行個體或 Lambda 函數中移除連接埠 25 的限制？](https://repost.aws/knowledge-center/ec2-port-25-throttle)。

# 執行個體存放區支援 Amazon RDS for SQL Server 上的 tempdb 資料庫
<a name="SQLServer.InstanceStore"></a>

*執行個體存放區*為資料庫執行個體提供暫時的區塊層級儲存空間。這個儲存空間位於實際連接到主機電腦的磁碟上。這些磁碟具有以固態硬碟 (SSD) 為基礎的非揮發性記憶體儲存裝置 (NVMe) 執行個體儲存體。此儲存體已針對低延遲、非常高的隨機 I/O 效能，以及高循序讀取輸送量進行最佳化。

將 `tempdb` 資料檔案和 `tempdb` 日誌檔案放置在執行個體存放區上，與以 Amazon EBS 為基礎的標準儲存相比，您可以達成更低的讀取和寫入延遲。

**注意**  
SQL Server 資料庫檔案和資料庫日誌檔案不會放置在執行個體存放區。

## 啟用執行個體存放區
<a name="SQLServer.InstanceStore.Enable"></a>

當 RDS 佈建具有下列其中一種執行個體類別的資料庫執行個體時，`tempdb` 資料庫會自動放置到執行個體存放區中：
+ db.m5d
+ db.r5d
+ db.x2iedn

若要啟用執行個體存放區，請執行下列其中一項動作：
+ 使用這些執行個體類型之一建立 SQL Server 資料庫執行個體。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 修改現有的 SQL Server 資料庫執行個體，以使用其中一個執行個體。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

執行個體存放區適用於支援一或多個這些執行個體類型的所有 AWS 區域。如需 `db.m5d` 和 `db.r5d` 執行個體類別的詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。如需 Amazon RDS for SQL Server 支援之執行個體類別的詳細資訊，請參閱[Microsoft SQL Server 的資料庫執行個體類別支援](SQLServer.Concepts.General.InstanceClasses.md)。

## 檔案位置和大小考量
<a name="SQLServer.InstanceStore.Files"></a>

在沒有執行個體存放區的執行個體上，RDS 會將 `tempdb` 資料和日誌檔案存放在 `D:\rdsdbdata\DATA` 目錄中。依預設，這兩個檔案都會從 8 MB 開始。

在具有執行個體存放區的執行個體上，RDS 會將 `tempdb` 資料和日誌檔案存放在 `T:\rdsdbdata\DATA` 目錄中。

當 `tempdb` 只有一個資料檔案 (`tempdb.mdf`) 和一個日誌檔案 (`templog.ldf`) 時，`templog.ldf` 預設從 8 MB 開始，且 `tempdb.mdf` 從執行個體儲存體容量的 80% 或以上開始。20% 的儲存容量或 200 GB (以較少者為準) 可隨時開始。多個 `tempdb` 資料檔案會平均分割 80% 的磁碟空間，而日誌檔案的初始大小一律為 8 MB。

例如，如果您將資料庫執行個體類別從 `db.m5.2xlarge` 修改為 `db.m5d.2xlarge`，大小為 `tempdb` 的資料檔案將從每個 8 MB 增加至 234 GB。

**注意**  
除了執行個體存放區上的 `tempdb` 資料和日誌檔案 (`T:\rdsdbdata\DATA`)，您仍然可以在資料磁碟區建立額外的 `tempdb` 資料和日誌檔案 (`D:\rdsdbdata\DATA`)。這些檔案的初始大小一律為 8 MB。

## 備份考量
<a name="SQLServer.InstanceStore.Backups"></a>

您可能需要長時間保留備份，從而產生一段時間的成本。`tempdb` 資料和日誌區塊可能會經常變更，視工作負載而定。這可以大大增加資料庫快照大小。

`tempdb` 在執行個體存放區時，快照不包含暫存檔案。這表示相較於僅限 EBS 的儲存體，快照大小較小，而且耗用的免費備份配置較少。

## 磁碟已滿錯誤
<a name="SQLServer.InstanceStore.DiskFull"></a>

如果您使用執行個體存放區中的所有可用空間，可能會收到下列錯誤：
+ 資料庫 'tempdb' 的交易日誌因 'ACTIVE\$1TRANSACTION' 已滿。
+ 無法在資料庫 'tempdb' 中為物件 'dbo.SORT temporary run storage: 140738941419520' 配置空間，因為 'PRIMARY' 檔案群組已滿。藉由刪除不需要的檔案、卸除檔案群組中的物件、將其他檔案新增至檔案群組，或為檔案群組中的現有檔案設定自動成長，以建立磁碟空間。

執行個體存放區已滿時，您可以執行下列一或多項動作：
+ 調整您的工作負載或使用 `tempdb` 的方式。
+ 擴大以使用具有更多 NVMe 儲存體的資料庫執行個體類別。
+ 停止使用執行個體存放區，並使用只有 EBS 存儲體的執行個體類別。
+ 在 EBS 磁碟區上新增 `tempdb` 次要資料或日誌檔案，以使用混合模式。

## 移除執行個體存放區
<a name="SQLServer.InstanceStore.Disable"></a>

若要移除執行個體儲存體，請修改您的 SQL Server 資料庫執行個體，以使用不支援執行個體儲存體的執行個體類型，例如 db.m5、db.r5 或 db.x1e。

**注意**  
當您移除執行個體存放區時，暫存檔案會移至 `D:\rdsdbdata\DATA` 目錄，並將大小減少為 8 MB。

# 搭配 Amazon RDS for Microsoft SQL Server 使用擴充事件
<a name="SQLServer.ExtendedEvents"></a>

您可以在 Microsoft SQL Server 中使用擴充事件來擷取 Amazon RDS for SQL Server 的偵錯和疑難排解資訊。擴充事件會取代 SQL Trace 和 Server Profiler，其已被 Microsoft 取代。擴充事件類似於分析工具追蹤，但對所追蹤的事件具有更細微的控制。Amazon RDS 上的 SQL Server 2016 和更新版本支援擴充事件。如需詳細資訊，請參閱 Microsoft 文件中的[擴充事件概觀](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events)。

對於在 Amazon RDS for SQL Server 中具有主要使用者權限的使用者，會自動開啟擴充事件。

**Topics**
+ [限制與建議](#SQLServer.ExtendedEvents.Limits)
+ [設定 RDS for SQL Server 上的擴充事件](#SQLServer.ExtendedEvents.Config)
+ [多可用區域部署考量](#SQLServer.ExtendedEvents.MAZ)
+ [查詢擴充的事件檔案](#SQLServer.ExtendedEvents.Querying)

## 限制與建議
<a name="SQLServer.ExtendedEvents.Limits"></a>

在 RDS for SQL Server 上使用擴充事件時，會套用下列限制：
+ 擴充事件僅支援 Enterprise 和 Standard 版本。
+ 您無法變更預設的擴充事件工作階段。
+ 請務必將工作階段記憶體分區模式設定為 `NONE`。
+ 工作階段事件保留模式可以是 `ALLOW_SINGLE_EVENT_LOSS` 或 `ALLOW_MULTIPLE_EVENT_LOSS`。
+ 不支援 Windows 事件追蹤 (ETW) 目標。
+ 請確定檔案目標位於 `D:\rdsdbdata\log` 目錄中。
+ 對於配對相符目標，請將 `respond_to_memory_pressure` 屬性設定為 `1`。
+ 信號緩衝區目標記憶體不能大於 4 MB。
+ 不支援下列動作：
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ 下列版本及更新版本支援此 `rpc_completed` 事件：15.0.4083.2、14.0.3370.1、13.0.5865.1、12.0.6433.1、11.0.7507.2。

## 設定 RDS for SQL Server 上的擴充事件
<a name="SQLServer.ExtendedEvents.Config"></a>

在 RDS for SQL Server 上，您可以設定擴充事件工作階段的特定參數值。下表描述了可設定的參數。


| 參數名稱 | 描述 | RDS 預設值 | 最小值 | 最大值 | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | 指定要配置給工作階段用於事件緩衝的記憶體數量上限。此值對應於事件工作階段的 max\$1memory 設定。 | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1event\$1size | 指定大型事件允許的記憶體大小上限。此值對應於事件工作階段的 max\$1event\$1size 設定。 | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1dispatch\$1latency | 指定傳送至擴充事件工作階段目標之前，事件在記憶體中緩衝的時間長度。此值對應於事件工作階段的 max\$1dispatch\$1latency 設定。 | 30 秒 | 1 秒鐘 | 30 秒 | 
| xe\$1file\$1target\$1size | 指定檔案目標的大小上限。此值對應於檔案目標的 max\$1file\$1size 設定。 | 100 MB | 10 MB | 1 GB | 
| xe\$1file\$1retention | 指定事件工作階段之檔案目標產生的檔案保留時間 (以天為單位)。 | 7 天 | 0 天 | 7 天 | 

**注意**  
將 `xe_file_retention` 設定為零會在 SQL Server 釋放這些檔案的鎖定之後自動移除 .xel 檔案。每當 .xel 檔案達到 `xe_file_target_size` 中設定的大小限制時，就會釋放鎖定。

您可以使用 `rdsadmin.dbo.rds_show_configuration` 存放的程序來顯示這些參數的目前值。例如，使用下列 SQL 陳述式來檢視 `xe_session_max_memory` 的目前設定。

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

您可以使用 `rdsadmin.dbo.rds_set_configuration` 存放的程序來對其進行修改。例如，使用下列 SQL 陳述式設定 `xe_session_max_memory` 為 4 MB。

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

## 多可用區域部署考量
<a name="SQLServer.ExtendedEvents.MAZ"></a>

當您在主要資料庫執行個體上建立擴充事件工作階段時，它不會傳播到待命複本。您可以容錯移轉並在新的主要資料庫執行個體上建立擴充事件工作階段。或者，您可以移除並重新新增異地同步備份組態，將擴充事件工作階段傳播到待命複本。RDS 會停止待命複本上的所有非預設擴充事件工作階段，讓這些工作階段不會耗用待命的資源。因此，待命複本成為主要資料庫執行個體之後，請務必手動啟動新主要資料庫執行個體上的擴充事件工作階段。

**注意**  
這種方法同時適用於「Always On 可用性群組」和「資料庫鏡像」。

您也可以使用 SQL Server 代理程式任務來追蹤待命複本，並在待命成為主要資料庫執行個體時啟動工作階段。例如，在 SQL Server 代理程式任務步驟中使用下列查詢，以重新啟動主要資料庫執行個體上的事件工作階段。

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

如果這些工作階段處於停止狀態，此查詢會在主要資料庫執行個體上重新啟動事件工作階段 `xe1` 和 `xe2`。您也可以將具有便利間隔的排程新增至此查詢。

## 查詢擴充的事件檔案
<a name="SQLServer.ExtendedEvents.Querying"></a>

您可以使用 SQL Server Management Studio 或 `sys.fn_xe_file_target_read_file` 函數來檢視使用檔案目標之擴充事件的資料。如需有關此函數的詳細資訊，請參閱 Microsoft 文件中的 [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql)。

擴充事件檔案目標只能將檔案寫入 RDS for SQL Server 上的 `D:\rdsdbdata\log` 目錄。

例如，使用下列 SQL 查詢列出名稱以 `xe` 開頭之擴充事件工作階段之所有檔案的內容。

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```

# 使用 RDS for SQL Server 存取交易日誌備份
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

藉由取 RDS for SQL Server 的交易日誌備份，您可以列出資料庫的交易日誌備份檔案，並將其複製到目標 Amazon S3 儲存貯體。透過在 Amazon S3 儲存貯體中複製交易日誌備份，您可以結合完整和差異資料庫備份使用它們，以執行時間點資料庫還原。您可以使用 RDS 預存程序來設定交易日誌備份的存取、列出可用的交易日誌備份，以及將它們複製到 Amazon S3 儲存貯體。

存取交易日誌備份可提供下列功能和優點：
+ 列出和檢視 RDS for SQL Server 資料庫執行個體上資料庫之可用交易日誌備份的中繼資料。
+ 將可用的交易日誌備份從 RDS for SQL Server 複製到目標 Amazon S3 儲存貯體。
+ 執行資料庫的時間點還原，而不需還原整個資料庫執行個體。如需將資料庫執行個體還原至某個時間點的詳細資訊，請參閱 [將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

## 可用性與支援
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

所有 AWS 區域都支援存取交易日誌備份。Amazon RDS 上支援的所有 Microsoft SQL Server 版本都可以存取交易日誌備份。

## 要求
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

必須符合下列需求，才能啟用對交易日誌備份的存取：
+  必須在資料庫執行個體上啟用自動備份，且備份保留必須設為一或多天的值。如需啟用自動備份和設定保留政策的詳細資訊，請參閱 [啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。
+ Amazon S3 儲存貯體與來源資料庫執行個體必須存在於相同的帳戶和區域中。在啟用對交易日誌備份的存取之前，請選擇現有的 Amazon S3 儲存貯體，或[建立新的儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html)，用於交易日誌備份檔案。
+ Amazon S3 儲存貯體許可政策必須設定如下，才能允許 Amazon RDS 將交易日誌檔複製到其中：

  1. 將儲存貯體上的物件帳戶擁有權屬性設為 **Bucket Owner Preferred** (偏好的儲存貯體擁有者)。

  1. 新增下列政策。根據預設，將沒有任何政策，因此請使用儲存貯體存取控制清單 (ACL) 來編輯儲存貯體政策並加以新增。

  

  下列範例使用 ARN 來指定資源。建議您在資源型信任關係中使用 `SourceArn` 和 `SourceAccount` 全域條件內容金鑰，將服務的許可限定於特定資來源。如需使用 ARN 的詳細資訊，請參閱 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) 和 [Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。

    
**Example 用於存取交易日誌備份的 Amazon S3 許可政策範例**  

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

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ 存取 Amazon S3 儲存貯體的 AWS Identity and Access Management (IAM) 角色。如果您已經有 IAM 角色，則可直接使用。當您使用 AWS 管理主控台新增 `SQLSERVER_BACKUP_RESTORE` 選項時，可以選擇替您建立新的 IAM 角色。或者，您也可以手動建立新的。如需使用 `SQLSERVER_BACKUP_RESTORE` 建立和設定 IAM 角色的詳細資訊，請參閱 [手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)。
+ `SQLSERVER_BACKUP_RESTORE` 選項必須新增至資料庫執行個體上的選項群組。如需新增 `SQLSERVER_BACKUP_RESTORE` 選項的詳細資訊，請參閱 [SQL Server 對原生備份與還原的支援](Appendix.SQLServer.Options.BackupRestore.md)。
**注意**  
如果您的資料庫執行個體已啟用儲存加密，則必須在原生備份和還原選項群組中提供的 IAM 角色中提供 AWS KMS (KMS) 動作和金鑰。

  或者，如果您打算使用 `rds_restore_log` 預存程序執行時間點資料庫還原，建議將相同的 Amazon S3 路徑用於原生備份和還原選項群組，以及存取交易日誌備份。此方法可確保 Amazon RDS 擔任選項群組中的角色來執行還原日誌功能時，可以從相同的 Amazon S3 路徑中擷取交易日誌備份。
+ 如果資料庫執行個體已加密，無論加密類型為何 （受AWS 管金鑰或客戶受管金鑰），您必須在 IAM 角色和`rds_tlog_backup_copy_to_S3`預存程序中提供客戶受管 KMS 金鑰。

## 限制與建議
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

存取交易日誌備份具有下列限制和建議：
+  對於備份保留設定為 1 到 35 天的任何資料庫執行個體，您最多可以列出並複製最後七天的交易日誌備份。
+  用於存取交易日誌備份的 Amazon S3 儲存貯體與來源資料庫執行個體必須存在於相同的帳戶和區域中。不支援跨帳戶與跨區域複本。
+  只能將一個 Amazon S3 儲存貯體設定為將交易日誌備份複製到的目標。您可以使用 `rds_tlog_copy_setup` 預存程序選擇新的目標 Amazon S3 儲存貯體。如需選擇新目標 Amazon S3 儲存貯體的詳細資訊，請參閱 [設定交易日誌備份的存取權](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md)。
+  如果未啟用您的 RDS 執行個體進行儲存體加密，則無法在使用 `rds_tlog_backup_copy_to_S3` 預存程序時指定 KMS 金鑰。
+  不支援多帳戶複製。用於複製的 IAM 角色只允許資料庫執行個體擁有者帳戶內 Amazon S3 儲存貯體的寫入存取權。
+  只有兩個任何類型的並行任務才能在 RDS for SQL Server 資料庫執行個體上執行。
+  在指定時間內，只能針對單一資料庫執行一個複製任務。如果您想要複製資料庫執行個體上多個資料庫的交易日誌備份，請針對每個資料庫使用個別的複製任務。
+  如果您複製已存在於 Amazon S3 儲存貯體且名稱相同的交易日誌備份，將覆寫現有的交易日誌備份。
+  您只能執行隨附的預存程序，存取主要資料庫執行個體上的交易日誌備份。您無法在 RDS for SQL Server 僅供讀取複本上，也無法在多可用區域資料庫叢集的次要執行個體上執行這些預存程序。
+  如果在 `rds_tlog_backup_copy_to_S3` 預存程序執行期間重新啟動 RDS for SQL Server 資料庫執行個體，則在資料庫執行個體再次上線時，任務將自動從頭開始重新啟動。在重新開機之前執行任務時，已複製到 Amazon S3 儲存貯體的任何交易日誌備份都會遭到覆寫。
+ 無法設定 Microsoft SQL Server 系統資料庫和 `RDSAdmin` 資料庫，進行交易日誌備份存取。
+  不支援複製到 SSE-KMS 加密的儲存貯體。

# 設定交易日誌備份的存取權
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling"></a>

若要設定交易日誌備份的存取權，請完成 [要求](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements) 區段中的需求清單，然後執行 `rds_tlog_copy_setup` 預存程序。此程序將在資料庫執行個體層級啟用對交易日誌備份功能的存取。您不需要針對資料庫執行個體上的每個個別資料庫執行個體執行此程序。

**重要**  
資料庫使用者必須在每個資料庫上獲授予 SQL Server 內的 `db_owner` 角色，才能設定和使用交易日誌備份功能的存取權。

**Example 使用方式：**  

```
exec msdb.dbo.rds_tlog_copy_setup
@target_s3_arn='arn:aws:s3:::amzn-s3-demo-bucket/myfolder';
```

以下是必要參數：
+ `@target_s3_arn` – 要將交易日誌備份檔案複製到其中之目標 Amazon S3 儲存貯體的 ARN。

**Example 設定 Amazon S3 目標儲存貯體的範例：**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket/mytestdb1';
```

若要驗證組態，請呼叫 `rds_show_configuration` 預存程序。

**Example 驗證組態的範例：**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

若要修改交易日誌備份的存取權，以指向不同的 Amazon S3 儲存貯體，您可以檢視目前的 Amazon S3 儲存貯體值，然後使用 `@target_s3_arn` 的新值重新執行預存程序 `rds_tlog_copy_setup`。

**Example 檢視為了存取交易日誌備份而設定現有 Amazon S3 儲存貯體的範例**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

**Example 更新為新目標 Amazon S3 儲存貯體的範例**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket1/mynewfolder';
```

# 列出可用的交易日誌備份
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Listing"></a>

使用 RDS for SQL Server 時，資料庫若設定為使用完整復原模式，且其資料庫執行個體備份保留設為一或多天，則會自動啟用交易日誌備份。透過啟用對交易日誌備份的存取，最多七天的這些交易日誌備份可供您複製到 Amazon S3 儲存貯體。

在啟用對交易日誌備份的存取之後，您可以開始使用它，來列出和複製可用的交易日誌備份檔案。

**列出交易日誌備份**

若要列出個別資料庫可用的所有交易日誌備份，請呼叫 `rds_fn_list_tlog_backup_metadata` 函數。您可以在呼叫函數時使用 `ORDER BY` 或 `WHERE` 子句。

**Example 列出並篩選可用交易日誌備份檔案的範例**  

```
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename');
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE rds_backup_seq_id = 3507;
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE backup_file_time_utc > '2022-09-15 20:44:01' ORDER BY backup_file_time_utc DESC;
```

![\[來自 rds_fn_list_tlog_backup_metadata 的輸出\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


`rds_fn_list_tlog_backup_metadata` 函數會傳回下列輸出：


****  

| 欄名稱 | 資料類型 | Description | 
| --- | --- | --- | 
| `db_name` | sysname | 提供用來列出其交易日誌備份的資料庫名稱。 | 
| `db_id` | int | 輸入參數 `db_name` 的內部資料庫識別符。 | 
| `family_guid` | uniqueidentifier | 建立時原始資料庫的唯一 ID。此值會在資料庫還原時會保持相同，即使是不同的資料庫名稱也是如此。 | 
| `rds_backup_seq_id` | int | RDS 在內部用來維護每個交易日誌備份檔案之序號的 ID。 | 
| `backup_file_epoch` | bigint | 產生交易備份檔案的 epoch 時間。 | 
| `backup_file_time_utc` | datetime | `backup_file_epoch` 值的 UTC 時間轉換值。 | 
| `starting_lsn` | numeric(250) | 交易日誌備份檔案之第一個或最舊日誌記錄的日誌序號。 | 
| `ending_lsn` | numeric(250) | 交易日誌備份檔案之最後一個或下一個日誌記錄的日誌序號。 | 
| `is_log_chain_broken` | bit | 布林值，指出目前交易日誌備份檔案與上一個交易日誌備份檔案之間的日誌鏈是否中斷。 | 
| `file_size_bytes` | bigint | 交易備份集的大小 (以位元組為單位)。 | 
| `Error` | varchar(4000) | 錯誤訊息，如果 `rds_fn_list_tlog_backup_metadata` 函數擲出例外狀況的話。NULL，如果沒有例外狀況的話。 | 

# 複製交易日誌備份
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying"></a>

若要將個別資料庫的一組可用交易日誌備份複製到 Amazon S3 儲存貯體，請呼叫 `rds_tlog_backup_copy_to_S3` 預存程序。`rds_tlog_backup_copy_to_S3` 預存程序將起始新任務以複製交易日誌備份。

**注意**  
`rds_tlog_backup_copy_to_S3` 預存程序將複製交易日誌備份，而不會根據 `is_log_chain_broken` 屬性進行驗證。因此，您應該在執行 `rds_tlog_backup_copy_to_S3` 預存程序之前，手動確認未中斷的日誌鏈。如需進一步說明，請參閱 [驗證交易日誌備份日誌鏈](#USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain)。

**Example `rds_tlog_backup_copy_to_S3` 預存程序的使用方式**  

```
exec msdb.dbo.rds_tlog_backup_copy_to_S3
	@db_name='mydatabasename',
	[@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@backup_file_start_time='2022-09-01 01:00:15'],
	[@backup_file_end_time='2022-09-01 21:30:45'],
	[@starting_lsn=149000000112100001],
	[@ending_lsn=149000000120400001],
	[@rds_backup_starting_seq_id=5],
	[@rds_backup_ending_seq_id=10];
```

下列是可用的輸入參數：


****  

| 參數 | Description | 
| --- | --- | 
| `@db_name` | 要複製其交易日誌備份的資料庫名稱。 | 
| `@kms_key_arn` |  客戶管理的 KMS 金鑰。如果您使用 AWS 受管 KMS 金鑰加密資料庫執行個體，則必須建立客戶受管金鑰。如果您使用客戶管理的金鑰為資料庫執行個體加密，則可以使用相同的 KMS 金鑰 ARN。 | 
| `@backup_file_start_time` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[backup_file_time_utc]` 資料欄提供的 UTC 時間戳記。 | 
| `@backup_file_end_time` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[backup_file_time_utc]` 資料欄提供的 UTC 時間戳記。 | 
| `@starting_lsn` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[starting_lsn]` 資料欄提供的日誌序號 (LSN) | 
| `@ending_lsn` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[ending_lsn]` 資料欄提供的日誌序號 (LSN)。 | 
| `@rds_backup_starting_seq_id` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[rds_backup_seq_id]` 資料欄提供的序號。 | 
| `@rds_backup_ending_seq_id` | 從 `rds_fn_list_tlog_backup_metadata` 函數的 `[rds_backup_seq_id]` 資料欄提供的序號。 | 

您可以指定一組時間、LSN 或序列 ID 參數。只需要一組參數。

您也可以在任何集合中只指定單一參數。例如，透過僅針對 `backup_file_end_time` 參數提供一值，七天限制內在該時間之前的所有可用交易日誌備份檔案都會複製到 Amazon S3 儲存貯體。

下列是 `rds_tlog_backup_copy_to_S3` 預存程序的有效輸入參數組合。


****  

| 提供的參數 | 預期的結果 | 
| --- | --- | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3  <br />	@db_name = 'testdb1',<br />            @backup_file_start_time='2022-08-23 00:00:00',<br />            @backup_file_end_time='2022-08-30 00:00:00';</pre>  | 複製過去七天的交易日誌備份，且存在於提供的範圍 `backup_file_start_time` 與 `backup_file_end_time` 之間。在此範例中，預存程序會複製已在 '2022-08-23 00:00:00' 與 '2022-08-30 00:00:00'之間產生的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />           @db_name = 'testdb1',<br />           @backup_file_start_time='2022-08-23 00:00:00';</pre>  | 複製過去七天的交易日誌備份，並從提供的 `backup_file_start_time` 開始。在此範例中，預存程序會複製來自 '2022-08-23 00:00:00' 的交易日誌備份，直到最新的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />          @db_name = 'testdb1',<br />          @backup_file_end_time='2022-08-30 00:00:00';</pre>  | 複製過去七天的交易日誌備份，直到提供的 `backup_file_end_time`。在此範例中，預存程序會複製來自 '2022-08-23 00:00:00' 直到 '2022-08-30 00:00:00' 的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />         @db_name='testdb1',<br />         @starting_lsn =1490000000040007,<br />         @ending_lsn =  1490000000050009;</pre>  | 複製過去七天可用且在所提供範圍 `starting_lsn` 與 `ending_lsn` 之間的交易日誌備份。在此範例中，預存程序會複製過去七天，LSN 範圍介於 1490000000040007 和 1490000000050009 之間的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  複製過去七天可用的交易日誌備份，從提供的 `starting_lsn` 開始。在此範例中，預存程序會複製來自 LSN 1490000000040007 的交易日誌備份，直到最新的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  複製過去七天可用的交易日誌備份，直到提供的 `ending_lsn`。在此範例中，預存程序會複製從過去七天開始直到 lsn 1490000000050009 的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000,<br />       @rds_backup_ending_seq_id= 5000;</pre>  |  複製過去七天可用且存在於所提供範圍 `rds_backup_starting_seq_id` 與 `rds_backup_ending_seq_id` 之間的交易日誌備份。在此範例中，預存程序會複製從過去七天開始，並在所提供 rds 備份序列 ID 範圍內的交易日誌備份，從 seq\$1id 2000 開始，直到 to seq\$1id 5000。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000;</pre>  |  複製過去七天可用的交易日誌備份，從提供的 `rds_backup_starting_seq_id` 開始。在此範例中，預存程序會複製從 seq\$1id 2000 開始的交易日誌備份，直到最新的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_ending_seq_id= 5000;</pre>  |  複製過去七天可用的交易日誌備份，直到提供的 `rds_backup_ending_seq_id`。在此範例中，預存程序會複製從過去七天開始，直到 seq\$1id 5000 的交易日誌備份。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_starting_seq_id= 2000;<br />      @rds_backup_ending_seq_id= 2000;</pre>  |  複製具有所提供 `rds_backup_starting_seq_id` 的單一交易日誌備份，如果是在過去七天內提供的話。在此範例中，預存程序會複製 seq\$1id 為 2000 的單一交易日誌備份 (如果它存在於過去七天內)。  | 

## 驗證交易日誌備份日誌鏈
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 設定用於存取交易日誌備份的資料庫必須已啟用自動備份保留。自動備份保留會將資料庫執行個體上的資料庫設為 `FULL` 復原模式。若要支援資料庫的時間點還原，請避免變更資料庫復原模式，這可能會導致日誌鏈中斷。建議您繼續將資料庫設為 `FULL` 復原模式。

若要在複製交易日誌備份之前手動驗證日誌鏈，請呼叫 `rds_fn_list_tlog_backup_metadata` 函數並檢閱 `is_log_chain_broken` 資料欄中的值。值「1」表示目前日誌備份與上一個日誌備份之間的日誌鏈已中斷。

下列範例會在 `rds_fn_list_tlog_backup_metadata` 預存程序的輸出中顯示中斷的日誌鏈。

![\[顯示中斷日誌鏈的 rds_fn_list_tlog_backup_metadata 輸出。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_logchain_error.png)


在一般日誌鏈中，所指定 rds\$1sequence\$1id 之 first\$1lsn 的日誌序號 (LSN) 值應該符合先前 rds\$1sequence\$1id 中 last\$1lsn 的值。在影像中，rds\$1sequence\$1id 45 具有 first\$1lsn 值 90987，其不符合先前 rds\$1sequence\$1id 44 的 last\$1lsn 值 90985。

如需 SQL Server 交易日誌架構和日誌序號的詳細資訊，請參閱 Microsoft SQL Server 文件中的[交易日誌邏輯架構](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver15#Logical_Arch)。

# Amazon S3 儲存貯體資料夾和檔案結構
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.S3namingConvention"></a>

交易日誌備份在 Amazon S3 儲存貯體內具有下列標準結構和命名慣例：
+ 系統會在每個資料庫的 `target_s3_arn` 路徑下建立一個新資料夾，其命名結構為 `{db_id}.{family_guid}`。
+ 在資料夾內，交易日誌備份的檔案名稱結構為 `{db_id}.{family_guid}.{rds_backup_seq_id}.{backup_file_epoch}`。
+ 您可以使用 `rds_fn_list_tlog_backup_metadata` 函數檢視 `family_guid,db_id,rds_backup_seq_id and backup_file_epoch` 的詳細資訊。

下列範例顯示 Amazon S3 儲存貯體內一組交易日誌備份的資料夾和檔案結構。

![\[可存取交易日誌的 Amazon S3 儲存貯體結構\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_s3.png)


# 追蹤任務的狀態
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus"></a>

 若要追蹤複製任務的狀態，請呼叫 `rds_task_status` 預存程序。如果您不提供任何參數，預存程序會傳回所有任務的狀態。

**Example 使用方式：**  

```
exec msdb.dbo.rds_task_status
  @db_name='database_name',
  @task_id=ID_number;
```

下列是選用參數：
+ `@db_name`– 要顯示任務狀態之資料庫的名稱。
+ `@task_id`– 要顯示任務狀態之任務的 ID。

**Example 列出特定任務 ID 之狀態的範例：**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example 列出特定資料庫和任務之狀態的範例：**  

```
exec msdb.dbo.rds_task_status@db_name='my_database',@task_id=5;
```

**Example 列出特定資料庫之所有任務及其狀態的範例：**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example 列出目前執行個體上所有任務及其狀態的範例：**  

```
exec msdb.dbo.rds_task_status;
```

# 取消任務
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.CancelTask"></a>

若要取消執行中任務，請呼叫 `rds_cancel_task` 預存程序。

**Example 使用方式：**  

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

以下是必要參數：
+ `@task_id`– 要取消之任務的 ID。您可以呼叫 `rds_task_status` 預存程序來檢視任務 ID。

如需檢視和取消執行中任務的詳細資訊，請參閱 [使用原生備份和還原，匯入和匯出 SQL Server 資料庫](SQLServer.Procedural.Importing.md)。

# 針對交易日誌備份的存取進行疑難排解
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Troubleshooting"></a>

下列是您使用預存程序存取交易日誌備份時可能遇到的問題。


****  

| 預存程序 | 錯誤訊息 | 問題 | 故障診斷建議 | 
| --- | --- | --- | --- | 
| rds\$1tlog\$1copy\$1setup | 此資料庫執行個體上停用備份。啟用其保留至少為 "1" 的資料庫執行個體備份，然後再試一次。 | 未針對資料庫執行個體啟用自動備份。 |  必須啟用其保留至少一天的資料庫執行個體備份保留。如需啟用自動備份和設定備份保留的詳細資訊，請參閱 [Backup retention period (備份保留期間)](USER_WorkingWithAutomatedBackups.BackupRetention.md)。 | 
| rds\$1tlog\$1copy\$1setup | 執行 rds\$1tlog\$1copy\$1setup 預存程序時發生錯誤。重新連線至 RDS 端點，然後再試一次。 | 發生內部錯誤。 | 重新連線至 RDS 端點，然後重新執行 `rds_tlog_copy_setup` 預存程序。 | 
| rds\$1tlog\$1copy\$1setup | 不支援在交易內執行 rds\$1tlog\$1backup\$1copy\$1setup 預存程序。驗證工作階段沒有已開啟的交易，然後再試一次。 | 已在交易內使用 `BEGIN` 和 `END` 嘗試預存程序。 | 避免在執行 `rds_tlog_copy_setup` 預存程序時使用 `BEGIN` 和 `END`。 | 
| rds\$1tlog\$1copy\$1setup | 輸入參數 `@target_s3_arn` 的 S3 儲存貯體名稱應該至少包含一個空格以外的字元。 | 提供給輸入參數 `@target_s3_arn` 的值不正確。 | 確定輸入參數 `@target_s3_arn` 指定完整的 Amazon S3 儲存貯體 ARN。 | 
| rds\$1tlog\$1copy\$1setup | `SQLSERVER_BACKUP_RESTORE` 選項未啟用，或正在進行啟用。啟用此選項，或稍後再試一次。 | `SQLSERVER_BACKUP_RESTORE` 選項未在資料庫執行個體上啟用，或者只是啟用並擱置內部啟用。 | 依 Requirements (需求) 區段中所指定，啟用 `SQLSERVER_BACKUP_RESTORE` 選項。稍候幾分鐘，然後重新執行 `rds_tlog_copy_setup` 預存程序。 | 
| rds\$1tlog\$1copy\$1setup | 輸入參數 `@target_s3_arn` 的目標 S3 arn 不能空白或為 null。 | 已提供 `NULL` 值給輸入參數 `@target_s3_arn`，或者未提供值。 | 確定輸入參數 `@target_s3_arn` 指定完整的 Amazon S3 儲存貯體 ARN。 | 
| rds\$1tlog\$1copy\$1setup | 輸入參數 `@target_s3_arn` 的目標 S3 arn 必須以 arn:aws 開頭。 | 已提供前面沒有 `arn:aws` 的輸入參數 `@target_s3_arn`。 | 確定輸入參數 `@target_s3_arn` 指定完整的 Amazon S3 儲存貯體 ARN。 | 
| rds\$1tlog\$1copy\$1setup | 目標 S3 ARN 已設為提供的值。 | 先前已執行 `rds_tlog_copy_setup` 預存程序，並使用了 Amazon S3 儲存貯體 ARN 進行設定。 | 若要修改 Amazon S3 儲存貯體值以存取交易日誌備份，請提供不同的 `target S3 ARN`。 | 
| rds\$1tlog\$1copy\$1setup | 無法產生憑證以啟用對交易日誌備份的存取。確認 `rds_tlog_copy_setup` 隨附 S3 路徑 ARN，稍後再試一次。 | 產生憑證以啟用對交易日誌備份的存取時發生未指定的錯誤。 | 檢閱您的設定組態，然後再試一次。 | 
| rds\$1tlog\$1copy\$1setup | 當有擱置中任務時，您無法執行 rds\$1tlog\$1copy\$1setup 預存程序。等待擱置中任務完成，然後再試一次。 | 隨時只能執行兩項任務。有擱置中任務等待完成。 | 檢視擱置中任務並等待它們完成。如需監控任務狀態的詳細資訊，請參閱 [追蹤任務的狀態](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 已針對資料庫 %s 發出 T-log 備份檔案複製任務，任務識別符為 %d。請稍後再試一次。 | 隨時只能針對指定資料庫執行一個複製任務。有擱置中複製任務等待完成。 | 檢視擱置中任務並等待它們完成。如需監控任務狀態的詳細資訊，請參閱 [追蹤任務的狀態](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 必須至少提供這三個參數集的其中一個。SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | 未提供這三個參數集的任一個，或提供的參數組缺少必要參數。 | 您可以指定時間、lsn 或序列 ID 參數。需要這三組參數中的一組。如需必要參數的詳細資訊，請參閱 [複製交易日誌備份](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 您的執行個體上停用備份。請啟用備份，一段時間後再試一次。 | 未針對資料庫執行個體啟用自動備份。 |  如需啟用自動備份和設定備份保留的詳細資訊，請參閱 [Backup retention period (備份保留期間)](USER_WorkingWithAutomatedBackups.BackupRetention.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 找不到指定的資料庫 %s。 | 提供給輸入參數 `@db_name` 的值與資料庫執行個體上的資料庫名稱不符。 | 使用正確的資料庫名稱。若要依名稱列出所有資料庫，請執行 `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 無法針對 SQL Server 系統資料庫或 rdsadmin 資料庫執行 rds\$1tlog\$1backup\$1copy\$1to\$1S3 預存程序。 | 提供給輸入參數 `@db_name` 的值與 SQL Server 系統資料庫名稱或 RDSAdmin 資料庫相符。 | 存取交易日誌備份時，不允許使用下列資料庫：`master, model, msdb, tempdb, RDSAdmin.` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 輸入參數 @db\$1name 的資料庫名稱不能空白或為 null。 | 提供給輸入參數 `@db_name` 的值空白或為 `NULL`。 | 使用正確的資料庫名稱。若要依名稱列出所有資料庫，請執行 `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 資料庫執行個體備份保留期間必須至少設為 1，才能執行 rds\$1tlog\$1backup\$1copy\$1setup 預存程序。 | 未針對資料庫執行個體啟用自動備份。 | 如需啟用自動備份和設定備份保留的詳細資訊，請參閱 [Backup retention period (備份保留期間)](USER_WorkingWithAutomatedBackups.BackupRetention.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 執行預存程序 rds\$1tlog\$1backup\$1copy\$1to\$1S3 時發生錯誤。重新連線至 RDS 端點，然後再試一次。 | 發生內部錯誤。 | 重新連線至 RDS 端點，然後重新執行 `rds_tlog_backup_copy_to_S3` 預存程序。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 只能提供這三個參數集的其中一個。SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | 提供了多個參數集。 | 您可以指定時間、lsn 或序列 ID 參數。需要這三組參數中的一組。如需必要參數的詳細資訊，請參閱 [複製交易日誌備份](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 不支援在交易內執行 rds\$1tlog\$1backup\$1copy\$1to\$1S3 預存程序。驗證工作階段沒有已開啟的交易，然後再試一次。 | 已在交易內使用 `BEGIN` 和 `END` 嘗試預存程序。 | 避免在執行 `rds_tlog_backup_copy_to_S3` 預存程序時使用 `BEGIN` 和 `END`。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 提供的參數落在交易日誌記錄保留期間之外。若要列出可用的交易日誌備份檔案，請執行 rds\$1fn\$1list\$1tlog\$1backup\$1metadata 函數。  | 對於適合複本保留時段的所提供輸入參數，沒有可用的交易日誌備份。 | 使用有效的一組參數再試一次。如需必要參數的詳細資訊，請參閱 [複製交易日誌備份](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 處理請求時發生許可錯誤。確保儲存貯體與資料庫執行個體位於相同的帳戶和區域中，並確認公開文件中針對範本的 S3 儲存貯體政策許可。  | 偵測到提供的 S3 儲存貯體或其政策許可發生問題。 | 確認您針對存取交易日誌備份進行的設定是正確的。如需 S3 儲存貯體設定需求的詳細資訊，請參閱 [要求](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements)。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 不允許在 RDS 僅供讀取複本執行個體上執行 `rds_tlog_backup_copy_to_S3` 預存程序。 | 已在 RDS 僅供讀取複本執行個體上嘗試預存程序。 | 更正至 RDS 主要資料庫執行個體以執行 `rds_tlog_backup_copy_to_S3` 預存程序。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 輸入參數 `@starting_lsn` 的 LSN 必須小於 `@ending_lsn`。 | 提供給輸入參數 `@starting_lsn` 的值大於提供給輸入參數 `@ending_lsn` 的值。 | 確定提供給輸入參數 `@starting_lsn` 的值小於提供給輸入參數 `@ending_lsn` 的值。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | `rds_tlog_backup_copy_to_S3` 預存程序只能由來源資料庫中的 `db_owner` 角色成員執行。 | 對於嘗試在提供的 `db_name` 上執行 `rds_tlog_backup_copy_to_S3` 預存程序的帳戶，尚未授予 `db_owner` 角色。 | 確定執行預存程序的帳戶是透過所提供 `db_name` 的 `db_owner` 角色獲得許可。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 輸入參數的序列 ID `@rds_backup_starting_seq_id` 必須小於或等於或等於`@rds_backup_ending_seq_id`。 | 提供給輸入參數 `@rds_backup_starting_seq_id` 的值大於提供給輸入參數 `@rds_backup_ending_seq_id` 的值。 | 確定提供給輸入參數 `@rds_backup_starting_seq_id` 的值小於提供給輸入參數 `@rds_backup_ending_seq_id` 的值。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | SQLSERVER\$1BACKUP\$1RESTORE 選項未啟用，或正在進行啟用。啟用此選項，或稍後再試一次。 | `SQLSERVER_BACKUP_RESTORE` 選項未在資料庫執行個體上啟用，或者只是啟用並擱置內部啟用。 | 依 Requirements (需求) 區段中所指定，啟用 `SQLSERVER_BACKUP_RESTORE` 選項。稍候幾分鐘，然後重新執行 `rds_tlog_backup_copy_to_S3` 預存程序。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 輸入參數 `@backup_file_start_time` 的開始時間必須小於 `@backup_file_end_time`。 | 提供給輸入參數 `@backup_file_start_time` 的值大於提供給輸入參數 `@backup_file_end_time` 的值。 | 確定提供給輸入參數 `@backup_file_start_time` 的值小於提供給輸入參數 `@backup_file_end_time` 的值。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 由於缺少存取權，我們無法處理請求。請檢查功能的設定和許可。 | Amazon S3 儲存貯體許可可能有問題，或提供的 Amazon S3 儲存貯體位於另一個帳戶或區域中。 | 確保授權 Amazon S3 儲存貯體政策獲得允許 RDS 存取的許可。確保 Amazon S3 儲存貯體與資料庫執行個體位於相同的帳戶和區域中。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 對於未經儲存體加密的執行個體，您無法提供 KMS 金鑰 ARN，作為預存程序的輸入參數。 | 未在資料庫執行個體上啟用儲存體加密時，不應提供輸入參數 `@kms_key_arn`。 | 請不要提供輸入參數給 `@kms_key_arn`。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 對於儲存體加密的執行個體，您必須提供 KMS 金鑰 ARN，作為預存程序的輸入參數。 | 在資料庫執行個體上啟用儲存體加密時，必須提供輸入參數 `@kms_key_arn`。 | 提供輸入參數給 `@kms_key_arn`，其中有一值符合用於交易日誌備份之 Amazon S3 儲存貯體的 ARN。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 在執行 `rds_tlog_backup_copy_to_S3` 預存程序之前，您必須先執行 `rds_tlog_copy_setup` 預存程序並設定 `@target_s3_arn`。 | 在嘗試執行 `rds_tlog_backup_copy_to_S3` 預存程序之前，尚未完成對交易日誌備份設定程序的存取。 | 執行 `rds_tlog_copy_setup` 預存程序，然後再執行 `rds_tlog_backup_copy_to_S3` 預存程序。如需執行設定程序以存取交易日誌備份的詳細資訊，請參閱 [設定交易日誌備份的存取權](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md)。 | 