

# SQL Server のアップグレードに関する考慮事項
<a name="USER_UpgradeDBInstance.SQLServer.Considerations"></a>

Amazon RDS によってアップグレードプロセス中に 2 つの DB スナップショットが作成されます。初期の DB スナップショットは、アップグレードの変更が行われる前の DB インスタンスから作成されます。アップグレード完了後に、2 番目の DB スナップショットが取得されます。

**注記**  
DB インスタンスのバックアップ保持期間を 0 より大きく設定した場合にのみ、Amazon RDS は DB スナップショットを作成します。バックアップ保持期間を変更するには、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

アップグレード完了後は、データベースエンジンを前のバージョンに戻すことはできません。前のバージョンに戻す必要がある場合は、アップグレード前に取得された DB スナップショットを復元して、新しい DB インスタンスを作成します。

SQL Server のマイナーバージョンアップグレードまたはメジャーバージョンアップグレード中、[**Free Storage Space**] と [**Disk Queue Depth**] のメトリクスに [`-1`] が表示されます。アップグレード完了後は、両方のメトリクスが [normal (ノーマル)] に戻ります。

SQL Server インスタンスをアップグレードする前に、次の情報を確認してください。

**Topics**
+ [アップグレードを開始する前のベストプラクティス](#USER_UpgradeDBInstance.SQLServer.BestPractices)
+ [マルチ AZ の考慮事項](#USER_UpgradeDBInstance.SQLServer.MAZ)
+ [リードレプリカに関する考慮事項](#USER_UpgradeDBInstance.SQLServer.readreplica)
+ [オプショングループに関する考慮事項](#USER_UpgradeDBInstance.SQLServer.OGPG.OG)
+ [パラメータグループに関する考慮事項](#USER_UpgradeDBInstance.SQLServer.OGPG.PG)

## アップグレードを開始する前のベストプラクティス
<a name="USER_UpgradeDBInstance.SQLServer.BestPractices"></a>

アップグレードプロセスを開始する前に、次の準備手順を実装して、最適なアップグレードパフォーマンスを実現し、潜在的な問題を最小限に抑えます。

タイミングとワークロードの管理  
+ トランザクション量が少ない期間にアップグレードをスケジュールします。
+ アップグレードウィンドウ中の書き込み操作を最小限に抑えます。
これにより、Amazon RDS はセカンダリからプライマリへのペアリング中に RDS が復元する必要があるトランザクションログファイルの数を減らすことで、アップグレードを迅速に完了できます。

トランザクション管理  
+ 長時間実行されるトランザクションを特定してモニタリングします。
+ アップグレードを開始する前に、すべての重要なトランザクションがコミットされていることを確認します。
+ アップグレードウィンドウ中に長時間実行されるトランザクションを防止します。

ログファイルの最適化  
トランザクションログファイルを確認して最適化します。  
+ サイズが大きすぎるログファイルを縮小します。
+ 高いログ消費パターンを減らします。
+ 仮想ログファイル (VLF) を管理します。
+ 通常のオペレーションに十分な空き領域を維持します。

## マルチ AZ の考慮事項
<a name="USER_UpgradeDBInstance.SQLServer.MAZ"></a>

Amazon RDS は、Microsoft SQL Server を実行する DB インスタンスで SQL Server データベースミラーリング (DBM) または Always On 可用性グループ (AG) によるマルチ AZ 配置をサポートしています。詳細については、「[Amazon RDS for Microsoft SQL Server のマルチ AZ 配置](USER_SQLServerMultiAZ.md)」を参照してください。

マルチ AZ 配置 (ミラーリング/AlwaysOn) では、アップグレードをリクエストすると、RDS はプライマリインスタンスとセカンダリインスタンスでローリングアップグレード戦略に従います。ローリングアップグレードでは、セカンダリインスタンスのアップグレード中に少なくとも 1 つのインスタンスをトランザクションに使用できます。停止はフェイルオーバー時に限定されると予想されます。

アップグレード中、RDS はマルチ AZ 設定からセカンダリインスタンスを削除して、セカンダリインスタンスのアップグレードを実行し、切断中にプライマリから取得したトランザクションログのバックアップを復元します。すべてのログバックアップを復元すると、RDS はアップグレードしたセカンダリをプライマリに結合します。すべてのデータベースが同期状態になると、RDS はアップグレードしたセカンダリインスタンスへのフェイルオーバーを実行します。フェイルオーバーが完了すると、RDS は古いプライマリインスタンスのアップグレードに進み、トランザクションログのバックアップを復元して、新しいプライマリとペアリングします。

このフェイルオーバー期間を最小限に抑えるために、接続文字列で `MultiSubnetFailover` 接続オプションをサポートするクライアントライブラリを使用する場合は、AlwaysOn AG 可用性グループリスナーのエンドポイントを使用することをお勧めします。可用性グループリスナーのエンドポイントを使用する場合、フェイルオーバー時間は通常 10 秒未満ですが、この時間には追加のクラッシュ復旧時間は含まれません。

## リードレプリカに関する考慮事項
<a name="USER_UpgradeDBInstance.SQLServer.readreplica"></a>

データベースバージョンのアップグレード中に、Amazon RDS はプライマリ DB インスタンスと共にすべてのリードレプリカをアップグレードします。Amazon RDS では、リードレプリカのデータベースバージョンのアップグレードを個別にサポートしていません。リードレプリカの詳細については、「[Amazon RDS での Microsoft SQL Server 用のリードレプリカの使用](SQLServer.ReadReplicas.md)」を参照してください。

プライマリ DB インスタンスのデータベースバージョンのアップグレードを実行すると、そのすべてのリードレプリカも自動的にアップグレードされます。Amazon RDS は、プライマリ DB インスタンスをアップグレードする前に、すべてのリードレプリカを同時にアップグレードします。リードレプリカは、プライマリ DB インスタンスのデータベースバージョンのアップグレードが完了するまで使用できない場合があります。

## オプショングループに関する考慮事項
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.OG"></a>

DB インスタンスでカスタム DB オプショングループを使用している場合、Amazon RDS で DB インスタンスに新しいオプショングループを自動的に割り当てられないことがあります。例えば、新しいメジャーバージョンにアップグレードする場合、新しいオプショングループを指定する必要があります。新しいオプショングループを作成し、このオプショングループに既存のカスタムオプショングループと同じオプションを追加することをお勧めします。

詳細については、「[オプショングループを作成する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)」または「[オプショングループをコピーする](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)」を参照してください。

## パラメータグループに関する考慮事項
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.PG"></a>

DB インスタンスがカスタム DB パラメータグループを使用している場合:
+ Amazon RDS は、アップグレード後に DB インスタンスを自動的に再起動します。
+ 場合によっては、RDS が新しいパラメータグループを DB インスタンスに自動的に割り当てられないことがあります。

  例えば、新しいメジャーバージョンにアップグレードする場合、新しいパラメータグループを指定する必要があります。新しいパラメータグループを作成し、そのパラメータの設定を既存のカスタムパラメータグループと同じにすることをお勧めします。

詳細については、「[Amazon RDS での DB パラメータグループの作成](USER_WorkingWithParamGroups.Creating.md)」または「[Amazon RDS での DB パラメータグループのコピー](USER_WorkingWithParamGroups.Copying.md)」を参照してください。