次の方法で共有


DistributionDatabase.RegisterBusinessLogicHandler メソッド

ディストリビューターにビジネス ロジック ハンドラー アセンブリを登録します。

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

構文

'宣言
Public Sub RegisterBusinessLogicHandler ( _
    businessLogicHandler As BusinessLogicHandler _
)
'使用
Dim instance As DistributionDatabase 
Dim businessLogicHandler As BusinessLogicHandler

instance.RegisterBusinessLogicHandler(businessLogicHandler)
public void RegisterBusinessLogicHandler(
    BusinessLogicHandler businessLogicHandler
)
public:
void RegisterBusinessLogicHandler(
    BusinessLogicHandler^ businessLogicHandler
)
member RegisterBusinessLogicHandler : 
        businessLogicHandler:BusinessLogicHandler -> unit
public function RegisterBusinessLogicHandler(
    businessLogicHandler : BusinessLogicHandler
)

パラメーター

説明

ビジネス ロジック ハンドラーは、ディストリビューターに (プル サブスクリプションの場合はサブスクライバーにも) 登録する必要があります。 ただし、ビジネス ロジック ハンドラーを実装するアセンブリをインストールする必要があるのは、マージ エージェントを実行するサーバーのみです。

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

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

使用例

          // Specify the Distributor name and business logic properties.
            string distributorName = publisherInstance;
            string assemblyName = @"C:\Program Files\Microsoft SQL Server\110\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\110\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.EnumBusinessLogicHandlers
        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

関連項目

参照

DistributionDatabase クラス

Microsoft.SqlServer.Replication 名前空間

その他の技術情報

マージ同期中のビジネス ロジックの実行

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