MergePullSubscription 類別

定義

代表合併出版的拉取訂閱。

public ref class MergePullSubscription sealed : Microsoft::SqlServer::Replication::PullSubscription
public sealed class MergePullSubscription : Microsoft.SqlServer.Replication.PullSubscription
type MergePullSubscription = class
    inherit PullSubscription
Public NotInheritable Class MergePullSubscription
Inherits PullSubscription
繼承
MergePullSubscription

範例

// 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 connections to the Publisher and Subscriber.
ServerConnection subscriberConn = new ServerConnection(subscriberName);
ServerConnection publisherConn = new ServerConnection(publisherName);

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

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

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

    if (publication.LoadProperties())
    {
        if ((publication.Attributes & PublicationAttributes.AllowPull) == 0)
        {
            publication.Attributes |= PublicationAttributes.AllowPull;
        }

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

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

        // Make sure that the agent job for the subscription is created.
        subscription.CreateSyncAgentByDefault = true;

        // Create the pull subscription at the Subscriber.
        subscription.Create();

        Boolean registered = false;

        // Verify that the subscription is not already registered.
        foreach (MergeSubscription existing
            in publication.EnumSubscriptions())
        {
            if (existing.SubscriberName == subscriberName
                && existing.SubscriptionDBName == subscriptionDbName
                && existing.SubscriptionType == SubscriptionOption.Pull)
            {
                registered = true;
            }
        }
        if (!registered)
        {
            // Register the local subscription with the Publisher.
            publication.MakePullSubscriptionWellKnown(
                subscriberName, subscriptionDbName,
                SubscriptionSyncType.Automatic,
                MergeSubscriberType.Local, 0);
        }
    }
    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
{
    subscriberConn.Disconnect();
    publisherConn.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 connections to the Publisher and Subscriber.
Dim subscriberConn As ServerConnection = New ServerConnection(subscriberName)
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)

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

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

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

    If publication.LoadProperties() Then
        If (publication.Attributes And PublicationAttributes.AllowPull) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPull
        End If

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

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

        ' Make sure that the agent job for the subscription is created.
        subscription.CreateSyncAgentByDefault = True

        ' Create the pull subscription at the Subscriber.
        subscription.Create()

        Dim registered As Boolean = False

        ' Verify that the subscription is not already registered.
        For Each existing As MergeSubscription In _
        publication.EnumSubscriptions()
            If existing.SubscriberName = subscriberName Then
                registered = True
            End If
        Next
        If Not registered Then
            ' Register the local subscription with the Publisher.
            publication.MakePullSubscriptionWellKnown( _
             subscriberName, subscriptionDbName, _
             SubscriptionSyncType.Automatic, _
             MergeSubscriberType.Local, 0)
        End If
    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
    subscriberConn.Disconnect()
    publisherConn.Disconnect()
End Try

備註

對於拉取訂閱,合併代理程式 會直接在訂閱者端執行。

線程安全性

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

建構函式

名稱 Description
MergePullSubscription()

建立 MergePullSubscription 類別的新實例。

MergePullSubscription(String, String, String, String, ServerConnection, Boolean)

建立一個新的類別實例MergePullSubscription,包含指定的資料庫、Publisher、發佈、訂閱者連線,以及是否建立了代理工作。

MergePullSubscription(String, String, String, String, ServerConnection)

初始化類別的新實例MergePullSubscription,包含指定的資料庫、Publisher、發佈及訂閱者連線。

屬性

名稱 Description
AgentJobId

取得用來同步訂閱的代理工作 ID。

(繼承來源 PullSubscription)
AgentOffload

取得或設定同步代理是否在非建立代理工作所建立的電腦上執行。 此特性已不再支援運行 Microsoft SQL Server 2005 及以後版本的發行版。

(繼承來源 PullSubscription)
AgentOffloadServer

在使用遠端代理啟用時,取得或設定代理執行的遠端電腦名稱。

(繼承來源 PullSubscription)
AgentSchedule

取得用來同步訂閱的代理工作排程。

(繼承來源 PullSubscription)
AltSnapshotFolder

當預設的分發器快照位置未被使用時,取得或設定發佈快照檔案的取得位置。

(繼承來源 PullSubscription)
CachePropertyChanges

取得或設定是快取複製屬性的變更,還是立即套用。

(繼承來源 ReplicationObject)
ConnectionContext

取得或設定連接到 Microsoft SQL Server 實例。

(繼承來源 ReplicationObject)
CreateSyncAgentByDefault

取得或設定用於啟動複製代理以同步訂閱的代理工作是否在訂閱建立時被建立。

(繼承來源 PullSubscription)
DatabaseName

取得或設定訂閱資料庫名稱。

(繼承來源 PullSubscription)
Description

取得或設定拉取訂閱的文字描述。

(繼承來源 PullSubscription)
DistributorName

取得或設定 Microsoft SQL Server 的實例,該實例作為發行者,並分發訂閱所訂閱的出版品。

(繼承來源 PullSubscription)
DistributorSecurity

取得連接分發器時所用的安全上下文。

(繼承來源 PullSubscription)
DynamicSnapshotLocation

當出版品使用參數化列過濾器時,會取得或設定訂閱專屬快照檔案的檔案位置。

EnabledForSynchronizationManager

指定訂閱是否能使用 Windows 同步管理器同步。

(繼承來源 PullSubscription)
FtpAddress

取得或設定 FTP 伺服器的 IP 位址。

(繼承來源 PullSubscription)
FtpLogin

