

# 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 DB インスタンスにあるデータベースの利用可能なトランザクションログのバックアップのメタデータを一覧表示して表示します。
+ 使用可能なトランザクションログのバックアップを RDS for SQL Server からターゲット Amazon S3 バケットにコピーします。
+ DB インスタンス全体を復元しなくても、データベースのポイントインタイム復元を実行できます。DB クラスターのポイントインタイム復元の方法については、「[Amazon RDS の DB インスタンスを特定の時点に復元する](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>

トランザクションログのバックアップへのアクセスを有効にする前に、以下の要件を満たす必要があります。
+  DB インスタンスで自動バックアップを有効に設定し、バックアップの保存期間を 1 日以上の値に設定する必要があります。自動バックアップの有効化と保存ポリシーの設定の詳細については、「[自動バックアップの有効化](USER_WorkingWithAutomatedBackups.Enabling.md)」を参照してください。
+ Amazon S3 バケットは、ソース DB インスタンスと同じアカウントとリージョンに存在している必要があります。トランザクションログのバックアップへのアクセスを有効にする前に、トランザクションログのバックアップファイルに使用するため、既存の Amazon S3 バケットを選択するか、[新しいバケットを作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html)します。
+ Amazon RDS によってトランザクションログファイルをコピーできるように、Amazon S3 バケットのアクセス権限ポリシーを次のように設定する必要があります。

  1. バケットのオブジェクトアカウントの所有権プロパティを **[Bucket Owner Preferred]** (バケット所有者優先) に設定します。

  1. 以下のポリシーを追加します。デフォルトではポリシーがないため、バケットアクセスコントロールリスト (ACL) を使用してバケットポリシーを編集し、追加します。

  

  次の例では、ARN を使用してリソースを指定しています。リソースベースの信頼関係では `SourceArn` および `SourceAccount` のグローバル条件コンテキストキーを使用して、サービスに付与する特定のリソースへのアクセス許可を制限することをお勧めします。ARN での使用の詳細については、「[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)」および「[Amazon RDS の Amazon リソースネーム (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` オプションは、DB インスタンスのオプショングループに追加されている必要があります。`SQLSERVER_BACKUP_RESTORE` オプションの追加についての詳細は、「[SQL Server のネイティブバックアップおよび復元のサポート](Appendix.SQLServer.Options.BackupRestore.md)」を参照してください。
**注記**  
DB インスタンスでストレージ暗号化が有効になっている場合は、ネイティブバックアップと復元オプショングループで提供される IAM ロールに AWS KMS (KMS) アクションとキーを指定する必要があります。

  オプションで、`rds_restore_log` ストアドプロシージャを使用してデータベースのポイントインタイム復元を実行する場合は、ネイティブバックアップ、復元オプショングループ、トランザクションログのバックアップへのアクセスに、同じ Amazon S3 パスを使用することをお勧めします。この方法により、Amazon RDS がオプショングループから復元ログ機能を実行する役割を引き受けると、同じ Amazon S3 パスからトランザクションログのバックアップを取得できるようになります。
+ DB インスタンスが暗号化されている場合、暗号化タイプ (AWSマネージドキーまたはカスタマーマネージドキー) に関係なく、IAM ロールと `rds_tlog_backup_copy_to_S3` ストアドプロシージャでカスタマーマネージド KMS キーを指定する必要があります。

## 制限と推奨事項
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

トランザクションログのバックアップへのアクセスには、次の制限と推奨事項があります。
+  バックアップの保存期間が 1 日から 35 日の間に設定されている任意の DB インスタンスについて、過去 7 日間のトランザクションログのバックアップを一覧表示してコピーできます。
+  トランザクションログのバックアップのアクセスに使用する Amazon S3 バケットは、ソース DB インスタンスと同じアカウントとリージョンに存在している必要があります。クロスアカウントおよびクロスリージョンコピーはサポートされていません。
+  トランザクションログのバックアップのコピー先として設定できる Amazon S3 バケットは 1 つだけです。`rds_tlog_copy_setup` ストアドプロシージャを使用して、新しいターゲット Amazon S3 バケットを選択できます。新しいターゲット Amazon S3 バケットの選択の詳細については、「[トランザクションログのバックアップへのアクセス設定](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md)」を参照してください。
+  RDS インスタンスでストレージ暗号化が有効になっていない場合、`rds_tlog_backup_copy_to_S3` ストアドプロシージャを使用するときに KMS キーを指定することはできません。
+  マルチアカウントコピーはサポートされていません。コピーに使用される IAM ロールは、DB インスタンスの所有者アカウント内の Amazon S3 バケットへの書き込みアクセスのみを許可します。
+  RDS for SQL Server DB インスタンスでは、どのような種類のタスクでも 2 つまでしか実行できません。
+  1 つのデータベースに対して、同時に実行できるコピータスクは 1 つだけです。DB インスタンス上の複数のデータベースのトランザクションログのバックアップをコピーする場合は、データベースごとに個別のコピータスクを使用します。
+  既に Amazon S3 バケットに同じ名前で存在するトランザクションログのバックアップをコピーすると、既存のトランザクションログのバックアップは上書きされます。
+  プライマリ DB インスタンスのトランザクションログのバックアップへのアクセス権が提供されているストアドプロシージャのみを実行できます。これらのストアドプロシージャは、RDS for SQL Server のリードレプリカや、マルチ AZ DB クラスターのセカンダリインスタンスでは実行できません。
+  `rds_tlog_backup_copy_to_S3` ストアドプロシージャの実行中に RDS for SQL Server DB インスタンスを再起動すると、DB インスタンスがオンラインに戻ったときに、タスクは自動的に最初から再開されます。再起動前に、タスクの実行中に 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` ストアドプロシージャを実行します。この手順により、DB インスタンスレベルでトランザクションログのバックアップ機能にアクセスできるようになります。DB インスタンス上の個々のデータベースごとに実行する必要はありません。

**重要**  
トランザクションログのバックアップ機能へのアクセスを設定し、使用するには、データベースユーザーに 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 では、完全な復旧モデルを使用するように設定されたデータベースで、DB インスタンスのバックアップ保存期間を 1 日以上に設定すると、トランザクションログのバックアップが自動で有効になります。トランザクションログのバックアップへのアクセスを有効にすると、最大 7 日間分のトランザクションログのバックアップを 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/ja_jp/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


`rds_fn_list_tlog_backup_metadata` 関数は、次の出力を返します。


****  

| 列名 | データ型 | 説明 | 
| --- | --- | --- | 
| `db_name` | sysname | トランザクションログのバックアップを一覧表示するために指定されたデータベース名。 | 
| `db_id` | int | 入力パラメータ `db_name` の内部データベース識別子。 | 
| `family_guid` | uniqueidentifier | 作成時の元のデータベースの一意の ID。この値は、データベースが復元されても、データベース名が異なっても変わりません。 | 
| `rds_backup_seq_id` | int | RDS が各トランザクションログのバックアップファイルのシーケンス番号を保持するために内部で使用する ID。 | 
| `backup_file_epoch` | bigint | トランザクションのバックアップファイルが生成されたエポック時間。 | 
| `backup_file_time_utc` | datetime | `backup_file_epoch` 値の UTC 時刻変換後の値。 | 
| `starting_lsn` | numeric(25,0) | トランザクションログのバックアップファイルの最初または最も古いログレコードのログシーケンス番号。 | 
| `ending_lsn` | numeric(25,0) | トランザクションログのバックアップファイルの最後またはその次のログレコードのログシーケンス番号。 | 
| `is_log_chain_broken` | bit | 現在のトランザクションログのバックアップファイルと、以前のトランザクションログのバックアップファイル間でログチェーンが壊れているかどうかを示す boolean 値。 | 
| `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];
```

次の入力パラメータが利用可能です。


****  

| パラメータ | 説明 | 
| --- | --- | 
| `@db_name` | トランザクションログのバックアップをコピーするためのデータベース名。 | 
| `@kms_key_arn` |  カスタマーマネージド KMS キー。AWS マネージド KMS キーで DB インスタンスを暗号化する場合は、カスタマーマネージドキーを作成する必要があります。カスタマーマネージドキーで DB インスタンスを暗号化する場合、同じ 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]` 列から提供されたシーケンス ID。 | 
| `@rds_backup_ending_seq_id` | `rds_fn_list_tlog_backup_metadata` 関数の `[rds_backup_seq_id]` 列から提供されたシーケンス ID。 | 

時間、LSN、シーケンス ID のいずれかのパラメータセットを指定できます。必要なパラメータは 1 セットだけです。

また、どのセットでもパラメータを 1 つだけ指定できます。例えば、`backup_file_end_time` パラメータの値のみを指定すると、7 日間の制限内であれば、それ以前に利用可能なすべてのトランザクションログのバックアップファイルが 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>  | 過去 7 日間のトランザクションログのバックアップをコピーします。このバックアップは、指定された `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` を起点として、過去 7 日間のトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは「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` まで、過去 7 日間のトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは「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>  | 過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。このバックアップは、指定された `starting_lsn` から `ending_lsn` の範囲にあります。この例では、ストアドプロシージャは、LSN 範囲が 1490000000040007 から 1490000000050009 までの過去 7 日間のトランザクションログのバックアップをコピーします。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  指定された `starting_lsn` から、過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは LSN 1490000000040007 からのトランザクションログのバックアップを最新のトランザクションログのバックアップにコピーします。  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  指定された `ending_lsn` まで、過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは、LSN が 1490000000050009 までの過去 7 日間のトランザクションログのバックアップをコピーします。  | 
|  <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>  |  過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。このバックアップは、指定された `rds_backup_starting_seq_id` から `rds_backup_ending_seq_id` の範囲に存在します。この例では、ストアドプロシージャは、seq\$1id 2000 から seq\$1id 5000 までの rds バックアップシーケンス ID の範囲内で、過去 7 日間のトランザクションログのバックアップをコピーします。  | 
|  <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` から、過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは 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` まで、過去 7 日間の利用可能なトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは、seq\$1id 5000 までの過去 7 日間のトランザクションログのバックアップをコピーします。  | 
|  <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>  |  過去 7 日以内に利用可能な場合、指定された `rds_backup_starting_seq_id` で 1 つのトランザクションログのバックアップをコピーします。この例では、ストアドプロシージャは、seq\$1id が 2000 の 1 つのトランザクションログのバックアップをコピーします (過去 7 日以内に存在する場合)。  | 

## トランザクションログのバックアップログチェーンの検証
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 トランザクションログのバックアップにアクセスするように設定されたデータベースでは、自動バックアップ保持が有効になっている必要があります。自動バックアップ保持により、DB インスタンスのデータベースが `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/ja_jp/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/ja_jp/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 現在の DB インスタンスのすべてのタスクおよびステータスの一覧表示例:**  

```
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 | この DB インスタンスでは、バックアップは無効になっています。DB インスタンスのバックアップを「1」以上の保持期間で有効にして、もう一度試してください。 | DB インスタンスの自動バックアップを有効化する。 |  DB インスタンスのバックアップの保持期間は、最低でも 1 日以上有効にする必要があります。自動バックアップの有効化バックアップの保持期間の設定の詳細については、「[バックアップの保存期間](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 バケット名には、スペース以外の文字が少なくとも 1 文字含まれている必要があります。 | 入力パラメータ `@target_s3_arn` に間違った値が指定されました。 | 入力パラメータ `@target_s3_arn` に完全な Amazon S3 バケット ARN が指定されていることを確認します。 | 
| rds\$1tlog\$1copy\$1setup | `SQLSERVER_BACKUP_RESTORE` オプションが有効になっていないか、有効化処理中です。オプションを有効にするか、後でもう一度試してください。 | `SQLSERVER_BACKUP_RESTORE` オプションが DB インスタンスで有効になっていないか、有効化されたばかりで内部アクティベーションが保留されています。 | 要件セクションで指定されている `SQLSERVER_BACKUP_RESTORE` オプションを有効にします。数分間待って、再度 `rds_tlog_copy_setup` ストアドプロシージャを実行してください。 | 
| rds\$1tlog\$1copy\$1setup | 入力パラメータ `@target_s3_arn` のターゲット S3 arn を空または null にすることはできません。 | 入力パラメータ `@target_s3_arn` に `NULL` 値が指定されたか、値が指定されませんでした。 | 入力パラメータ `@target_s3_arn` に完全な Amazon S3 バケット ARN が指定されていることを確認します。 | 
| rds\$1tlog\$1copy\$1setup | 入力パラメータ `@target_s3_arn` のターゲット S3 arn は、arn:aws で始まる必要があります。 | 入力パラメータ `@target_s3_arn` は、前に `arn:aws` を付けずに指定されました。 | 入力パラメータ `@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 ストアドプロシージャを実行できません。保留中のタスクが完了するのを待ち、もう一度試してください。 | 一度に実行できるタスクは 2 つだけです。完了を待っている保留中のタスクがあります。 | 保留中のタスクを表示して、完了するのを待ちます。モニタリングタスクのステータスの詳細については、「[タスクのステータスの追跡](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md)」をご参照ください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | T-log バックアップファイルコピータスクがデータベース: %s、タスク ID: %d で既に発行されています。後でもう一度試してください。 | 特定のデータベースに対して、同時に実行できるコピータスクは 1 つだけです。完了を待っている保留中のコピータスクがあります。 | 保留中のタスクを表示して、完了するのを待ちます。モニタリングタスクのステータスの詳細については、「[タスクのステータスの追跡](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md)」をご参照ください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | これらの 3 セットのパラメータセットのうち、少なくとも 1 セットを指定する必要があります。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) | 3 セットのパラメータセットのいずれも指定されていないか、指定されたパラメータセットに必要なパラメータが不足しています。 | 時間、lsn、シーケンス ID のいずれかのパラメータを指定できます。これら 3 セットのパラメータのうち 1 セットが必要です。必要なパラメータの詳細については、「[トランザクションログのバックアップのコピー](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md)」を参照してください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | インスタンスでは、バックアップは無効になっています。バックアップを有効にして、しばらくしてからもう一度試してください。 | DB インスタンスの自動バックアップを有効化する。 |  自動バックアップの有効化バックアップの保持期間の設定の詳細については、「[バックアップの保存期間](USER_WorkingWithAutomatedBackups.BackupRetention.md)」を参照してください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | 指定されたデータベース %s が見つかりません。 | 入力パラメータ `@db_name` に指定された値が DB インスタンスのデータベース名と一致しません。 | 正しいデータベース名を使用してください。すべてのデータベースを名前で一覧表示するには、`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 | rds\$1tlog\$1backup\$1copy\$1setup ストアドプロシージャを実行するには、DB インスタンスのバックアップ保持期間を少なくとも 1 に設定する必要があります。 | DB インスタンスの自動バックアップを有効化する。 | 自動バックアップの有効化バックアップの保持期間の設定の詳細については、「[バックアップの保存期間](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 | これらの 3 セットのパラメータセットのうち、1 セットのみ指定できます。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 のいずれかのパラメータを指定できます。これら 3 セットのパラメータのうち 1 セットが必要です。必要なパラメータの詳細については、「[トランザクションログのバックアップのコピー](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 | リクエストの処理中にアクセス許可エラーがありました。バケットが DB インスタンスと同じアカウントとリージョンにあることを確認し、公開ドキュメントのテンプレートに対する 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 プライマリ DB インスタンスに接続して、`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 | 入力パラメータ `@rds_backup_starting_seq_id` のシーケンス 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` オプションが DB インスタンスで有効になっていないか、有効化されたばかりで内部アクティベーションが保留されています。 | 要件セクションで指定されている `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 バケットが DB インスタンスと同じアカウントとリージョンにあることを確認してください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | ストレージが暗号化されていないインスタンスのストアドプロシージャへの入力パラメータとして、KMS Key ARN は指定できません。 | DB インスタンスでストレージ暗号化が有効化されていない場合は、入力パラメータ `@kms_key_arn` を指定しないでください。 | `@kms_key_arn` の入力パラメータは指定しないでください。 | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | ストレージ暗号化インスタンスのストアドプロシージャへの入力パラメータとして、KMS キー ARN を指定する必要があります。 | DB インスタンスでストレージ暗号化が有効化されている場合は、入力パラメータ `@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_backup_copy_to_S3` ストアドプロシージャを実行する前に、`rds_tlog_copy_setup` ストアドプロシージャを実行してください。トランザクションログのバックアップにアクセスするためのセットアップ手順の実行の詳細については、「[トランザクションログのバックアップへのアクセス設定](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md)」を参照してください。 | 