適用対象:SQL Server
注意事項
この機能は、将来のバージョンの SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。 高可用性を実現するために、代わりに Always On 可用性グループを使用してください。
重要
SQL Server のデータベース ミラーリングは、Microsoft Fabric データベース ミラーリングとは異なるテクノロジです。 Fabric へのミラーリングにより、分析パフォーマンスが向上し、データ資産を Fabric の OneLake と統合し、Delta Parquet 形式でデータへのアクセスを開く機能が提供されます。
Microsoft Fabric へのミラーリングを使用すると、SQL Server 2016 以降、Azure SQL Database、Azure SQL Managed Instance、Cosmos DB、Oracle、Snowflake などのデータを含め、既存のデータ資産を Fabric の OneLake に継続的にレプリケートできます。
データベースの証人を設定するには、データベース所有者は、データベース エンジンのインスタンスを証人サーバーの役割に割り当てます。 監視サーバー インスタンスは、プリンシパル サーバー インスタンスまたはミラー サーバー インスタンスと同じコンピューター上で実行できますが、ただし、これにより自動フェールオーバーの堅牢性は大幅に低下します。
ミラーリング監視は独立したコンピューターに常駐させることを強くお勧めします。 特定のサーバーを、同じパートナーまたは別のパートナーを含む複数の同時実行データベース ミラーリング セッションに参加させることができます。 また、特定のサーバーを、あるセッションではパートナーとし、別のセッションではミラーリング監視にすることができます。
ミラーリング監視は、自動フェールオーバーを伴う高い安全性モードでの使用だけが想定されています。 ミラーリング監視を設定する前に、SAFETY プロパティが現在 FULL に設定されていることを確認するよう強くお勧めします。
重要
構成はパフォーマンスに影響する場合があるので、データベース ミラーリングの構成はピーク タイム以外の時間に行うことをお勧めします。
ミラーリング監視サーバーの確立
監視サーバー インスタンスで、データベース ミラーリング用のエンドポイントが存在することを確認してください。 サポートされるミラーリング セッションの数に関係なく、サーバー インスタンスにはデータベース ミラーリング エンドポイントが 1 つだけ存在する必要があります。 このサーバー インスタンスをデータベース ミラーリング セッションで証人としてのみ使用する場合は、エンドポイントに WITNESS の役割を割り当ててください (ROLE**=**WITNESS)。 このサーバー インスタンスを 1 つ以上の他のデータベース ミラーリング セッションのパートナーとして使用する場合、エンドポイントの役割を ALL に割り当てます。
SET WITNESS ステートメントを実行するには、データベース ミラーリング セッションが (パートナー間で) 既に開始されていて、ミラーリング監視のエンドポイントの STATE が STARTED に設定されている必要があります。
ミラー サーバー インスタンスにデータベース ミラーリング エンドポイントがあるかどうか、およびそのインスタンスの役割と状態を確認するには、そのインスタンスで次の Transact-SQL ステートメントを使用します。
SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints重要
データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。 使用中のエンドポイントを削除すると、既存のセッションの接続が切断されます。 セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリングのエンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。 詳細については、「クォーラム: データベースの可用性にミラーリング監視が与える影響 (データベース ミラーリング)」を参照してください。
ミラーリング監視にエンドポイントが存在しない場合は、「Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)」を参照してください。
パートナー インスタンスが異なるドメイン ユーザー アカウントで実行されている場合、各インスタンスの master データベースに別のアカウントのログインを作成します。 詳細については、「Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)」を参照してください。
プリンシパル サーバーに接続し、次のステートメントを実行します。
ALTER DATABASE <database_name>SET WITNESS =<server_network_address>
ここで、<database_name> はミラー化するデータベースの名前 (この名前は両方のパートナーで同じです) であり、<server_network_address> は監視サーバー インスタンスのサーバー ネットワーク アドレスです。
サーバー ネットワーク アドレスの構文は次のとおりです。
TCP://<system-address>:<port>
<<system-address>> は目的のコンピューター システムを明確に指定する文字列です。また、<
> はパートナー サーバー インスタンスのミラーリング エンドポイントが使用するポート番号です。 詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。たとえば、プリンシパル サーバー インスタンスでは、次の ALTER DATABASE ステートメントでミラーリング監視を設定します。 データベース名は AdventureWorks、システム アドレスは DBSERVER3 (監視サーバーの名前) で、監視サーバーのデータベース ミラーリング エンドポイントで使用されるポートは
7022です:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://DBSERVER3:7022'
例
次の例では、データのミラーリング監視を確立します。 監視サーバー インスタンス (WITNESSHOST4 上の既定のインスタンス) で:
ポート
7022を使用して、このサーバー インスタンスに WITNESS ロール専用のエンドポイントを作成します。CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GOパートナー インスタンスのドメイン ユーザー アカウントが異なる場合は、そのログインを作成します。たとえば、ミラーリング監視サーバーが
SOMEDOMAIN\witnessuserで実行されていて、パートナーがMYDOMAIN\dbousernameで実行されている場合などです。 パートナーのログインを作成するには、以下のステートメントを実行します。--Create a login for the partner server instances, --which are both running as MYDOMAIN\dbousername: USE master ; GO CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername]; GO各パートナー サーバー インスタンスで、Witness サーバー インスタンス用のログインを作成します。
--Create a login for the witness server instance, --which is running as SOMEDOMAIN\witnessuser: USE master ; GO CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser]; GOプリンシパル サーバーで、ミラーリング監視サーバー (
WITNESSHOST4) を設定します。ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4:7022' GO
注
サーバー ネットワーク アドレスはターゲット サーバー インスタンスを、インスタンスのミラーリング エンドポイントにマップされるポート番号で示します。
セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加をすべて含む例については、「データベース ミラーリングの設定 (SQL Server)」を参照してください。
参照
ALTER DATABASE (Transact-SQL)
Windows 認証を使用してデータベース ミラーリング エンドポイントへのネットワーク アクセスを許可する (SQL Server)
Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)
Windows 認証を使用してデータベース ミラーリング セッションを確立する方法 (Transact-SQL)
データベースミラーリングセッションから監視を削除する (SQL Server)
データベース ミラーリング監視サーバー