Поделиться через


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).

Потокобезопасность

Все общедоступные статические элементы (Shared в Microsoft Visual Basic) этого типа безопасны для многопоточных операций. Потокобезопасная работа с членами экземпляров типа не гарантируется.

Конструкторы

MergeSubscription()

Создает новый экземпляр класса MergeSubscription.

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

Создает новый экземпляр класса MergeSubscription с указанными соединением с издателем и свойствами, которые однозначно определяют подписку.

Свойства

AgentJobId

Возвращает идентификатор задания агента, который используется для синхронизации подписки.

(Унаследовано от 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()

Запускает задание агента для синхронизации подписки.

Применяется к

См. также раздел