リンクのフェールオーバー - Azure SQL Managed Instance

適用対象: Azure SQL Managed Instance

この記事では、ディザスター リカバリーや移行を目的として SQL Server Management Studio (SSMS) または PowerShell を使用し、SQL Server と Azure SQL Managed Instance 間でリンクされたデータベースをフェールオーバーする方法を説明します。

前提条件

リンクを通じてデータベースをセカンダリ レプリカにフェールオーバーするには、次の前提条件を満たす必要があります。

ワークロードを停止する

データベースをセカンダリ レプリカにフェールオーバーする準備ができたら、まず、メンテナンス時間中にプライマリ レプリカ上のアプリケーション ワークロードを停止します。 これにより、データベース レプリケーションがセカンダリに追いつくことができるため、データを失うことなくセカンダリにフェールオーバーできます。 フェールオーバーする前に、アプリケーションがプライマリにトランザクションをコミットしていないことを確認します。

データベースのフェールオーバー

Transact-SQL (T-SQL)、SQL Server Management Studio または PowerShell を使用して、リンクされたデータベースをフェールオーバーできます。

SQL Server 2022 CU13 (KB5036432) 以降の Transact-SQL (現在プレビュー段階) を使用して、リンクをフェールオーバーできます。

リンクの計画フェールオーバーを行うには、プライマリ レプリカで次の T-SQL コマンドを使用します。

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

強制フェールオーバーを行うには、セカンダリ レプリカで次の T-SQL コマンドを使用します。

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

フェールオーバー後のデータベースを確認する

SQL Server 2022 の場合、リンクを維持した場合は、SQL Server Management Studio のオブジェクト エクスプローラーAvailability Groups で分散可用性グループが存在することを確認できます。

フェールオーバー中にリンクを削除した場合は、オブジェクト エクスプローラーを使用すると分散型可用性グループがなくなったことを確認できます。 可用性グループを保持した場合、データベースは同期されたままとなります。

可用性グループをクリーン アップする

SQL Server 2022 でフェールオーバーしてもリンクは壊れないため、フェールオーバー後にリンクは維持され、可用性グループと分散型可用性グループは依然として有効です。 これ以外の操作は必要ありません。

ただし、リンクを削除すると、分散型可用性グループのみが削除され、可用性グループは依然としてアクティブになります。 可用性グループを保持するか、削除するかを決定できます。

可用性グループを削除する場合は、次の値を置き換えてからサンプルの T-SQL コードを実行します。

  • <AGName> は SQL Server の可用性グループの名前に (リンクの作成に使用される)。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

リンク機能の詳細については、以下のリソースを確認してください。