

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

# 使用原生備份與還原
<a name="SQLServer.Procedural.Importing.Native.Using"></a>

啟用並設定原生備份與還原之後，就可以開始使用此選項。您要先連接至 Microsoft SQL Server 資料庫，然後呼叫 Amazon RDS 預存程序來執行工作。如需連接資料庫的指示，請參閱[連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。

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

如果您也提供選用的 KMS 金鑰，金鑰 ARN 的格式為 `arn:aws:kms:region:account-id:key/key-id`。如需詳細資訊，請參閱 [ Amazon 資源名稱 (ARNs) AWS 和服務命名空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。您必須使用對稱加密 KMS 金鑰，為您的備份加密。Amazon RDS 不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[建立對稱加密 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)。

**注意**  
無論您是否使用 KMS 金鑰，原生備份和還原任務預設會透過 SSE-S3 為上傳至 S3 的檔案啟用伺服器端進階加密標準 (AES) 256 位元加密。傳入`@enable_bucket_default_encryption=1`備份預存程序會使用 S3 儲存貯體設定的預設加密金鑰。

如需如何呼叫每個預存程序的相關指示，請參閱下列主題：
+ [備份資料庫](#SQLServer.Procedural.Importing.Native.Using.Backup)
+ [還原資料庫](#SQLServer.Procedural.Importing.Native.Using.Restore)
+ [還原日誌](#SQLServer.Procedural.Importing.Native.Restore.Log)
+ [完成資料庫還原](#SQLServer.Procedural.Importing.Native.Finish.Restore)
+ [處理部分還原的資料庫](#SQLServer.Procedural.Importing.Native.Partially.Restored)
+ [取消任務](#SQLServer.Procedural.Importing.Native.Using.Cancel)
+ [追蹤任務的狀態](#SQLServer.Procedural.Importing.Native.Tracking)

## 備份資料庫
<a name="SQLServer.Procedural.Importing.Native.Using.Backup"></a>

若要備份資料庫，請使用 `rds_backup_database` 預存程序。

**注意**  
在維護時段或 Amazon RDS 正在擷取快照時，您無法備份資料庫。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Backup.Syntax"></a>

```
exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n],
	[@enable_bucket_default_encryption=0|1];
```

下列是必要參數：
+ `@source_db_name` – 要備份之資料庫的名稱。
+ `@s3_arn_to_backup_to` – ARN，指出要用於備份之目錄儲存貯體的 Amazon S3 儲存貯體、存取點、目錄儲存貯體或存取點，以及備份檔案名稱。

  檔案可以有任何副檔名，但通常使用 `.bak`。請注意，存取點 ARNs 格式必須為 `arn:aws:s3:us-east-1:111122223333:access-point-name/object/key`。

下列是選用參數：
+ `@kms_master_key_arn` – 對稱加密 KMS 金鑰的 ARN，用來加密項目。
  + 您無法使用預設的加密金鑰。如果您使用預設金鑰，資料庫將不會備份。
  +  如果您未指定 KMS 金鑰識別碼，則不會加密備份檔案。如需詳細資訊，請參閱[加密 Amazon RDS 資源](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html)。
  + 當您指定 KMS 金鑰時，會使用用戶端加密。
  + Amazon RDS 不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[建立對稱加密 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)。
+ `@overwrite_s3_backup_file` – 此值指出是否覆寫現有的備份檔案。
  + `0` – 不覆寫現有檔案。此為預設值。

    將 `@overwrite_s3_backup_file` 設為 0 時，如果檔案已存在，則傳回錯誤。
  + `1` – 即使現有檔案不是備份檔案，只要是指定的名稱，就覆寫檔案。
+ `@type` – 備份的類型。
  + `DIFFERENTIAL` – 建立差異備份。
  + `FULL` – 建立完整備份。此為預設值。

  差異備份是以前次完整備份為基礎。您不能在前次完整備份和差異備份之間擷取快照，差異備份才能運作。如果您要建立差異備份，但快照存在，請先建立另一個完整備份，再繼續建立差異備份。

  您可以使用下列範例 SQL 查詢來尋找前次完整備份或快照：

  ```
  select top 1
  database_name
  , 	backup_start_date
  , 	backup_finish_date
  from    msdb.dbo.backupset
  where   database_name='mydatabase'
  and     type = 'D'
  order by backup_start_date desc;
  ```
+ `@number_of_files` – 要將備份分割 (分塊) 的檔案數目。上限為 10。
  + 完整和差異備份都支援多個備份。
  + 如果輸入值 1 或省略參數，則會建立單一備份檔案。

  提供檔案共有的字首，再於末尾加上星號 (`*`)。星號可以位於 S3 ARN *file\$1name* 部分的任何位置。星號會由所產生檔案 (以 `1-of-number_of_files` 開頭) 中的一系列字母數字字串取代。

  例如，如果 S3 ARN 中的檔案名稱是 `backup*.bak` 且您設定 `@number_of_files=4`，則產生的備份檔案為 `backup1-of-4.bak`、`backup2-of-4.bak`、`backup3-of-4.bak` 及 `backup4-of-4.bak`。
  + 如果任一檔案名稱已存在，且 `@overwrite_s3_backup_file` 為 0，則會傳回錯誤。
  + 多個備份在 S3 ARN 的 *file\$1name* 部分中只能有一個星號。
  + 單一檔案備份在 S3 ARN 的 *file\$1name* 部分中可以有任意數量的星號。不會從所產生檔案名稱中移除星號。
+ `@block_size` – 區塊大小 (以位元組為單位)，指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536
+ `@max_transfer_size` – 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數，最高可達 4194304 位元組 (4 MB)。
+ `@buffer_count` – 用於備份程序的 I/O 緩衝區總數。
+ `@enable_bucket_default_encryption` – 指出是否在 S3 中使用 S3 儲存貯體預設加密組態進行伺服器端加密的值。無論此設定為何，目錄儲存貯體一律使用儲存貯體的預設加密組態。
  + `0` – 伺服器端加密透過 SSE-S3 使用進階加密標準 (AES) 256 位元加密。
  + `1` – 伺服器端加密使用 S3 儲存貯體設定[的預設加密](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-encryption.html)。

### 範例
<a name="SQLServer.Procedural.Importing.Native.Backup.Examples"></a>

**Example 差異備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
```

**Example 具有用戶端加密的完整備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example 多個備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4;
```

**Example 多個差異備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
```

**Example 多個備份與加密**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@number_of_files=4;
```

**Example 多個備份與 S3 覆寫**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@number_of_files=4;
```

**Example 備份與區塊大小**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@block_size=512;
```

**Example 多檔案備份與 `@max_transfer_size` 和 `@buffer_count`**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4,
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example 單一檔案備份與 @number\$1of\$1files 參數**  
此範例會產生名為 `backup*.bak` 的備份檔案。  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=1;
```

**Example 具有伺服器端加密的完整備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@enable_bucket_default_encryption=1;
```

**Example 使用存取點完整備份的**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example 使用目錄儲存貯體的存取點進行完整備份**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3express:us-east-1:123456789012:accesspoint/my-access-point--use1-az6--xa-s3/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

## 還原資料庫
<a name="SQLServer.Procedural.Importing.Native.Using.Restore"></a>

若要還原資料庫，請呼叫 `rds_restore_database` 預存程序。在還原任務完成且資料庫開啟後，Amazon RDS 會建立資料庫的初始快照。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Restore.Syntax"></a>

```
exec msdb.dbo.rds_restore_database
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
	@with_norecovery=0|1,
	[@keep_cdc=0|1],
	[@data_file_volume='D:|H:|I:|J:'],
	[@log_file_volume='D:|H:|I:|J:'],
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
        [@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'];
```

下列是必要參數：
+ `@restore_db_name`– 要還原之資料庫的名稱。資料庫名稱是唯一的。您不能還原與現有資料庫同名的資料庫。
+ `@s3_arn_to_restore_from` – 此 ARN 指出 Amazon S3 字首和用來還原資料庫的備份檔案名稱。
  + 若為單一檔案備份，請提供整個檔案名稱。
  + 若為多檔案備份，請提供檔案共有的字首，再於末尾加上星號 (`*`)。
    + 如果使用目錄儲存貯體，`/*`由於[目錄儲存貯體的差異](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)，ARN 必須以 結尾。
  + 如果 `@s3_arn_to_restore_from` 是空的，則會傳回下列錯誤訊息：S3 ARN 字首不得為空。

以下為差異還原的必要參數，但為完整還原的選用參數：
+ `@with_norecovery` – 用於還原操作的復原子句。
  + 設為 `0` 表示以 RECOVERY 還原。在此情況下，資料庫於還原之後會在線上。
  + 設為 `1` 表示以 NORECOVERY 還原。在此情況下，資料庫於還原任務完成之後會停留在 RESTORING 狀態。此方法可讓您進行後續差異還原。
  + 若為 DIFFERENTIAL 還原，請指定 `0` 或 `1`。
  + 若為 `FULL` 還原，此值預設為 `0`。

下列是選用參數：
+ `@keep_cdc` – 指出是否要在還原的資料庫上保留變更資料擷取 (CDC) 組態。設定為 `1` 以啟用 KEEP\$1CDC，`0`設定為停用。預設值為 `0`。
+ `@data_file_volume` – 指定資料庫資料檔案的磁碟機代號。預設值為 `D:`。
+ `@log_file_volume` – 指定資料庫日誌檔案的磁碟機代號 預設值為 `D:`。
+ `@kms_master_key_arn` – 如果您已將備份檔案加密，則此為用來解密檔案的 KMS 金鑰。

  當您指定 KMS 金鑰時，會使用用戶端加密。
+ `@type` – 還原的類型。有效類型為 `DIFFERENTIAL` 和 `FULL`。預設值為 `FULL`。
+ `@block_size` – 區塊大小 (以位元組為單位)，指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536
+ `@max_transfer_size` – 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數，最高可達 4194304 位元組 (4 MB)。
+ `@buffer_count` – 用於備份程序的 I/O 緩衝區總數。

**注意**  
若為差異還原，資料庫必須處於 RESTORING 狀態，或必須已存在一個以 NORECOVERY 還原的任務。  
當資料庫在線上時，您無法還原後續差異備份。  
如果資料庫已有一個使用 RECOVERY 的待定還原任務，則您無法再提交另一個還原任務。  
不支援同時使用 NORECOVERY 和 KEEP\$1CDC 進行完整還原。  
具有跨區域僅供讀取複本的執行個體不支援所有原生還原。  
對於支援的組態，在具有僅供讀取複本的多可用區域執行個體上還原資料庫，與在多可用區域執行個體上還原資料庫類似。您不需要採取任何其他動作來還原複本上的資料庫。

### 範例
<a name="SQLServer.Procedural.Importing.Native.Restore.Examples"></a>

**Example 單一檔案還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

**Example 多檔案還原**  
若要避免在還原多個檔案時發生錯誤，請確保所有備份檔案具有相同的字首，以及沒有其他檔案使用該字首。  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
```

**Example 含 RECOVERY 的完整資料庫還原**  
下列三個範例執行同樣的任務，都是含 RECOVERY 的完整還原。  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
[@type='DIFFERENTIAL|FULL'];
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=0;
```

**Example 含加密的完整資料庫還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example 還原與區塊大小**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@block_size=512;
```

**Example 多檔案還原與 @max\$1transfer\$1size 和 @buffer\$1count**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*',
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example 含 NORECOVERY 的完整資料庫還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=1;
```

**Example 含 NORECOVERY 的差異還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
```

**Example 含 RECOVERY 的差異還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;
```

**Example 使用存取點搭配 RECOVERY 進行完整資料庫還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@with_norecovery=0;
```

**Example 使用 KEEP\$1CDC 進行完整資料庫還原**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## 還原日誌
<a name="SQLServer.Procedural.Importing.Native.Restore.Log"></a>

若要還原日誌，請呼叫 `rds_restore_log` 預存程序。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Syntax"></a>

```
exec msdb.dbo.rds_restore_log 
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
	[@with_norecovery=0|1],
	[@keep_cdc=0|1],
	[@stopat='datetime'],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n];
```

下列是必要參數：
+ `@restore_db_name` – 資料庫的名稱，表示要還原其日誌。
+ `@s3_arn_to_restore_from` – 此 ARN 指出 Amazon S3 字首和用來還原日誌的日誌檔案名稱。檔案可以有任何副檔名，但通常使用 `.trn`。

  如果 `@s3_arn_to_restore_from` 是空的，則會傳回下列錯誤訊息：S3 ARN 字首不得為空。

下列是選用參數：
+ `@keep_cdc` – 指出是否要在還原的資料庫上保留變更資料擷取 (CDC) 組態。設為 1 以啟用 KEEP\$1CDC，設為 0 以停用。預設值為 0。
+ `@kms_master_key_arn` – 如果您已將日誌加密，則此為用來解密日誌的 KMS 金鑰。
+ `@with_norecovery` – 用於還原操作的復原子句。此值預設為 `1`。
  + 設為 `0` 表示以 RECOVERY 還原。在此情況下，資料庫於還原之後會在線上。當資料庫在線上時，您無法還原更多的日誌備份。
  + 設為 `1` 表示以 NORECOVERY 還原。在此情況下，資料庫於還原任務完成之後會停留在 RESTORING 狀態。此方法可讓您進行後續日誌還原。
+ `@stopat` – 此值指定將資料庫還原至指定日期和時間的狀態 (日期時間格式)。只有在指定日期和時間之前寫入的交易日誌記錄，才會套用至資料庫。

  如果不指定此參數 (NULL)，則會還原整個日誌。
+ `@block_size` – 區塊大小 (以位元組為單位)，指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536
+ `@max_transfer_size` – 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數，最高可達 4194304 位元組 (4 MB)。
+ `@buffer_count` – 用於備份程序的 I/O 緩衝區總數。

**注意**  
若為日誌還原，資料庫必須處於還原中狀態，或必須已存在一個以 NORECOVERY 還原的任務。  
當資料庫在線上時，您無法還原日誌備份。  
如果資料庫已有一個使用 RECOVERY 的待定還原任務，則您無法再提交日誌還原任務。

### 範例
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Examples"></a>

**Example 日誌還原**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example 含加密的日誌還原**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example 含 NORECOVERY 的日誌還原**  
下列兩個範例執行同樣的任務，都是含 NORECOVERY 的日誌還原。  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=1;
```

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example 還原與區塊大小**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@block_size=512;
```

**Example 含 RECOVERY 的日誌還原**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0;
```

**Example 含 STOPAT 子句的日誌還原**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0,
@stopat='2019-12-01 03:57:09';
```

**Example 使用 KEEP\$1CDC 還原日誌**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## 完成資料庫還原
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore"></a>

如果資料庫的前次還原任務是使用 `@with_norecovery=1` 執行，則資料庫現在處於 RESTORING 狀態。使用 `rds_finish_restore` 預存程序開啟資料庫，以正常操作。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax"></a>

```
exec msdb.dbo.rds_finish_restore @db_name='database_name';
```

**注意**  
若要使用此方法，資料庫必須處於 RESTORING 狀態，且沒有任何待定還原任務。  
若要完成還原資料庫，請使用 master 登入。或使用最近以 NORECOVERY 還原資料庫或日誌的使用者登入。

## 處理部分還原的資料庫
<a name="SQLServer.Procedural.Importing.Native.Partially.Restored"></a>

### 捨棄部分還原的資料庫
<a name="SQLServer.Procedural.Importing.Native.Drop.Partially.Restored"></a>

若要捨棄局部還原的資料庫 (停留在 RESTORING 狀態)，請使用 `rds_drop_database` 預存程序。

```
exec msdb.dbo.rds_drop_database @db_name='database_name';
```

**注意**  
如果資料庫已有待定還原任務或已完成還原任務，則您無法提交 DROP 資料庫請求。  
若要捨棄資料庫，請使用 master 登入。或使用最近以 NORECOVERY 還原資料庫或日誌的使用者登入。

### 部分還原資料庫的快照還原和時間點復原行為
<a name="SQLServer.Procedural.Importing.Native.Snapshot.Restore"></a>

來源執行個體中的局部還原資料庫 (停留在 RESTORING 狀態)，在快照還原和時間點復原期間，將會從目標執行個體中捨棄。

## 取消任務
<a name="SQLServer.Procedural.Importing.Native.Using.Cancel"></a>

若要取消備份或還原任務，請呼叫 `rds_cancel_task` 預存程序。

**注意**  
您無法取消 FINISH\$1RESTORE 任務。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Cancel.Syntax"></a>

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

以下是必要參數：
+ `@task_id`– 要取消之任務的 ID。您可以呼叫 `rds_task_status` 來取得任務 ID。

## 追蹤任務的狀態
<a name="SQLServer.Procedural.Importing.Native.Tracking"></a>

若要追蹤備份和還原任務的狀態，請呼叫 `rds_task_status` 預存程序。如果您不提供任何參數，預存程序會傳回所有任務的狀態。任務的狀態大約每兩分鐘更新一次。查詢歷程記錄會保留 36 天。

### Usage
<a name="SQLServer.Procedural.Importing.Native.Tracking.Syntax"></a>

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

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

### 範例
<a name="SQLServer.Procedural.Importing.Native.Tracking.Examples"></a>

**Example 列出特定任務的狀態**  

```
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="SQLServer.Procedural.Importing.Native.Tracking.Response"></a>

`rds_task_status` 預存程序會傳回下列幾欄。


****  

| 資料欄 | 描述 | 
| --- | --- | 
| `task_id` |  任務的 ID。  | 
| `task_type` |  任務類型取決於輸入參數，如下所示： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html) 當資料庫隨著下列還原任務完成而開啟之後，Amazon RDS 會建立資料庫的初始快照： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `database_name` |  與任務相關聯之資料庫的名稱。  | 
| `% complete` |  任務的進度 (以百分比值表示)。  | 
| `duration (mins)` |  任務所花的時間 (以分鐘為單位)。  | 
| `lifecycle` |  任務的狀態。可能的狀態如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `task_info` |  任務的其他資訊。 如果備份或還原資料庫時發生錯誤，此欄會包含此錯誤的相關資訊。如需可能錯誤的清單及緩解策略，請參閱[故障診斷](SQLServer.Procedural.Importing.Native.Troubleshooting.md)。  | 
| `last_updated` |  上次更新任務狀態的日期和時間。進度每完成 5% 後，就會更新一次狀態。  | 
| `created_at` | 建立任務的日期和時間。 | 
| S3\$1object\$1arn | 此 ARN 指出 Amazon S3 字首，以及正在備份或還原的檔案名稱。 | 
| `overwrite_s3_backup_file` |  呼叫備份任務時所指定之 `@overwrite_s3_backup_file` 參數的值。如需詳細資訊，請參閱[備份資料庫](#SQLServer.Procedural.Importing.Native.Using.Backup)。  | 
| KMS\$1master\$1key\$1arn | 用於加密 (備份時) 和解密 (還原時) 的 KMS 金鑰的 ARN。 | 
| filepath | 不適用於原生備份與還原任務。 | 
| overwrite\$1file | 不適用於原生備份與還原任務。 | 