

# Amazon RDS for Microsoft SQL Server のマルチ AZ 配置
<a name="USER_SQLServerMultiAZ"></a>

マルチ AZ 配置は、DB インスタンスの拡張された可用性、データ堅牢性、および耐障害性を提供します。予定されたデータベースメンテナンスまたは予期しないサービス障害時に、Amazon RDS は自動的に最新のセカンダリ DB インスタンスにフェイルオーバーします。この機能により、データベースオペレーションを手動介入なしで速やかに再開できます。プライマリインスタンスおよびスタンバイインスタンスは、同じエンドポイントを使用します。このエンドポイントの物理的なネットワークアドレスは、フェイルオーバープロセスの一環としてセカンダリレプリカに移行します。フェイルオーバーが発生した場合、アプリケーションを再構成する必要はありません。

Amazon RDS は、Microsoft SQL Server で SQL Server データベースミラーリング (DBM)、Always On 可用性グループ (AG)、またはブロックレベルレプリケーションによるマルチ AZ 配置をサポートしています。Amazon RDS は、マルチ AZ 配置のヘルス状態をモニタリングし、維持します。問題が発生した場合、RDS は異常のある DB インスタンスを自動的に修正し、同期を再確立して、フェイルオーバーをスタートします。フェイルオーバーは、スタンバイとプライマリが完全に同期している場合にのみスタートします。何も管理する必要はありません。

SQL Server マルチ AZ をセットアップすると、RDS は DBM、AG、またはブロックレベルレプリケーションを使用するよう、インスタンス上のすべてのデータベースを自動的に設定します。DBM または AG を設定すると、Amazon RDS では、プライマリ、モニタリング、およびセカンダリ DB インスタンスが処理されます。ブロックレベルレプリケーションの場合、RDS はプライマリ DB インスタンスとセカンダリ DB インスタンスを処理します。設定は自動的に行われるため、RDS はデプロイする SQL Server のバージョンに基づいて、DBM、Always On AG、またはブロックレベルレプリケーションを選択します。

Amazon RDS では、SQL Server の以下のバージョンおよびエディションの常時稼働 AG によるマルチ AZ がサポートされます。
+ SQL Server 2022:
  + Standard Edition
  + Enterprise Edition
+ SQL Server 2019:
  + Standard Edition 15.00.4073.23 以降
  + Enterprise Edition
+ SQL Server 2017:
  + Standard Edition 14.00.3401.7 以降
  + Enterprise Edition 14.00.3049.1 以降
+ SQL Server 2016: Enterprise Edition 13.00.5216.0 以降

Amazon RDS では、上述のバージョンを除き、SQL Server の以下のバージョンおよびエディションの DBM によるマルチ AZ がサポートされます。
+ SQL Server 2019: Standard Edition 15.00.4043.16
+ SQL Server 2017: Standard および Enterprise Edition
+ SQL Server 2016: Standard および Enterprise Edition 

Amazon RDS は、SQL Server 2022 Web Edition 16.00.4215.2 以降のブロックレベルレプリケーションでマルチ AZ をサポートしています。

**注記**  
16.00.4215.2 以降で作成された新しい DB インスタンスのみが、ブロックレベルレプリケーションによるマルチ AZ 配置をサポートします。既存の SQL Server 2022 Web Edition インスタンスには、次の制限が適用されます。  
バージョン 16.00.4215.2 の既存のインスタンスの場合、ブロックレベルレプリケーションを有効にするには、同じマイナーバージョン以上の新しいインスタンスにスナップショットを復元する必要があります。
古いマイナーバージョンを持つ SQL Server 2022 Web インスタンスは、マイナーバージョン 16.00.4215.2 以降にアップグレードして、ブロックレベルレプリケーションを有効にすることができます。

次の SQL クエリを使用して、SQL Server DB インスタンスがシングル AZ、DBM によるマルチ AZ、または Always On AGs によるマルチ AZ のいずれであるかを特定できます。このクエリは、SQL Server Web Edition でのマルチ AZ 配置には適用されません。

```
SELECT CASE WHEN dm.mirroring_state_desc IS NOT NULL THEN 'Multi-AZ (Mirroring)'
    WHEN dhdrs.group_database_id IS NOT NULL THEN 'Multi-AZ (AlwaysOn)'
    ELSE 'Single-AZ'
    END 'high_availability'
FROM sys.databases sd
LEFT JOIN sys.database_mirroring dm ON sd.database_id = dm.database_id
LEFT JOIN sys.dm_hadr_database_replica_states dhdrs ON sd.database_id = dhdrs.database_id AND dhdrs.is_local = 1
WHERE DB_NAME(sd.database_id) = 'rdsadmin';
```

出力は次のようになります。

```
high_availability
Multi-AZ (AlwaysOn)
```

## Microsoft SQL Server DB インスタンスへのマルチ AZ の追加
<a name="USER_SQLServerMultiAZ.Adding"></a>

AWS マネジメントコンソールを使用して新しい SQL Server DB インスタンスを作成する場合、データベースミラーリング (DBM)、Always On AG、またはブロックレベルレプリケーションによるマルチ AZ を追加できます。これを行うには、**[マルチ AZ 配置]** から **[はい (ミラーリング/常時/ブロックレベルレプリケーション)]** を選択します。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

コンソールを使用して既存の SQL Server DB インスタンスを変更する場合、**[DB インスタンスを変更]** ページの **[マルチ AZ 配置]** から **[はい (ミラーリング/常時/ブロックレベルレプリケーション)]** を選択して、DBM、AG、またはブロックレベルレプリケーションによるマルチ AZ を追加できます。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

**注記**  
DB インスタンスが Always On 可用性グループ (AG) ではなくデータベースのミラーリング (DBM) を実行している場合は、マルチ AZ を追加する前に、インメモリ最適化を無効にする必要が生じることがあります。DB インスタンスで SQL Server 2016、または 2017 Enterprise Edition が実行され、インメモリ最適化が有効になっている場合は、マルチ AZ を追加する前に DBM でのインメモリ最適化を無効にします。  
DB インスタンスで SQL Server Web Edition の AG またはブロックレベルレプリケーションを実行している場合、このステップは必要ありません。

## Microsoft SQL Server DB インスタンスからのマルチ AZ の削除
<a name="USER_SQLServerMultiAZ.Removing"></a>

AWS マネジメントコンソールを使用して既存の SQL Server DB インスタンスを変更する場合、DBM、AG、またはブロックレベルレプリケーションを使用してマルチ AZ を削除できます。これを行うには、**[DB インスタンスを変更]** ページで **[マルチ AZ 配置]** から **[いいえ (ミラーリング/常時/ブロックレベルレプリケーション)]** を選択します。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。