Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)
適用対象 SQL Server
このトピックでは、Transact-SQL を使用して、Windows 認証を使用するデータベース ミラーリング エンドポイントを SQL Server で作成する方法について説明します。 データベース ミラーリングまたは Always On 可用性グループをサポートするには、SQL Server の各インスタンスにデータベース ミラーリング エンドポイントが必要です。 サーバー インスタンスは、単一のポートを備えたデータベース ミラーリング エンドポイントを 1 つだけ持つことができます。 データベース ミラーリング エンドポイントは、作成される際に、ローカル システムで利用できる任意のポートを使用できます。 サーバー インスタンス上のすべてのデータベース ミラーリング セッションはそのポートでリッスンし、データベース ミラーリングに対するすべての着信接続はそのポートを使用します。
重要
データベース ミラーリング エンドポイントが存在し、既に使用されている場合、そのエンドポイントを使用することをお勧めします。 使用中のエンドポイントを削除すると、既存のセッションが切断されます。
このトピックの内容
始める前に: セキュリティ
次の対象を使用してデータベース ミラーリング エンドポイントを作成するには: Transact-SQL
始める前に
セキュリティ
サーバー インスタンスの認証方法と暗号化方法は、システム管理者が設定します。
警告
RC4 アルゴリズムは非推奨とされます。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 AES を使用することをお勧めします。
アクセス許可
CREATE ENDPOINT
アクセス許可、または sysadmin
固定サーバー ロールのメンバーシップが必要です。 詳細については、「GRANT (エンドポイントの権限の許可) (Transact-SQL)」を参照してください。
Transact-SQL の使用
Windows 認証を使用するデータベース ミラーリング エンドポイントを作成するには
データベース ミラーリング エンドポイントを作成する SQL Server のインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次のステートメントを使用して、データベース ミラーリング エンドポイントが既に存在するかどうかを判断します。
SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints;
重要
サーバー インスタンスにデータベース ミラーリング エンドポイントが既に存在する場合、サーバー インスタンス上に確立する他のセッションにそのエンドポイントが使用されます。
Transact-SQL を使用して、Windows 認証を使用するエンドポイントを作成するには、
CREATE ENDPOINT
ステートメントを使用します。 ステートメントは、通常、次のような形式になります。CREATE ENDPOINT *\<endpointName>* STATE=STARTED AS TCP ( LISTENER_PORT = *\<listenerPortList>* ) FOR DATABASE_MIRRORING ( [ AUTHENTICATION = **WINDOWS** [ *\<authorizationMethod>* ] ] [ [**,**] ENCRYPTION = **REQUIRED** [ ALGORITHM { *\<algorithm>* } ] ] [**,**] ROLE = *\<role>* )
各値の説明:
<endpointName> は、サーバー インスタンスのデータベース ミラーリング エンドポイントの一意名です。
STARTED によって、エンドポイントが開始され、接続のリッスンが開始されることを指定します。 データベース ミラーリング エンドポイントは、通常、STARTED 状態で作成されます。 STOPPED 状態 (既定) または DISABLED 状態でセッションを開始することもできます。
<listenerPortList> は、サーバーがデータベース ミラーリング メッセージをリッスンする単一のポート番号 (nnnn) です。 TCP のみ使用できます。他のプロトコルを指定するとエラーが発生します。
ポート番号は、コンピューター システムにつき 1 つだけ使用できます。 データベース ミラーリング エンドポイントは、作成される際に、ローカル システムで利用できる任意のポートを使用できます。 システムの TCP エンドポイントによって現在使用されているポートを識別するには、次の Transact-SQL ステートメントを使用します。
SELECT name, port FROM sys.tcp_endpoints;
重要
各サーバー インスタンスには、一意のリスナー ポートが 1 つだけ必要です。
Windows 認証の場合、エンドポイントで接続の認証に NTLM または Kerberos だけを使用する場合を除き、AUTHENTICATION オプションは省略可能です。 <authorizationMethod> では、NTLM、KERBEROS、NEGOTIATE のいずれかで、接続の認証に使用する方法を指定します。 既定値の NEGOTIATE を使用すると、エンドポイントでは、使用する Windows ネゴシエーション プロトコルに NTLM または Kerberos のいずれかが選択されます。 ネゴシエーションでは、相手側のエンドポイントの認証レベルに応じて、認証ありまたは認証なしの接続が可能になります。
Note
可用性グループ (AG) エンドポイント間の通信に Kerberos 認証を使うには、AG によって使用されるデータベース ミラーリング エンドポイントの Kerberos 接続用のサービス プリンシパル名を登録します。
既定では、ENCRYPTION は REQUIRED に設定されます。 これは、このエンドポイントへのすべての接続に暗号化を使用する必要があることを意味します。 ただし、エンドポイントで暗号化を無効にしたり、オプションにできます。 選択肢は次のとおりです。
値 定義 DISABLED 接続を経由して送信されたデータが暗号化されないことを指定します。 SUPPORTED 反対側のエンドポイントで SUPPORTED または REQUIRED が指定されている場合に限り、データを暗号化することを指定します。 REQUIRED 接続を経由して送信されるデータを暗号化する必要があることを示します。 あるエンドポイントで暗号化が必要な場合は、他のエンドポイントで ENCRYPTION が SUPPORTED または REQUIRED に設定されている必要があります。
<algorithm> には、エンドポイントの暗号化標準を指定するオプションが用意されています。 <algorithm> の値は、RC4、AES、AES RC4、または RC4 AES の各アルゴリズムのいずれかまたはそれらの組み合わせになります。
データベース ミラーリング エンドポイントの AES アルゴリズムでは、128 ビットのキー長が使われます。
AES RC4 では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、AES アルゴリズムを優先することが示されます。 RC4 AES では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、RC4 アルゴリズムを優先することが示されます。 両方のエンドポイントで両方のアルゴリズムを異なる順序で指定した場合、接続を受け入れた方のエンドポイントが優先されます。 異なるサーバー間の接続エラーを回避するために、同じアルゴリズムを明示的に指定します。
警告
RC4 アルゴリズムは非推奨とされます。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 AES を使用することをお勧めします。
<role> では、サーバーで実行できるロールが定義されます。 ROLE の指定は必須です。 ただし、エンドポイントのロールが適用されるのは、データベース ミラーリングの場合のみです。 Always On 可用性グループでは、エンドポイントのロールが無視されます。
サーバー インスタンスが、あるデータベース ミラーリング セッションではあるロールを使用し、他のセッションでは別のロールを使用できるようにするには、ROLE=ALL を指定します。 パートナーまたはミラーリング監視サーバーのいずれかになるようにサーバー インスタンスを制限するには、
ROLE = PARTNER
またはROLE = WITNESS
をそれぞれ指定します。注意
SQL Server の各エディションのデータベース ミラーリング オプションの詳細については、「SQL Server 2016 の各エディションでサポートされる機能」を参照してください。
CREATE ENDPOINT 構文の詳細な説明については、「CREATE ENDPOINT (Transact-SQL)」を参照してください。
注意
既存のエンドポイントを変更するには、ALTER ENDPOINT (Transact-SQL) を使用します。
例: データベース ミラーリングをサポートするエンドポイントの作成 (Transact-SQL)
次の例では、3 台の異なるコンピューター システムに既定のサーバー インスタンスのデータベース ミラーリング エンドポイントを作成します。
サーバー インスタンスの役割 | ホスト コンピューター名 |
---|---|
パートナー (初期はプリンシパル) | SQLHOST01\. |
パートナー (初期はミラー) | SQLHOST02\. |
ミラーリング監視サーバー | SQLHOST03\. |
この例では、3 つのエンドポイントすべてでポート番号 7022 を使用しますが、利用可能なポート番号であればどれでも使用できます。 エンドポイントでは既定の Windows 認証を使用するので、AUTHENTICATION オプションは不要です。 エンドポイントはいずれも Windows 認証の既定動作に従い接続のための認証方法をネゴシエートする仕様なので、ENCRYPTION オプションも不要です。 また、すべてのエンドポイントで、既定動作に従い暗号化が必要です。
各サーバー インスタンスは、パートナーまたはミラーリング監視サーバーのいずれかとしてのみ機能するように制限します。各サーバーのエンドポイントは役割を明示 (ROLE=PARTNER または ROLE=WITNESS) します。
重要
各サーバー インスタンスにはエンドポイントを 1 つしか作成できません。 したがって、1 つのサーバー インスタンスをセッションによってパートナーにしたりミラーリング監視サーバーにしたりする場合は、ROLE=ALL を指定します。
--Endpoint for initial principal server instance, which
--is the only server instance running on SQLHOST01.
CREATE ENDPOINT endpoint_mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 7022 )
FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for initial mirror server instance, which
--is the only server instance running on SQLHOST02.
CREATE ENDPOINT endpoint_mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 7022 )
FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for witness server instance, which
--is the only server instance running on SQLHOST03.
CREATE ENDPOINT endpoint_mirroring
STATE = STARTED
AS TCP ( LISTENER_PORT = 7022 )
FOR DATABASE_MIRRORING (ROLE=WITNESS);
GO
Related Tasks
データベース ミラーリング エンドポイントを構成するには
データベース ミラーリング エンドポイントに関する情報を表示するには
参照
ALTER ENDPOINT (Transact-SQL)
暗号化アルゴリズムの選択
CREATE ENDPOINT (Transact-SQL)
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
Windows 認証を使用したデータベース ミラーリングの設定の例 (Transact-SQL)
データベース ミラーリング エンドポイント (SQL Server)