エンドポイントの実装
エンドポイントは、要求をネイティブにリッスンできるサービスです。SMO は、Endpoint オブジェクトを使用することで、さまざまな種類のエンドポイントをサポートしています。Endpoint オブジェクトのインスタンスを作成し、そのプロパティを設定することで、特定のプロトコルを必要とする特定の種類のペイロードを処理するためのエンドポイント サービスを作成できます。
Endpoint オブジェクトの EndpointType プロパティを使用して、次の種類のペイロードの 1 つを指定することができます。
データベース ミラーリング
SOAP
Service Broker
Transact-SQL
また、ProtocolType プロパティを使用して、サポートされている次の 2 つのプロトコルを指定することができます。
HTTP プロトコル
TCP プロトコル
ペイロードの種類を指定すると、Payload オブジェクト プロパティを使用して実際のペイロードを設定することができます。Payload オブジェクト プロパティは、プロパティを変更できる、指定された種類のペイロード オブジェクトへの参照を提供します。
DatabaseMirroringPayload オブジェクトに対して、ミラーリング ロール、および暗号化が有効であるかどうかを指定する必要があります。ServiceBrokerPayload オブジェクトには、メッセージ転送、許可される最大接続数、および認証モードに関する情報が必要です。SoapPayloadMethod オブジェクトでは、さまざまなプロパティの設定が必要です。これには、クライアントが使用できる SOAP ペイロード メソッド (ストアド プロシージャおよびユーザー定義関数) を指定する、Add オブジェクト プロパティなどがあります。
Protocol オブジェクト プロパティを使用すると、ProtocolType プロパティで指定された型のプロトコル オブジェクトを参照して、実際のプロトコルを設定することができます。HttpProtocol オブジェクトには、制限された IP アドレス、ポート、Web サイト、および認証情報のリストが必要です。また、TcpProtocol オブジェクトには、制限された IP アドレスおよびポート情報のリストも必要です。
エンドポイントを作成して定義を完了したら、データベース ユーザー、グループ、ロール、およびログオンに対して、アクセスの許可、取り消し、および拒否を行うことができます。
例
次のコード例では、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。詳細については、「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。
Visual Basic でのデータベース ミラーリング エンドポイント サービスの作成
コード例では、SMO でデータベース ミラーリング エンドポイントを作成する方法を示します。これは、データベース ミラーを作成する前に必要な操作です。Database オブジェクトの IsMirroringEnabled プロパティおよびその他のプロパティを使用して、データベース ミラーを作成します。
'Set up a database mirroring endpoint on the server before setting up a database mirror.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Define an Endpoint object variable for database mirroring.
Dim ep As Endpoint
ep = New Endpoint(srv, "Mirroring_Endpoint")
ep.ProtocolType = ProtocolType.Tcp
ep.EndpointType = EndpointType.DatabaseMirroring
'Specify the protocol ports.
ep.Protocol.Http.SslPort = 5024
ep.Protocol.Tcp.ListenerPort = 6666
'Specify the role of the payload.
ep.Payload.DatabaseMirroring.ServerMirroringRole = ServerMirroringRole.All
'Create the endpoint on the instance of SQL Server.
ep.Create()
'Start the endpoint.
ep.Start()
Console.WriteLine(ep.EndpointState)
Visual C# でのデータベース ミラーリング エンドポイント サービスの作成
コード例では、SMO でデータベース ミラーリング エンドポイントを作成する方法を示します。これは、データベース ミラーを作成する前に必要な操作です。Database オブジェクトの IsMirroringEnabled プロパティおよびその他のプロパティを使用して、データベース ミラーを作成します。
{
//Set up a database mirroring endpoint on the server before
//setting up a database mirror.
//Connect to the local, default instance of SQL Server.
Server srv = new Server();
//Define an Endpoint object variable for database mirroring.
Endpoint ep = default(Endpoint);
ep = new Endpoint(srv, "Mirroring_Endpoint");
ep.ProtocolType = ProtocolType.Tcp;
ep.EndpointType = EndpointType.DatabaseMirroring;
//Specify the protocol ports.
ep.Protocol.Http.SslPort = 5024;
ep.Protocol.Tcp.ListenerPort = 6666;
//Specify the role of the payload.
ep.Payload.DatabaseMirroring.ServerMirroringRole = ServerMirroringRole.All;
//Create the endpoint on the instance of SQL Server.
ep.Create();
//Start the endpoint.
ep.Start();
Console.WriteLine(ep.EndpointState);
}
PowerShell でのデータベース ミラーリング エンドポイント サービスの作成
コード例では、SMO でデータベース ミラーリング エンドポイントを作成する方法を示します。これは、データベース ミラーを作成する前に必要な操作です。Database オブジェクトの IsMirroringEnabled プロパティおよびその他のプロパティを使用して、データベース ミラーを作成します。
# Set the path context to the local, default instance of SQL Server.
CD \sql\localhost\
$srv = get-item default
#Get a new endpoint to congure and add
$ep = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Endpoint -argumentlist $srv,"Mirroring_Endpoint"
#Set some properties
$ep.ProtocolType = [Microsoft.SqlServer.Management.SMO.ProtocolType]::Tcp
$ep.EndpointType = [Microsoft.SqlServer.Management.SMO.EndpointType]::DatabaseMirroring
$ep.Protocol.Http.SslPort = 5024
$ep.Protocol.Tcp.ListenerPort = 6666 #inline comment
$ep.Payload.DatabaseMirroring.ServerMirroringRole = [Microsoft.SqlServer.Management.SMO.ServerMirroringRole]::All
# Create the endpoint on the instance
$ep.Create()
# Start the endpoint
$ep.Start()
# Report its state
$ep.EndpointState;