取得或設定 FTP 登入。

(繼承來源 PullSubscription)
FtpPassword

取得或設定 FTP 密碼。

(繼承來源 PullSubscription)
FtpPort

取得或設定 FTP 伺服器的埠號。

(繼承來源 PullSubscription)
HostName

當該函式用於定義訂閱者資料分割的參數化列過濾器時,會取得或設定 HOST_NAME 該函式所提供的值。

InternetLogin

在網頁同步時,透過 HTTP 基本認證取得或設定登入。

InternetPassword

在網頁同步時,取得或設定所提供 InternetLogin 值的密碼。

InternetSecurityMode

在網頁同步時,取得或設定連接網頁伺服器時所使用的 HTTP 認證方法。

InternetTimeout

在網頁同步時,能以秒數計時取得或設定 HTTP 逾時。

InternetUrl

在使用網頁同步同步訂閱時,取得或設定該網址以使用。

IsExistingObject

它會判斷該物件是否存在於伺服器上。

(繼承來源 ReplicationObject)
IsMemoryOptimized

代表合併出版的拉取訂閱。

(繼承來源 PullSubscription)
LastAgentDateTime

會取得訂閱最後一次同步的日期和時間。

(繼承來源 PullSubscription)
LastAgentStatus

查詢訂閱最新同步的狀態。

(繼承來源 PullSubscription)
LastAgentSummary

取得最近一次訂閱同步結果的摘要。

(繼承來源 PullSubscription)
Name

這樣就能產生拉取訂閱的名稱。

(繼承來源 PullSubscription)
Priority

在解決訂閱間衝突時,取得或設定此伺服器訂閱相對於其他伺服器訂閱的權重。

PublicationDBName

取得或設定出版資料庫名稱。

(繼承來源 PullSubscription)
PublicationName

取得或設定訂閱所訂閱的出版物名稱。

(繼承來源 PullSubscription)
PublisherName

取得或設定 Publisher 的名字。

(繼承來源 PullSubscription)
PublisherSecurity

取得或設定同步代理程式連接 Publisher 時所使用的安全上下文。

(繼承來源 PullSubscription)
SecureFtpPassword

取得或設定用於連接 FTP 伺服器的登入密碼。

(繼承來源 PullSubscription)
SecureInternetPassword

設定使用 HTTP Basic 認證連接網頁伺服器時使用的密碼(作為 SecureString 物件)。

SqlServerName

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

(繼承來源 ReplicationObject)
SubscriberSecurity

取得同步代理在連接訂閱者時所使用的安全上下文。

(繼承來源 PullSubscription)
SubscriberType

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

SubscriptionId

會取得訂閱 ID 的值。

(繼承來源 PullSubscription)
SubscriptionType

會知道訂閱註冊是推送、拉取還是匿名訂閱。

(繼承來源 PullSubscription)
SynchronizationAgent

取得一個代表 合併代理程式 實例的物件,可用來同步訂閱。

SynchronizationAgentProcessSecurity

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

(繼承來源 PullSubscription)
SyncType

取得或設定在訂閱者處資料初始化的方式。

Type

取得或設定發表類型。

(繼承來源 PullSubscription)
UseFtp

取得或設定同步代理是否透過檔案傳輸協定(FTP)存取初始化拉取訂閱所需的快照檔案。

(繼承來源 PullSubscription)
UseInteractiveResolver

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

UserData

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

(繼承來源 ReplicationObject)
UseWebSynchronization

會取得或設定訂閱是否透過網頁同步同步。

WorkingDirectory

取得或設定訂閱者用來暫時儲存及解壓下載快照檔案的目錄路徑。

(繼承來源 PullSubscription)

方法

名稱 Description
CheckValidCreation()

檢查有效的複製建立。

(繼承來源 ReplicationObject)
CheckValidDefinition(Boolean)

表示該定義是否有效。

(繼承來源 PullSubscription)
CommitPropertyChanges()

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

(繼承來源 ReplicationObject)
Create()

在訂閱者上建立拉取訂閱。

(繼承來源 PullSubscription)
CustomEnabledForSyncMgr(StringBuilder)

啟用同步管理器的自訂發佈。

(繼承來源 PullSubscription)
Decouple()

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

(繼承來源 ReplicationObject)
EnumSynchronizationPartners()

回歸替代同步夥伴

GetChangeCommand(StringBuilder, String, String)

回傳複製中的變更指令。

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

回傳複製中的 create 指令。

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

從複製中回傳 drop 指令。

(繼承來源 ReplicationObject)
InitMemberVariables(String, String, String, String, Boolean)

初始化成員變數。

(繼承來源 PullSubscription)
InternalRefresh(Boolean)

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

(繼承來源 ReplicationObject)
LastAgentJobHistoryInfo()

回傳最後執行的同步代理工作資訊。

(繼承來源 PullSubscription)
Load()

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

(繼承來源 ReplicationObject)
LoadProperties()

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

(繼承來源 ReplicationObject)
Refresh()

重新載入物件的屬性。

(繼承來源 ReplicationObject)
Reinitialize(Boolean)

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

Remove()

移除拉取訂閱。

(繼承來源 PullSubscription)
Script(ScriptOptions)

回傳一個 Transact-SQL 腳本,根據物件目前的屬性設定 PullSubscription 來建立或刪除拉取訂閱。

(繼承來源 PullSubscription)
StopSynchronizationJob()

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

SynchronizeWithJob()

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

適用於

另請參閱