MergeSubscription 類別

定義

代表在 Publisher 註冊的合併出版物訂閱。

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 類別同時用於合併出版的拉取與推送訂閱。

在設定遠端 Distributor 的 Publisher 時,所有參數(包括 SynchronizationAgentProcessSecurity)所提供的值會以純文字形式傳送給 Distributor。 您應該先加密「發行者」及其遠端「散發者」之間的連線,然後再呼叫 Create 方法。 更多資訊請參見 sp_reinitmergesubscription(Transact-SQL)

線程安全性

任何此類的公開靜態(SharedMicrosoft Visual Basic)成員對多執行緒操作都是安全的。 任何實例成員都不保證具有執行緒安全性。

建構函式

名稱 Description
MergeSubscription()

建立 MergeSubscription 類別的新實例。

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

建立一個新的類別實例MergeSubscription,並以指定的 Publisher 連結及唯一定義訂閱的屬性。

屬性

名稱 Description
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

取得 合併代理程式 用來連接 Publisher 的安全上下文。

SqlServerName

取得該物件所連接的 Microsoft SQL Server 實例名稱。

(繼承來源 ReplicationObject)
Status

會取得訂閱狀態。

(繼承來源 Subscription)
SubscriberName

取得或設定 Microsoft SQL Server 的 Subscriber 實例名稱。

(繼承來源 Subscription)
SubscriberSecurity

取得用來連接訂閱者的安全上下文。

(繼承來源 Subscription)
SubscriberType

會取得或設定訂閱是客戶端還是伺服器訂閱。

SubscriptionDBName

取得或設定接收複製資料的訂閱者資料庫名稱。

(繼承來源 Subscription)
SubscriptionType

它會知道訂閱註冊是推訂閱還是拉訂閱。

(繼承來源 Subscription)
SynchronizationAgent

取得一個可用來同步訂閱的類別實例 MergeSynchronizationAgent

SynchronizationAgentName

取得或設定已建立的代理工作名稱以同步訂閱。

(繼承來源 Subscription)
SynchronizationAgentProcessSecurity

取得用來指定同步代理工作執行的Microsoft Windows帳號以同步訂閱的安全上下文。

(繼承來源 Subscription)
SyncType

取得或設定訂閱初始化的方式。

(繼承來源 Subscription)
UseInteractiveResolver

在同步過程中,是否使用互動式解析器,取得或設定。

UserData

取得或設定一個物件屬性,讓使用者能將自己的資料附加到物件上。

(繼承來源 ReplicationObject)

方法

名稱 Description
CheckValidCreation()

檢查有效的複製建立。

(繼承來源 ReplicationObject)
CheckValidDefinition(Boolean)

表示訂閱定義是否有效。

(繼承來源 Subscription)
CommitPropertyChanges()

將所有快取的屬性變更語句傳送到 Microsoft SQL Server 實例。

(繼承來源 ReplicationObject)
Create()

在 Publisher 建立訂閱註冊。

(繼承來源 Subscription)
Decouple()

將參考的複製物件與伺服器解耦。

(繼承來源 ReplicationObject)
GetChangeCommand(StringBuilder, String, String)

回傳複製中的變更指令。

(繼承來源 ReplicationObject)
GetCreateCommand(StringBuilder, Boolean, ScriptOptions)

回傳複製中的 create 指令。

(繼承來源 ReplicationObject)
GetDropCommand(StringBuilder, Boolean)

從複製中回傳 drop 指令。

(繼承來源 ReplicationObject)
InternalRefresh(Boolean)

會從複製中啟動內部刷新。

(繼承來源 ReplicationObject)
Load()

從伺服器載入現有物件的屬性。

(繼承來源 ReplicationObject)
LoadProperties()

從伺服器載入現有物件的屬性。

(繼承來源 ReplicationObject)
Refresh()

重新載入物件的屬性。

(繼承來源 ReplicationObject)
Reinitialize(Boolean)

標記合併訂閱以進行重新初始化。

Remove()

刪除 Publisher 的訂閱註冊,並移除訂閱者的複製物件,以實現推送訂閱。

(繼承來源 Subscription)
Script(ScriptOptions)

回傳一個 Transact-SQL 腳本,可用於建立或刪除訂閱。

(繼承來源 Subscription)
StopSynchronizationJob()

嘗試停止正在同步訂閱的 合併代理程式 工作。

SynchronizeWithJob()

啟動代理工作以同步訂閱。

適用於

另請參閱