Applies to:Azure SQL Managed Instance
この記事では、Windows または Linux にインストールされているSQL ServerとAzure SQL Managed Instanceの間でレプリケートできるように、Managed Instance リンク用に環境を準備する方法について説明します。
注意
ダウンロード可能なスクリプトを使用して、Managed Instance リンク用の環境の準備を自動化できます。 詳細については、リンク設定の自動化に関するブログを参照してください。
前提条件
SQL ServerとAzure SQL Managed Instanceの間にリンクを作成するには、次の前提条件が必要です。
- アクティブなAzure サブスクリプション。 アカウントがない場合は、無料アカウントを作成してください。
- Supported バージョンのSQL Server、必要なサービス更新プログラムを適用したもの。
- Azure SQL Managed Instance は、適切なupdate ポリシーを使用して実行されます。 お持ちでない場合は、作業を開始してください。
- 意図して最初のプライマリにする予定のサーバー。 この選択により、リンクを作成する場所が決まります。
- SQL マネージド インスタンス プライマリから SQL Server 2025 セカンダリへのリンク構成は、SQL Server 2025 更新ポリシーで構成された SQL マネージド インスタンスでのみサポートされます。
- SQL マネージド インスタンス プライマリから SQL Server 2022 セカンダリへのリンクの構成は、SQL Server 2022 CU10 以降でのみサポートされており、SQL Server 2022 更新ポリシーで構成された SQL マネージド インスタンスにおいて利用可能です。
注意事項
リンク機能で使用するための SQL マネージド インスタンスを作成する際には、SQL Server が使用する In-Memory OLTP (オンライン トランザクション処理) 機能のメモリ要件を考慮に入れてください。 詳細については、「リソース制限の Azure SQL Managed Instance概要を参照してください。
アクセス許可
SQL Serverの場合、sysadmin アクセス許可が必要です。
Azure SQL Managed Instanceの場合は、SQL Managed Instance Contributor のメンバーであるか、カスタム ロールに対して次のアクセス許可を持っている必要があります。
| Microsoft。Sql/ リソース | 必要な権限 |
|---|---|
| Microsoft.Sql/managedInstances | /read、/write |
| Microsoft.Sql/managedInstances/hybridCertificate | /action |
| Microsoft。Sql/managedInstances/databases | /read、/delete、/write、/completeRestore/action、/readBackups/action、/restoreDetails/read |
| Microsoft。Sql/managedInstances/distributedAvailabilityGroups | /read、/write、/delete、/setRole/action |
| Microsoft。Sql/managedInstances/endpointCertificates | /read |
| Microsoft.Sql/managedInstances/hybridLink | /read、/write、/delete |
| Microsoft。Sql/managedInstances/serverTrustCertificates | /write、/delete、/read |
レプリカ間でパフォーマンスキャパシティを一致させる
リンク機能を使用する場合は、SQL ServerとSQL Managed Instanceのパフォーマンス容量を一致することが重要です。 この照合は、セカンダリ レプリカがプライマリ レプリカからのレプリケーションやフェールオーバー後に対応できない場合に、パフォーマンスの問題を回避するのに役立ちます。 パフォーマンス容量には、CPU コア (または Azure 内の仮想コア)、メモリ、および I/O スループットが含まれます。
SQL Server インスタンスを準備する
SQL Server インスタンスを準備するには、次の点を検証する必要があります。
- サポートされている最小バージョンを使用しています。
-
masterしました。 - 可用性グループ機能を有効にしました。
- 起動時 に適切なトレース フラグを追加しました 。
- バックアップでは チェックサムが使用されます。
- SQL Server 2019以降を使用している場合、高速化データベース復旧を有効化し、ターゲットSQLマネージドインスタンスで使用する予定です。
- ターゲット SQL マネージド インスタンスで Service Broker を使用する予定の場合は、 Service Broker を有効にしました。
これらの変更を有効にするには、SQL Serverを再起動する必要があります。
サービスの更新プログラムをインストールする
SQL Serverバージョンに、バージョンのサポートテーブルに記載されているように、適切なサービス更新プログラムがインストールされていることを確認します。 更新プログラムをインストールする必要がある場合は、更新中にSQL Server インスタンスを再起動する必要があります。
SQL Serverのバージョンを確認するには、SQL Serverで次のTransact-SQL (T-SQL) スクリプトを実行します。
-- Run on SQL Server
-- Shows the version and CU of the SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';
マスター データベースにデータベース マスター キーを作成する
このリンクでは、証明書を使用して、SQL ServerとSQL Managed Instance間の認証と通信を暗号化します。 データベース マスター キーは、リンクによって使用される証明書を保護します。 データベース マスター キーが既にある場合は、この手順をスキップできます。
master データベースにデータベース マスター キーを作成します。 次のスクリプトの <strong_password> の代わりにご自分のパスワードを挿入し、機密情報として安全な場所に保管します。 SQL Serverで次の T-SQL スクリプトを実行します。
-- Run on SQL Server
-- Create a master key
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';
データベース マスター キーがあることを確認するには、SQL Serverで次の T-SQL スクリプトを使用します。
-- Run on SQL Server
USE master;
GO
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%DatabaseMasterKey%';
可用性グループを有効にする
リンク機能は、Always On 可用性グループ機能に依存しており、これは既定では有効になっていません。 詳細については、「Always On 可用性グループ機能を有効にする」を参照してください。
注意
SQL Server on Linuxについては、「 Always On 可用性グループを有効にするを参照してください。
可用性グループ機能が有効になっていることを確認するには、SQL Serverで次の T-SQL スクリプトを実行します。
-- Run on SQL Server
-- Is the availability groups feature enabled on this SQL Server
DECLARE @IsHadrEnabled sql_variant = (select SERVERPROPERTY('IsHadrEnabled'))
SELECT
@IsHadrEnabled as 'Is HADR enabled',
CASE @IsHadrEnabled
WHEN 0 THEN 'Availability groups DISABLED.'
WHEN 1 THEN 'Availability groups ENABLED.'
ELSE 'Unknown status.'
END
as 'HADR status'
重要
SQL Server 2016 (13.x) の場合、可用性グループ機能を有効にする必要がある場合は、「Prepare SQL Server 2016 の前提条件 - Azure SQL Managed Instance リンクに記載されている追加の手順を完了する必要があります。 リンクでサポートされている SQL Server 2017 (14.x) 以降のバージョンでは、これらの追加の手順は必要ありません。
可用性グループ機能が有効になっていない場合は、以下の手順に従って有効にします。
SQL Server 構成マネージャー を開きます。
左側のウィンドウから SQL Server Services を選択します。
SQL Server サービスを右クリックし、Properties を選択します。
[Always On 可用性グループ] タブにアクセスします。
[AlwaysOn 可用性グループを有効にする] チェックボックスをオンにして、[OK] を選択します。
- SQL Server 2016 (13.x) を使用している場合、および Always On 可用性グループを有効にする場合 オプションはメッセージ
This computer is not a node in a failover clusterで無効になります。 Prepare SQL Server 2016 の前提条件 - Azure SQL Managed Instance リンクで説明されている追加の手順に従ってください。 これらの他の手順を完了したら、戻って、この手順をもう一度やり直してください。
- SQL Server 2016 (13.x) を使用している場合、および Always On 可用性グループを有効にする場合 オプションはメッセージ
ダイアログで [OK] を選択します。
SQL Server サービスを再起動します。
起動時のトレース フラグを有効にする
リンクのパフォーマンスを最適化するために、起動時に次のトレース フラグを有効にすることをお勧めします。
-
-T1800: このトレース フラグは、可用性グループ内のプライマリ レプリカとセカンダリ レプリカのログ ファイルが、セクター サイズが 512 バイトと 4KB のように異なるディスクでホストされているときのパフォーマンスを最適化します。 プライマリ レプリカとセカンダリ レプリカの両方のディスク セクター サイズが 4KB であれば、このトレース フラグは必要ありません。 詳しくは、KB3009974 を参照してください。 -
-T9567: このトレース フラグは、自動シード処理時の可用性グループのデータ ストリーム圧縮を有効にします。 圧縮によってプロセッサの負荷が増加しますが、シード処理中の転送時間が大幅に短縮されます。
注意
SQL Server on Linuxについては、「有効なトレース フラグ」を参照してください。
起動時にこれらのトレース フラグを有効にするには、次の手順を使用します。
SQL Server 構成マネージャーを開きます。
左側のウィンドウから SQL Server Services を選択します。
SQL Server サービスを右クリックし、Properties を選択します。
[起動時のパラメーター] タブに移動します。[起動時のパラメーターの指定] に「
-T1800」と入力し、[追加] を選択して起動時のパラメーターを追加します。 次に、「-T9567」と入力して [追加] を選択し、他のトレース フラグを追加します。 [適用] を選択して変更を保存します。
[OK] を選択して [プロパティ] ウィンドウを閉じます。
詳細については、「トレース フラグを有効にするための構文」を参照してください。
チェックサムでバックアップを使用する
リンクを作成する場合、プライマリ レプリカとセカンダリ レプリカの間の初期シード処理は、プライマリ レプリカ上のデータベースの完全バックアップを取得し、セカンダリ レプリカに転送し、そこで復元することによって行われます。 完全バックアップを実行するときは、 WITH CHECKSUM オプションを使用して、バックアップが有効であり、破損していないことを確認することをお勧めします。 詳細については、「BACKUP (Transact-SQL)を参照してください。
SQL Server再起動して構成を検証する
サポートされているバージョンのSQL Serverを使用していることを確認し、Always On 可用性グループ機能を有効にし、スタートアップ トレース フラグを追加したら、SQL Server インスタンスを再起動して、次のすべての変更を適用します。
SQL Server 構成マネージャー を開きます。
左側のウィンドウから SQL Server Services を選択します。
SQL Server サービスを右クリックし、Restart を選択します。
再起動後、SQL Serverで次の T-SQL スクリプトを実行して、SQL Server インスタンスの構成を検証します。
-- Run on SQL Server
-- Shows the version and CU of SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';
GO
-- Shows if the Always On availability groups feature is enabled
SELECT SERVERPROPERTY ('IsHadrEnabled') as 'Is Always On enabled? (1 true, 0 false)';
GO
-- Lists all trace flags enabled on SQL Server
DBCC TRACESTATUS;
SQL Serverバージョンは、適切なサービス更新プログラムで適用されるサポートされているバージョンのいずれかである必要があります。Always On 可用性グループ機能を有効にする必要があります。また、トレース フラグ -T1800 と -T9567 が有効になっている必要があります。 次のスクリーンショットは、適切に構成されたSQL Server インスタンスで予想される結果の例です。
高速データベース復旧を有効にする
SQL Server 2019 以降のバージョンでは、高速データベース復旧を有効にし、永続バージョン ストア (PVS) が PRIMARY に設定されていることを確認します。 ソース SQL Server データベースで高速データベース復旧が有効になっていない場合、データベースの移行後にターゲット SQL マネージド インスタンスで有効にすることはできません。 永続バージョン ストア (PVS) が PRIMARYに設定されていない場合は、ターゲット SQL マネージド インスタンスでの復元操作に関する問題が発生する可能性があります。
SQL Server 2017 以前のバージョンでは、高速データベース復旧はサポートされていないため、この手順は必要ありません。
ソース SQL Server データベースで高速データベース復旧を適切に構成するには、次の手順に従います。
SQL Serverで次のTransact-SQL スクリプトを実行して、高速データベース復旧を有効にします。
ALTER DATABASE [<database name>] SET ACCELERATED_DATABASE_RECOVERY = ON;永続バージョン ストア (PVS) は、既定の構成であるソース データベースで
PRIMARYに設定する必要があります。 これが以前に変更された場合は、移行を開始 する前に PRIMARY に戻す 必要があります。
Service Broker を有効にする
Service Broker は、すべてのバージョンのSQL Serverに対して既定で有効になっています。 Service Broker が無効になっており、SQL Managed Instanceで使用する予定の場合は、SQL Managed Instanceに移行する前に、ソース SQL Server データベースで Service Broker を有効にします。 ソース SQL Server データベースで Service Broker が有効になっていない場合、ターゲット SQL マネージド インスタンスでは使用できません。
Service Broker が有効になっているかどうかを確認するには、SQL Server インスタンスで次のTransact-SQL スクリプトを実行します。
SELECT name AS [Database Name], is_broker_enabled AS [Service Broker Enabled]
FROM sys.databases
WHERE name = '<database name>';
Service Broker が無効になっている場合は、ソース SQL Server データベースで次のTransact-SQL スクリプトを実行して有効にします。
USE master;
GO
ALTER DATABASE [<database name>]
SET ENABLE_BROKER;
GO
ネットワーク接続を構成する
リンクを機能させるには、SQL ServerとSQL Managed Instanceの間にネットワーク接続が必要です。 選択するネットワーク オプションは、SQL Server インスタンスがAzure ネットワーク上にあるかどうかによって異なります。
Azure 仮想マシン上の SQL Server
SQL Managed Instanceをホストするのと同じAzure仮想ネットワークにSQL Server on Azure Virtual Machinesをデプロイするのが最も簡単な方法です。これは、2 つのインスタンス間にネットワーク接続が自動的に存在するためです。 詳細については、「
SQL Server on Azure Virtual Machines インスタンスが SQL マネージド インスタンスとは異なる仮想ネットワーク内にある場合は、2 つの仮想ネットワークを接続する必要があります。 このシナリオを機能させるために、仮想ネットワークが同じサブスクリプションに存在する必要はありません。
仮想ネットワークを接続するには、次の 2 つのオプションがあります。
- Azure仮想ネットワーク ピアリング
- VNet 間 VPN ゲートウェイ (Azure ポータル、PowerShell、Azure CLI)
ピアリングは、Microsoftバックボーン ネットワークを使用するため、推奨されます。 そのため、接続の観点からは、ピアリングされた仮想ネットワーク内の仮想マシンと同じ仮想ネットワーク内の仮想マシン間の待機時間に顕著な違いはありません。 仮想ネットワーク ピアリングは、同じリージョン内のネットワーク間でサポートされます。 グローバル仮想ネットワーク ピアリングは、2020 年 9 月 22 日より後に作成されたサブネットでホストされているインスタンスでサポートされています。 詳細については、「よく寄せられる質問 (FAQ)」をご覧ください。
Azure外のSQL Server
SQL Server インスタンスがAzureの外部でホストされている場合は、次のいずれかのオプションを使用して、SQL ServerとSQL Managed Instanceの間に VPN 接続を確立します。
ヒント
データをレプリケートするときの最適なネットワーク パフォーマンスを実現するために、ExpressRoute をお勧めします。 実際のユース ケースに十分な帯域幅を持つゲートウェイをプロビジョニングしてください。
環境間のネットワーク ポート
接続メカニズムに関係なく、ネットワーク トラフィックが環境間を流れるようにするために満たさなければならない要件があります。
SQL Managed Instanceをホストするサブネットのネットワーク セキュリティ グループ (NSG) 規則では、次を許可する必要があります。
- 送信元からのトラフィックを受信する受信ポート 5022 とポート範囲 11000 から 11999 SQL Server IP
- 宛先のSQL Server IPへのトラフィック送信用のアウトバウンド ポート5022
SQL Serverをホストするネットワーク上のすべてのファイアウォールとホスト OS では、次の許可が必要です。
- MI サブネット /24 (10.0.0.0/24 など) の送信元 IP 範囲からのトラフィックを受信するために開かれたインバウンド ポート 5022
- MI サブネット (例: 10.0.0.0/24) の送信先 IP 範囲にトラフィックを送信するために開かれたアウトバウンド ポート 5022 とポート範囲 11000-11999
次の表で、各環境でのポートのアクションについて説明します。
Windows ファイアウォールでポートを開くには、SQL Server インスタンスの Windows ホスト OS で次の PowerShell スクリプトを使用します。
New-NetFirewallRule -DisplayName "Allow TCP port 5022 inbound" -Direction inbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
New-NetFirewallRule -DisplayName "Allow TCP port 5022 outbound" -Direction outbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
次の図は、オンプレミスのネットワーク環境の例を示しています。環境内のすべてのファイアウォールには、SQL Serverをホストする OS ファイアウォールや、企業のファイアウォールやゲートウェイなど、ポートを開く必要があることを示しています。
重要
- ポートは、ホスト サーバーや、ネットワーク上のすべての企業ファイアウォールまたはゲートウェイなど、ネットワーク環境内のすべてのファイアウォールで開く必要があります。 企業環境では、企業ネットワーク レイヤーで追加のポートを開くため、このセクションの情報をネットワーク管理者に示すことが必要な場合があります。
- SQL Server側でエンドポイントをカスタマイズすることもできますが、SQL Managed Instanceのポート番号を変更したりカスタマイズしたりすることはできません。
- マネージド インスタンスをホストするサブネットの IP アドレス範囲と、SQL Serverが重複しないようにする必要があります。
許可リストに URL を追加する
ネットワーク セキュリティ設定によっては、SQL Managed Instance FQDN と、Azureで使用されるリソース管理エンドポイントの一部の URL を許可リストに追加することが必要になる場合があります。
許可リストに追加する必要があるリソースの一覧を次に示します。
- SQL マネージド インスタンスの完全修飾ドメイン名、すなわち FQDN。 たとえば、
managedinstance.a1b2c3d4e5f6.database.windows.netと指定します。 - Microsoft Entraオーソリティ
- Microsoft Entra エンドポイントリソースID
- Resource Manager エンドポイント
- サービス エンドポイント
政府向けクラウド用 SSMS の構成 セクションの手順に従って、SQL Server Management Studio (SSMS) の Tools インターフェイスにアクセスし、許可リストに追加する必要があるクラウド内のリソースの特定の URL を特定します。
ネットワーク接続をテストする
リンクを機能させるには、SQL ServerとSQL Managed Instanceの間の双方向ネットワーク接続が必要です。 SQL Server側でポートを開き、SQL Managed Instance側で NSG 規則を構成したら、SQL Server Management Studio (SSMS) またはTransact-SQLを使用して接続をテストします。
ネットワークをテストするには、SQL ServerとSQL Managed Instanceの両方で一時的な SQL エージェント ジョブを作成して、2 つのインスタンス間の接続を確認します。 SSMS でネットワーク チェッカーを使用すると、ジョブが自動的に作成され、テストの完了後に削除されます。 T-SQL を使用してネットワークをテストする場合は、SQL Agent ジョブを手動で削除する必要があります。
注意
SQL Server on LinuxでのSQL Server エージェントによる PowerShell スクリプトの実行は現在サポートされていないため、現在、SQL Server on LinuxでSQL Server エージェント ジョブから Test-NetConnection を実行することはできません。
SQL Agent を使用してネットワーク接続をテストするには、次の要件が必要です。
- テストを実行するユーザーは、ジョブを作成するためにアクセス許可 (sysadmin のいずれか
msdb) を持っているか、SQL ServerとSQL Managed Instanceの両方について SQLAgentOperator ロールに属している必要があります。 - SQL Server エージェント サービスは、SQL Serverrunningである必要があります。 SQL Managed Instanceではエージェントが既定でオンになっているため、追加のアクションは必要ありません。
次の点を考慮してください。
- 誤検知を回避するには、ネットワーク パス上のすべてのファイアウォールでインターネット制御メッセージ プロトコル (ICMP) トラフィックを許可する必要があります。
- 誤検知を回避するには、ネットワーク パス上のすべてのファイアウォールで、独自のSQL Server UCS プロトコル上のトラフィックを許可する必要があります。 プロトコルをブロックすると、接続テストが成功する可能性がありますが、リンクの作成に失敗します。
- パケット レベルのガードレールが設定された高度なファイアウォールセットアップは、SQL ServerとSQL Managed Instance間のトラフィックを適切に許可するように適切に構成する必要があります。
SSMS でSQL ServerとSQL Managed Instanceの間のネットワーク接続をテストするには、次の手順に従います。
SSMS でプライマリ レプリカとなるインスタンスに接続します。
オブジェクト エクスプローラー でデータベースを展開し、セカンダリにリンクするデータベースを右クリックします。 Tasks>Azure SQL Managed Instance link>Test Connection を選択して、Network Checker ウィザードを開きます。
ネットワーク チェッカー ウィザードの [概要] ページで [次へ] を選択肢ます。
すべての要件が [前提条件] ページで満たされている場合は、[次へ] を選択します。 それ以外の場合は、満たされていない前提条件を解決し、[検証の再実行] を選択します。
[ログイン] ページで、[ログイン] を選択して、セカンダリ レプリカになるもう一方のインスタンスに接続します。 [次へ] を選択します。
[ネットワーク オプションの指定] ページで詳細を確認し、必要に応じて IP アドレスを指定します。 [次へ] を選択します。
[概要] ページで、ウィザードが実行する操作を確認し、[完了] を選択して 2 つのレプリカ間の接続をテストします。
[結果] ページを確認して、2 つのレプリカ間に接続が存在することを確認し、[閉じる] を選択して完了します。
注意事項
次の手順に進むのは、ソース環境とターゲット環境の間のネットワーク接続を検証済みの場合だけにしてください。 それ以外の場合は、進める前に、ネットワーク接続の問題のトラブルシューティングを行ってください。
TDE で保護されたデータベースの証明書を移行する (省略可能)
Transparent Data Encryption (TDE) によって保護されたSQL Server データベースを SQL マネージド インスタンスにリンクする場合は、リンクを使用する前に、対応する暗号化証明書をオンプレミスまたはAzure VM SQL Server インスタンスから SQL マネージド インスタンスに移行する必要があります。 詳細な手順については、「TDE で保護されたデータベースの証明書をAzure SQL Managed Instanceに取得する」を参照してください。
サービスで管理される TDE キーで暗号化されたSQL Managed InstanceデータベースをSQL Serverにリンクすることはできません。 暗号化されたデータベースをSQL Serverにリンクできるのは、カスタマー マネージド キーで暗号化されていて、宛先サーバーがデータベースの暗号化に使用したのと同じキーにアクセスできる場合のみです。 詳細については、Azure Key Vault を使用して SQL Server TDE を設定するを参照してください。
注意
Azure Key Vaultは、SQL Server 2022 の
SSMS のインストールする
SQL Server Management Studio (SSMS) は、Managed Instance リンクを使用する最も簡単な方法です。 クライアント コンピューターに最新バージョンの SQL Server Management Studio (SSMS) をインストールします。
インストールが完了したら、SSMS を開き、サポートされているSQL Server インスタンスに接続します。 ユーザー データベースを右クリックし、メニューに Azure SQL Managed Instance link オプションが表示されていることを確認します。
政府機関向けクラウド用に SSMS を構成する
SQL Managed Instanceを政府機関向けクラウドにデプロイする場合は、適切なクラウドを使用するように SQL Server Management Studio (SSMS) 設定を変更する必要があります。 SQL Managed Instanceを政府機関向けクラウドにデプロイしていない場合は、この手順をスキップします。
SSMS の設定を更新するには、次の手順のようにします。
- SSMS を開きます。
- メニューから [ツール] を選んだ後、[オプション] を選びます。
- Azure Services を展開し、 Azure Cloud を選択します。
- [
Azure クラウドの選択 で、ドロップダウン リストを使用してAzureUSGovernment 、または別の政府機関向けクラウド (AzureChinaCloud 。
パブリック クラウドに戻る場合は、ドロップダウン リストから [AzureCloud] を選びます。
関連するコンテンツ
リンクを使用するには、次の操作を実行します。
SSMS - スクリプトを使用してSQL Serverと SQL Managed Instance 間のリンクを構成します
- リンクをフェールオーバーする
- リンクを使用して移行する
- リンクを維持するためのベスト プラクティス
リンクの詳細については、以下を参照してください。
他のレプリケーションおよび移行シナリオについては、以下を検討してください。