다음을 통해 공유


DistributionDatabase.RegisterBusinessLogicHandler 메서드

Registers a business logic handler assembly at the Distributor.

네임스페이스:  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
)

매개 변수

주의

The business logic handler must be registered at the Distributor (and at the Subscriber in the case of a pull subscription). However, the assembly that implements the business logic handler need only be installed on the server on which the Merge Agent runs.

The RegisterBusinessLogicHandler(BusinessLogicHandler) method can only be called by members of the sysadmin fixed server role and members of the db_owner fixed database role

Calling RegisterBusinessLogicHandler(BusinessLogicHandler) is equivalent to executing 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 프로그래밍)