次の方法で共有


MergeSynchronizationAgent クラス

レプリケーション マージ エージェントの機能を提供します。

継承階層

System. . :: . .Object
  System. . :: . .MarshalByRefObject
    Microsoft.SqlServer.Replication..::..MergeSynchronizationAgent

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

構文

'宣言
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
<ComVisibleAttribute(True)> _
<GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")> _
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public Class MergeSynchronizationAgent _
    Inherits MarshalByRefObject _
    Implements IDisposable, IMergeSynchronizationAgent
'使用
Dim instance As MergeSynchronizationAgent
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
[GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public class MergeSynchronizationAgent : MarshalByRefObject, 
    IDisposable, IMergeSynchronizationAgent
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
[ComVisibleAttribute(true)]
[GuidAttribute(L"ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
[PermissionSetAttribute(SecurityAction::Demand, Name = L"FullTrust")]
public ref class MergeSynchronizationAgent : public MarshalByRefObject, 
    IDisposable, IMergeSynchronizationAgent
[<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)>]
[<ComVisibleAttribute(true)>]
[<GuidAttribute("ee5ee47e-6d29-448f-b2d2-f8e632db336a")>]
[<PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")>]
type MergeSynchronizationAgent =  
    class
        inherit MarshalByRefObject
        interface IDisposable
        interface IMergeSynchronizationAgent
    end
public class MergeSynchronizationAgent extends MarshalByRefObject implements IDisposable, IMergeSynchronizationAgent

MergeSynchronizationAgent 型は、以下のメンバーを公開しています。

コンストラクター

  名前 説明
パブリック メソッド MergeSynchronizationAgent MergeSynchronizationAgent クラスのインスタンスを作成します。

先頭に戻る

プロパティ

  名前 説明
パブリック プロパティ AlternateSynchronizationPartnerCollection サブスクリプションの代替同期パートナーを取得します。
パブリック プロパティ AltSnapshotFolder サブスクリプションの代替スナップショット フォルダを取得します。値の設定も可能です。
パブリック プロパティ ComErrorCollection レプリケーション エージェントで発生したエラーのコレクションを取得します。
パブリック プロパティ Distributor サブスクリプションのディストリビュータとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。
パブリック プロパティ DistributorAddress DistributorNetwork プロパティが指定されている場合にディストリビュータへの接続に使用されるネットワーク アドレスを取得します。値の設定も可能です。
パブリック プロパティ DistributorEncryptedPassword インフラストラクチャです。
パブリック プロパティ DistributorLogin SQL Server 認証を使用してディストリビュータに接続するときに使用されるログイン名を取得します。値の設定も可能です。
パブリック プロパティ DistributorNetwork ディストリビュータに接続するときに使用されるクライアントの Net-Library を取得します。値の設定も可能です。
パブリック プロパティ DistributorPassword SQL Server 認証を使用してディストリビュータに接続するときに使用されるパスワードを設定します。
パブリック プロパティ DistributorSecurityMode ディストリビュータに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。
パブリック プロパティ DownloadGenerationsPerBatch パブリッシャからサブスクライバに変更をダウンロードする間に、1 つのバッチで処理される生成結果の数を取得します。値の設定も可能です。生成結果は、アーティクルごとに変更の論理グループとして定義されます。
パブリック プロパティ DynamicSnapshotLocation このサブスクライバのパーティション スナップショットの場所を取得します。値の設定も可能です。
パブリック プロパティ ExchangeType 同期中のデータ交換の方法を取得します。値の設定も可能です。
パブリック プロパティ FileTransferType 初期スナップショット ファイルをサブスクライバに転送する方法を取得します。値の設定も可能です。
パブリック プロパティ HostName HOST_NAME 関数を使用するパラメータ化されたフィルタを評価するときにマージ エージェントが使用する値を取得します。値の設定も可能です。
パブリック プロパティ InputMessageFile インフラストラクチャです。
パブリック プロパティ InternetLogin Web 同期でインターネット認証を使用してパブリッシャに接続するときに使用されるログイン名を取得します。値の設定も可能です。
パブリック プロパティ InternetPassword Web 同期でインターネット認証を使用してパブリッシャに接続するときに使用される InternetLogin プロパティのパスワードを設定します。
パブリック プロパティ InternetProxyLogin Web 同期でインターネット プロキシ サーバーを使用して Web サーバーに接続するときに使用されるログイン名を取得します。値の設定も可能です。
パブリック プロパティ InternetProxyPassword Web 同期でインターネット プロキシ サーバーを使用して Web サーバーに接続するときに使用されるログイン名を設定します。
パブリック プロパティ InternetProxyServer Web 同期で Web サーバーに接続するときに使用されるインターネット プロキシ サーバーの名前を取得します。値の設定も可能です。
パブリック プロパティ InternetSecurityMode Web 同期で Web サーバーに接続するときに使用される HTTP 認証方法を取得します。値の設定も可能です。
パブリック プロパティ InternetTimeout Web サーバーに接続するときの HTTP タイムアウトを取得します。値の設定も可能です。
パブリック プロパティ InternetUrl Web 同期用に構成された Web サービスの URL を取得します。値の設定も可能です。
パブリック プロパティ LastUpdatedTime レプリケーション エージェントが最後にサブスクリプションの同期をとったときのタイムスタンプを取得します。
パブリック プロパティ LoginTimeout 接続が確立されるまで待機する最大秒数を取得します。値の設定も可能です。
パブリック プロパティ MetadataRetentionCleanup メタデータをクリーンアップするかどうかを取得します。値の設定も可能です。
パブリック プロパティ Output エージェントの出力ファイルを返します。値の設定も可能です。
パブリック プロパティ OutputMessageFile インフラストラクチャです。
パブリック プロパティ OutputVerboseLevel エージェントの出力ファイルに書き込まれる情報の詳細さのレベルを取得します。値の設定も可能です。
パブリック プロパティ ProfileName エージェントが使用するプロファイルの名前を取得します。値の設定も可能です。
パブリック プロパティ Publication パブリケーションの名前を取得します。値の設定も可能です。
パブリック プロパティ Publisher サブスクリプションのパブリッシャとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。
パブリック プロパティ PublisherAddress PublisherNetwork プロパティが指定されている場合にパブリッシャへの接続に使用されるネットワーク アドレスを取得します。値の設定も可能です。
パブリック プロパティ PublisherChanges 前回の同期の間にサブスクライバで適用されたパブリッシャの変更の合計数を取得します。
パブリック プロパティ PublisherConflicts 前回の同期の間にパブリッシャで発生した競合の合計数を取得します。
パブリック プロパティ PublisherDatabase パブリケーション データベースの名前を取得します。値の設定も可能です。
パブリック プロパティ PublisherEncryptedPassword インフラストラクチャです。
パブリック プロパティ PublisherFailoverPartner パブリケーション データベースとのデータベース ミラーリング セッションに参加しているフェールオーバー パートナーの SQL Server インスタンスを取得します。値の設定も可能です。
パブリック プロパティ PublisherLogin SQL Server 認証を使用してパブリッシャに接続するときに使用されるログイン名を取得します。値の設定も可能です。
パブリック プロパティ PublisherNetwork パブリッシャに接続するときに使用されるクライアントの Net-Library を取得します。値の設定も可能です。
パブリック プロパティ PublisherPassword SQL Server 認証を使用してパブリッシャに接続するときに使用されるパスワードを設定します。
パブリック プロパティ PublisherSecurityMode パブリッシャに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。
パブリック プロパティ QueryTimeout 内部クエリがタイムアウトになるまでの秒数を取得します。値の設定も可能です。
パブリック プロパティ SecureDistributorEncryptedPassword インフラストラクチャです。
パブリック プロパティ SecurePublisherEncryptedPassword インフラストラクチャです。
パブリック プロパティ SecureSubscriberEncryptedPassword インフラストラクチャです。
パブリック プロパティ Subscriber サブスクライバとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。
パブリック プロパティ SubscriberChanges 前回の同期の間にパブリッシャで適用されたサブスクライバの変更の合計数を取得します。
パブリック プロパティ SubscriberConflicts 前回の同期の間にパブリッシャで発生した競合の合計数を取得します。
パブリック プロパティ SubscriberDatabase サブスクリプション データベースの名前を取得します。値の設定も可能です。
パブリック プロパティ SubscriberDatabasePath インフラストラクチャです。
パブリック プロパティ SubscriberDataSourceType サブスクライバとして使用されるデータ ソースの種類を取得します。値の設定も可能です。
パブリック プロパティ SubscriberEncryptedPassword インフラストラクチャです。
パブリック プロパティ SubscriberLogin SQL Server 認証を使用してサブスクライバに接続するときに使用されるログイン名を取得します。値の設定も可能です。
パブリック プロパティ SubscriberPassword SQL Server 認証を使用してサブスクライバに接続するときに使用されるパスワードを設定します。
パブリック プロパティ SubscriberSecurityMode サブスクライバに接続するときに使用されるセキュリティ モードを取得します。値の設定も可能です。
パブリック プロパティ SubscriptionType サブスクリプションがプッシュ サブスクリプションかプル サブスクリプションかを取得します。値の設定も可能です。
パブリック プロパティ SyncToAlternate 同期の対象が代替同期パートナーかどうかを取得します。値の設定も可能です。
パブリック プロパティ UploadGenerationsPerBatch サブスクライバからパブリッシャに変更をアップロードする間に、1 つのバッチで処理される生成結果の数を取得します。値の設定も可能です。生成結果は、アーティクルごとに変更の論理グループとして定義されます。
パブリック プロパティ UseInteractiveResolver 調整時に対話型の競合回避モジュールを使用するかどうかを取得します。値の設定も可能です。
パブリック プロパティ UseWebSynchronization Web 同期が使用されるかどうかを取得します。値の設定も可能です。
パブリック プロパティ Validate 同期の最後にサブスクライバ データのデータを検証するかどうかを取得します。値の設定も可能です。
パブリック プロパティ WorkingDirectory FTP を使用する場合にスナップショット ファイルにアクセスできる作業ディレクトリを取得します。値の設定も可能です。

先頭に戻る

メソッド

  名前 説明
パブリック メソッド Abort インフラストラクチャです。
パブリック メソッド ClearAllTraceFlags インフラストラクチャです。
パブリック メソッド ClearTraceFlag インフラストラクチャです。
パブリック メソッド CreateObjRef (MarshalByRefObject から継承されています。)
パブリック メソッド Dispose() () () () インフラストラクチャです。
プロテクト メソッド Dispose(Boolean) インフラストラクチャです。
パブリック メソッド EnableTraceFlag インフラストラクチャです。
パブリック メソッド Equals (Object から継承されています。)
プロテクト メソッド Finalize インフラストラクチャです。 (Object. . :: . .Finalize() () () () をオーバーライドします。)
パブリック メソッド GetHashCode (Object から継承されています。)
パブリック メソッド GetLifetimeService (MarshalByRefObject から継承されています。)
パブリック メソッド GetType (Object から継承されています。)
パブリック メソッド InitializeLifetimeService (MarshalByRefObject から継承されています。)
パブリック メソッド IsSnapshotRequired パブリッシャまたはディストリビュータとサブスクライバに接続して、エージェントの次回の同期の際に新しいスナップショットが適用されるかどうかを示します。
プロテクト メソッド MemberwiseClone() () () () (Object から継承されています。)
プロテクト メソッド MemberwiseClone(Boolean) (MarshalByRefObject から継承されています。)
パブリック メソッド ProcessMessagesAtPublisher インフラストラクチャです。
パブリック メソッド ProcessMessagesAtSubscriber インフラストラクチャです。
パブリック メソッド Synchronize マージ エージェントを開始してサブスクリプションを同期します。
パブリック メソッド ToString (Object から継承されています。)

先頭に戻る

イベント

  名前 説明
パブリック イベント ComStatus インフラストラクチャです。
パブリック イベント Status マージ エージェントが同期の状態情報を返すと発生します。

先頭に戻る

説明

MergeSynchronizationAgent クラスでは、次のレプリケーション タスクを実行するための機能がサポートされています。

  • サブスクリプションの同期をとります。

  • 同期中にアップロード フェーズのみを実行するか、ダウンロード フェーズのみを実行するか、それとも両方のフェーズを実行するかを指定します。

  • 必要なデータがサブスクリプションにあることを検証します。

  • サブスクリプションの初期スナップショットを適用するときに使用できる別のスナップショット フォルダを指定します。

MergeSynchronizationAgent クラスは、SQL Server 2000 および SQL Server 2005 の両方で実行中のパブリッシャとサブスクライバで使用できます。

MergeSynchronizationAgent クラスは、SQL Server 2000 で実行中のディストリビュータでは使用できません。

使用例

次の例では、プッシュ サブスクリプションの同期をとるために、SynchronizationAgent プロパティからアクセスされる MergeSynchronizationAgent クラスのインスタンスで Synchronize メソッドを呼び出しています。

            // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string subscriptionDbName = "AdventureWorks2008R2Replica";
            string publicationDbName = "AdventureWorks2008R2";

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

            MergeSubscription subscription;

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

                // Define the subscription.
                subscription = new MergeSubscription();
                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 Merge 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 = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"

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

Dim subscription As MergeSubscription

Try
    ' Connect to the Publisher
    conn.Connect()

    ' Define the subscription.
    subscription = New MergeSubscription()
    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 Merge Agent for the subscription.
            ' Log agent messages to an output file.
            subscription.SynchronizationAgent.Output = "mergeagent.log"
            subscription.SynchronizationAgent.OutputVerboseLevel = 2
            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

次の例では、マージ サブスクリプションの同期をとるために MergeSynchronizationAgent クラスのインスタンスを使用しています。CreateSyncAgentByDefault の値を false にしてプル サブスクリプションが作成されているため、追加のプロパティを指定する必要があります。

           // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string distributorName = distributorInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string subscriptionDbName = "AdventureWorks2008R2Replica";
            string publicationDbName = "AdventureWorks2008R2";
            string hostname = @"adventure-works\garrett1";
            string webSyncUrl = "https://" + publisherInstance + "/SalesOrders/replisapi.dll";

            // Create a connection to the Subscriber.
            ServerConnection conn = new ServerConnection(subscriberName);

            MergePullSubscription subscription;
            MergeSynchronizationAgent agent;

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

                // Define the pull subscription.
                subscription = new MergePullSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName = subscriptionDbName;
                subscription.PublisherName = publisherName;
                subscription.PublicationDBName = publicationDbName;
                subscription.PublicationName = publicationName;

                // If the pull subscription exists, then start the synchronization.
                if (subscription.LoadProperties())
                {
                    // Get the agent for the subscription.
                    agent = subscription.SynchronizationAgent;

                    // Check that we have enough metadata to start the agent.
                    if (agent.PublisherSecurityMode == null)
                    {
                        // Set the required properties that could not be returned
                        // from the MSsubscription_properties table. 
                        agent.PublisherSecurityMode = SecurityMode.Integrated;
                        agent.DistributorSecurityMode = SecurityMode.Integrated;
                        agent.Distributor = publisherName;
                        agent.HostName = hostname;

                        // Set optional Web synchronization properties.
                        agent.UseWebSynchronization = true;
                        agent.InternetUrl = webSyncUrl;
                        agent.InternetSecurityMode = SecurityMode.Standard;
                        agent.InternetLogin = winLogin;
                        agent.InternetPassword = winPassword;
                    }
                    // Enable agent output to the console.
                    agent.OutputVerboseLevel = 1;
                    agent.Output = "";

                    // Synchronously start the Merge Agent for the subscription.
                    agent.Synchronize();
                }
                else
                {
                    // Do something here if the pull subscription does not exist.
                    throw new ApplicationException(String.Format(
                        "A 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. Verify that the subscription has " +
                    "been defined correctly.", 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 = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim hostname As String = "adventure-works\garrett1"
Dim webSyncUrl As String = "https://" + publisherInstance + "/SalesOrders/replisapi.dll"

' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

Dim subscription As MergePullSubscription
Dim agent As MergeSynchronizationAgent

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

    ' Define the pull subscription.
    subscription = New MergePullSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = subscriptionDbName
    subscription.PublisherName = publisherName
    subscription.PublicationDBName = publicationDbName
    subscription.PublicationName = publicationName

    ' If the pull subscription exists, then start the synchronization.
    If subscription.LoadProperties() Then
        ' Get the agent for the subscription.
        agent = subscription.SynchronizationAgent

        ' Check that we have enough metadata to start the agent.
        If agent.PublisherSecurityMode = Nothing Then
            ' Set the required properties that could not be returned
            ' from the MSsubscription_properties table. 
            agent.PublisherSecurityMode = SecurityMode.Integrated
            agent.Distributor = publisherInstance
            agent.DistributorSecurityMode = SecurityMode.Integrated
            agent.HostName = hostname

            ' Set optional Web synchronization properties.
            agent.UseWebSynchronization = True
            agent.InternetUrl = webSyncUrl
            agent.InternetSecurityMode = SecurityMode.Standard
            agent.InternetLogin = winLogin
            agent.InternetPassword = winPassword
        End If

        ' Enable agent logging to the console.
        agent.OutputVerboseLevel = 1
        agent.Output = ""

        ' Synchronously start the Merge Agent for the subscription.
        agent.Synchronize()
    Else
        ' Do something here if the pull subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "A 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. Verify that the subscription has " + _
     "been defined correctly.", ex)
Finally
    conn.Disconnect()
End Try

スレッド セーフ

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