다음을 통해 공유


TransSubscription.SynchronizationAgent 속성

정의

구독을 동기화하는 데 사용할 수 있는 TransSynchronizationAgent 클래스의 인스턴스를 가져옵니다.

public:
 property Microsoft::SqlServer::Replication::TransSynchronizationAgent ^ SynchronizationAgent { Microsoft::SqlServer::Replication::TransSynchronizationAgent ^ get(); };
public Microsoft.SqlServer.Replication.TransSynchronizationAgent SynchronizationAgent { get; }
member this.SynchronizationAgent : Microsoft.SqlServer.Replication.TransSynchronizationAgent
Public ReadOnly Property SynchronizationAgent As TransSynchronizationAgent

속성 값

TransSynchronizationAgent 개체입니다.

예제

// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

TransSubscription subscription;

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Define the push subscription.
    subscription = new TransSubscription();
    subscription.ConnectionContext = conn;
    subscription.DatabaseName = publicationDbName;
    subscription.PublicationName = publicationName;
    subscription.SubscriptionDBName = subscriptionDbName;
    subscription.SubscriberName = subscriberName;

    // If the push subscription exists, start the synchronization.
    if (subscription.LoadProperties())
    {
        // Check that we have enough metadata to start the agent.
        if (subscription.SubscriberSecurity != null)
        {
            // Synchronously start the Distribution Agent for the subscription.
            subscription.SynchronizationAgent.Synchronize();
        }
        else
        {
            throw new ApplicationException("There is insufficent metadata to " +
                "synchronize the subscription. Recreate the subscription with " +
                "the agent job or supply the required agent properties at run time.");
        }
    }
    else
    {
        // Do something here if the push subscription does not exist.
        throw new ApplicationException(String.Format(
            "The subscription to '{0}' does not exist on {1}",
            publicationName, subscriberName));
    }
}
catch (Exception ex)
{
    // Implement appropriate error handling here.
    throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Dim subscription As TransSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Define the push subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription exists, start the synchronization.
    If subscription.LoadProperties() Then
        ' Check that we have enough metadata to start the agent.
        If Not subscription.SubscriberSecurity Is Nothing Then

            ' Synchronously start the Distribution Agent for the subscription.
            subscription.SynchronizationAgent.Synchronize()
        Else
            Throw New ApplicationException("There is insufficent metadata to " + _
             "synchronize the subscription. Recreate the subscription with " + _
             "the agent job or supply the required agent properties at run time.")
        End If
    Else
        ' Do something here if the push subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "The subscription to '{0}' does not exist on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

설명

반환 TransSynchronizationAgent 된 개체의 Synchronize 메서드를 호출하여 구독을 동기화합니다.

구독을 동기화하기 위해 검색 SynchronizationAgent 하기 전에 서버의 속성 변경 내용을 저장하도록 호출 CommitPropertyChanges 해야 합니다.

구독을 값으로 false 만든 경우 구독에 대한 CreateSyncAgentByDefault배포 에이전트 작업이 만들어지지 않습니다. 구독을 동기화하는 데 사용하려면 반환된 TransSynchronizationAgent 개체에 추가 속성을 지정해야 할 수 있습니다.

이 속성은 SynchronizationAgent 게시자에서 고정 서버 역할의 sysadmin 멤버, 게시 데이터베이스의 db_owner 고정 데이터베이스 역할 멤버 또는 구독이 속한 게시에 대한 PAL(게시 액세스 목록)의 멤버만 검색할 수 있습니다.

SynchronizationAgent 검색은 sp_helpsubscription(Transact-SQL) 실행과 동일합니다.

적용 대상