次の方法で共有


ReplicationServer.RegisterBusinessLogicHandler Method

レプリケーション サーバーでビジネス ロジック ハンドラ アセンブリを登録します。

名前空間: Microsoft.SqlServer.Replication
アセンブリ: Microsoft.SqlServer.Rmo (microsoft.sqlserver.rmo.dll 内)

構文

'宣言
Public Sub RegisterBusinessLogicHandler ( _
    businessLogicHandler As BusinessLogicHandler _
)
public void RegisterBusinessLogicHandler (
    BusinessLogicHandler businessLogicHandler
)
public:
void RegisterBusinessLogicHandler (
    BusinessLogicHandler^ businessLogicHandler
)
public void RegisterBusinessLogicHandler (
    BusinessLogicHandler businessLogicHandler
)
public function RegisterBusinessLogicHandler (
    businessLogicHandler : BusinessLogicHandler
)

パラメータ

  • businessLogicHandler
    ビジネス ロジック ハンドラが登録されていることを表す BusinessLogicHandler オブジェクトです。

解説

ビジネス ロジック ハンドラは、パブリッシャおよびマージ エージェントを実行するサーバーに登録する必要があります。ただし、ビジネス ロジック ハンドラを実装するアセンブリをインストールする必要があるのは、マージ エージェントを実行するサーバーのみです。

RegisterBusinessLogicHandler メソッドを呼び出すことができるのは、固定サーバー ロール sysadmin のメンバ、および固定データベース ロール db_owner のメンバだけです。

RegisterBusinessLogicHandler を呼び出すと、sp_registercustomresolver (Transact-SQL) を実行したのと同じことになります。

RegisterBusinessLogicHandler メソッドは、SQL Server 2005 以降のリリースで実行されているサーバーでのみ使用できます。

使用例

// Specify the Distributor name and business logic properties.
string distributorName = publisherInstance;
string assemblyName = @"C:\Program Files\Microsoft SQL Server\90\COM\CustomLogic.dll";
string className = "Microsoft.Samples.SqlServer.BusinessLogicHandler.OrderEntryBusinessLogicHandler";
string friendlyName = "OrderEntryLogic";

ReplicationServer distributor;
BusinessLogicHandler customLogic;

    // Create a connection to the Distributor.
ServerConnection distributorConn = new ServerConnection(distributorName);

try
{
    // Connect to the Distributor.
    distributorConn.Connect();

    // Set the Distributor properties.
    distributor = new ReplicationServer(distributorConn);

    // Set the business logic handler properties.
    customLogic = new BusinessLogicHandler();
    customLogic.DotNetAssemblyName = assemblyName;
    customLogic.DotNetClassName = className;
    customLogic.FriendlyName = friendlyName;
    customLogic.IsDotNetAssembly = true;

    Boolean isRegistered = false;

    // Check if the business logic handler is already registered at the Distributor.
    foreach (BusinessLogicHandler registeredLogic
        in distributor.EnumBusinessLogicHandlers())
    {
        if (registeredLogic == customLogic)
        {
            isRegistered = true;
        }
    }

    // Register the custom logic.
    if (!isRegistered)
    {
        distributor.RegisterBusinessLogicHandler(customLogic);
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(string.Format(
        "The {0} assembly could not be registered.",
        assemblyName), ex);
}
finally
{
    distributorConn.Disconnect();
}
' Specify the Distributor name and business logic properties.
Dim distributorName As String = publisherInstance
Dim assemblyName As String = "C:\Program Files\Microsoft SQL Server\90\COM\CustomLogic.dll"
Dim className As String = "Microsoft.Samples.SqlServer.BusinessLogicHandler.OrderEntryBusinessLogicHandler"
Dim friendlyName As String = "OrderEntryLogic"

Dim distributor As ReplicationServer
Dim customLogic As BusinessLogicHandler

' Create a connection to the Distributor.
Dim distributorConn As ServerConnection = New ServerConnection(distributorName)

Try
    ' Connect to the Distributor.
    distributorConn.Connect()

    ' Set the Distributor properties.
    distributor = New ReplicationServer(distributorConn)

    ' Set the business logic handler properties.
    customLogic = New BusinessLogicHandler()
    customLogic.DotNetAssemblyName = assemblyName
    customLogic.DotNetClassName = className
    customLogic.FriendlyName = friendlyName
    customLogic.IsDotNetAssembly = True

    Dim isRegistered As Boolean = False

    ' Check if the business logic handler is already registered at the Distributor.
    For Each registeredLogic As BusinessLogicHandler _
    In distributor.RegisteredSubscribers
        If registeredLogic Is customLogic Then
            isRegistered = True
        End If
    Next

    ' Register the custom logic.
    If Not isRegistered Then
        distributor.RegisterBusinessLogicHandler(customLogic)
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The {0} assembly could not be registered.", _
     assemblyName), ex)
Finally
    distributorConn.Disconnect()
End Try

スレッド セーフ

この型の public static (Microsoft Visual Basic では共有 ) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

プラットフォーム

開発プラットフォーム

サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。

対象プラットフォーム

サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。

参照

関連項目

ReplicationServer Class
ReplicationServer Members
Microsoft.SqlServer.Replication Namespace

その他の技術情報

マージ同期中のビジネス ロジックの実行
マージ アーティクルにビジネス ロジック ハンドラを実装する方法 (RMO プログラミング)