MergeSubscription クラス

定義

パブリッシャーにおいて登録されたマージ パブリケーションに対するサブスクリプションを表します。

public ref class MergeSubscription sealed : Microsoft::SqlServer::Replication::Subscription
public sealed class MergeSubscription : Microsoft.SqlServer.Replication.Subscription
type MergeSubscription = class
    inherit Subscription
Public NotInheritable Class MergeSubscription
Inherits Subscription
継承

// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
string hostname = @"adventure-works\garrett1";

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

// Create the objects that we need.
MergePublication publication;
MergeSubscription subscription;

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

    // Ensure that the publication exists and that 
    // it supports push subscriptions.
    publication = new MergePublication();
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;
    publication.ConnectionContext = conn;

    if (publication.IsExistingObject)
    {
        if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
        {
            publication.Attributes |= PublicationAttributes.AllowPush;
        }

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

        // Set a schedule to synchronize the subscription every 2 hours
        // during weekdays from 6am to 10pm.
        subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly;
        subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32(0x003E);
        subscription.AgentSchedule.FrequencyRecurrenceFactor = 1;
        subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour;
        subscription.AgentSchedule.FrequencySubDayInterval = 2;
        subscription.AgentSchedule.ActiveStartDate = 20051108;
        subscription.AgentSchedule.ActiveEndDate = 20071231;
        subscription.AgentSchedule.ActiveStartTime = 060000;
        subscription.AgentSchedule.ActiveEndTime = 100000;

        // Specify the Windows login credentials for the Merge Agent job.
        subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
        subscription.SynchronizationAgentProcessSecurity.Password = winPassword;

        // Create the push subscription.
        subscription.Create();
    }
    else
    {
        // Do something here if the publication does not exist.
        throw new ApplicationException(String.Format(
            "The publication '{0}' does not exist on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here.
    throw new ApplicationException(String.Format(
        "The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
Dim hostname As String = "adventure-works\garrett1"

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

' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergeSubscription

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

    ' Ensure that the publication exists and that 
    ' it supports push subscriptions.
    publication = New MergePublication()
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName
    publication.ConnectionContext = conn

    If publication.IsExistingObject Then
        If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPush
        End If

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

        ' Set a schedule to synchronize the subscription every 2 hours
        ' during weekdays from 6am to 10pm.
        subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly
        subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32("0x003E", 16)
        subscription.AgentSchedule.FrequencyRecurrenceFactor = 1
        subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour
        subscription.AgentSchedule.FrequencySubDayInterval = 2
        subscription.AgentSchedule.ActiveStartDate = 20051108
        subscription.AgentSchedule.ActiveEndDate = 20071231
        subscription.AgentSchedule.ActiveStartTime = 60000
        subscription.AgentSchedule.ActiveEndTime = 100000

        ' Specify the Windows login credentials for the Merge Agent job.
        subscription.SynchronizationAgentProcessSecurity.Login = winLogin
        subscription.SynchronizationAgentProcessSecurity.Password = winPassword

        ' Create the push subscription.
        subscription.Create()
    Else

        ' Do something here if the publication does not exist.
        Throw New ApplicationException(String.Format( _
         "The publication '{0}' does not exist on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here.
    Throw New ApplicationException(String.Format( _
    "The subscription to {0} could not be created.", publicationName), ex)
Finally
    conn.Disconnect()
End Try

注釈

MergeSubscription クラスは、マージ パブリケーションに対するプル サブスクリプションとプッシュ サブスクリプションの両方で使用されます。

リモート ディストリビューターを使用するパブリッシャーを構成する場合は、SynchronizationAgentProcessSecurity を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 Create メソッドを呼び出す前に、パブリッシャーとリモート ディストリビューター間の接続を暗号化する必要があります。 詳細については、「 sp_reinitmergesubscription (Transact-SQL)」を参照してください。

スレッド セーフ

この型の public static (Microsoft Visual Basic では Shared) のすべてのメンバーは、マルチスレッド操作で安全に使用できます。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

コンストラクター

MergeSubscription()

MergeSubscription クラスの新しいインスタンスを作成します。

MergeSubscription(String, String, String, String, ServerConnection)

指定したパブリッシャーへの接続、およびサブスクリプションを一意に定義するプロパティを使用して、MergeSubscription クラスの新しいインスタンスを作成します。

プロパティ

AgentJobId

サブスクリプションの同期に使用されるエージェント ジョブの ID を取得します。

(継承元 Subscription)
AgentOffload

エージェント ジョブの作成時と異なるコンピューター上で同期エージェントを実行するかどうかを取得します。値の設定も可能です。 このプロパティは、Microsoft SQL Server 2005 以降を実行しているディストリビューターではサポートされなくなりました。

(継承元 Subscription)
AgentOffloadServer

リモート エージェントのアクティブ化を使用するとき、エージェントが実行されるリモート コンピューターの名前を取得します。値の設定も可能です。

(継承元 Subscription)
AgentSchedule

サブスクリプションの同期に使用されるエージェント ジョブのスケジュールを取得します。

(継承元 Subscription)
CachePropertyChanges

レプリケーション プロパティに加えられた変更をキャッシュするか、またはすぐに適用するかを取得します。値の設定も可能です。

(継承元 ReplicationObject)
ConnectionContext

Microsoft SQL Server のインスタンスへの接続を取得または設定します。

(継承元 ReplicationObject)
CreateSyncAgentByDefault

サブスクリプションの同期に使用されるエージェント ジョブが既定で作成されるかどうかを取得します。値の設定も可能です。

(継承元 Subscription)
DatabaseName

パブリケーション データベースの名前を取得します。値の設定も可能です。

(継承元 Subscription)
Description

マージ サブスクリプションの説明テキストを取得します。値の設定も可能です。

EnabledForSynchronizationManager

Microsoft Windows 同期マネージャーを使用してサブスクリプションを同期できるかどうかを指定します。

(継承元 Subscription)
HostName

サブスクライバーのデータ パーティションを定義するパラメーター化された行フィルターでこの関数を使用する場合に、 HOST_NAME 関数に指定される値を取得または設定します。

IsExistingObject

サーバーにオブジェクトが存在するかどうかを取得します。

(継承元 ReplicationObject)
Name

既存のサブスクリプションに割り当てられている名前を取得します。

(継承元 Subscription)
Priority

サーバー サブスクリプションに割り当てられた相対優先度の値を取得します。値の設定も可能です。

PublicationName

サブスクリプションがサブスクライブするパブリケーションの名前を取得します。値の設定も可能です。

(継承元 Subscription)
PublisherSecurity

パブリッシャーに接続するためにマージ エージェントが使用するセキュリティ コンテキストを取得します。

SqlServerName

このオブジェクトが接続されている Microsoft SQL Server インスタンスの名前を取得します。

(継承元 ReplicationObject)
Status

サブスクリプションの状態を取得します。

(継承元 Subscription)
SubscriberName

サブスクライバーとして動作している Microsoft SQL Server のインスタンスの名前を取得します。値の設定も可能です。

(継承元 Subscription)
SubscriberSecurity

サブスクライバーへの接続に使用されるセキュリティ コンテキストを取得します。

(継承元 Subscription)
SubscriberType

サブスクリプションがクライアント サブスクリプションとサーバー サブスクリプションのどちらであるかを取得します。値の設定も可能です。

SubscriptionDBName

レプリケートされたデータを受信するサブスクライバーのデータベースの名前を取得します。値の設定も可能です。

(継承元 Subscription)
SubscriptionType

プッシュ サブスクリプションまたはプル サブスクリプションに対して、サブスクリプションを登録するかどうかを取得します。

(継承元 Subscription)
SynchronizationAgent

サブスクリプションの同期に使用できる MergeSynchronizationAgent クラスのインスタンスを取得します。

SynchronizationAgentName

サブスクリプションの同期のために作成されるエージェント ジョブの名前を取得します。値の設定も可能です。

(継承元 Subscription)
SynchronizationAgentProcessSecurity

サブスクリプションを同期するために同期エージェント ジョブを実行する Microsoft Windows アカウントを指定するために使用されるセキュリティ コンテキストを取得します。

(継承元 Subscription)
SyncType

サブスクリプションを初期化する方法を取得します。値の設定も可能です。

(継承元 Subscription)
UseInteractiveResolver

同期処理中にインタラクティブ競合回避モジュールを使用するかどうかを取得します。値の設定も可能です。

UserData

ユーザーが独自のデータをオブジェクトにアタッチすることを許可するオブジェクト プロパティを取得します。値の設定も可能です。

(継承元 ReplicationObject)

メソッド

CheckValidCreation()

有効なレプリケーションの作成を確認します。

(継承元 ReplicationObject)
CheckValidDefinition(Boolean)

サブスクリプション定義が有効かどうかを示します。

(継承元 Subscription)
CommitPropertyChanges()

キャッシュされたすべてのプロパティ変更ステートメントを Microsoft SQL Serverのインスタンスに送信します。

(継承元 ReplicationObject)
Create()

パブリッシャー側でサブスクリプション登録を作成します。

(継承元 Subscription)
Decouple()

参照先のレプリケーション オブジェクトをサーバーから切断します。

(継承元 ReplicationObject)
GetChangeCommand(StringBuilder, String, String)

レプリケーションの変更コマンドを返します。

(継承元 ReplicationObject)
GetCreateCommand(StringBuilder, Boolean, ScriptOptions)

レプリケーションの作成コマンドを返します。

(継承元 ReplicationObject)
GetDropCommand(StringBuilder, Boolean)

レプリケーションの削除コマンドを返します。

(継承元 ReplicationObject)
InternalRefresh(Boolean)

レプリケーションで内部更新を開始します。

(継承元 ReplicationObject)
Load()

サーバーから既存のオブジェクトのプロパティを読み込みます。

(継承元 ReplicationObject)
LoadProperties()

サーバーから既存のオブジェクトのプロパティを読み込みます。

(継承元 ReplicationObject)
Refresh()

オブジェクトのプロパティを再度読み込みます。

(継承元 ReplicationObject)
Reinitialize(Boolean)

マージ サブスクリプションに再初期化のマークを付けます。

Remove()

パブリッシャーでサブスクリプション登録を削除し、プッシュ サブスクリプション用のサブスクライバーでレプリケーション オブジェクトを削除します。

(継承元 Subscription)
Script(ScriptOptions)

サブスクリプションの作成または削除に使用できる Transact-SQL スクリプトを返します。

(継承元 Subscription)
StopSynchronizationJob()

現在サブスクリプションの同期を実行しているマージ エージェント ジョブの停止を試みます。

SynchronizeWithJob()

エージェント ジョブを開始してサブスクリプションを同期します。

適用対象

こちらもご覧ください