MergeSubscriberType Enumeration
SQL Server 2012
Enumeration additional types of subscriptions supported by merge replication.
Namespace: Microsoft.SqlServer.Replication
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
| Member name | Description | |
|---|---|---|
| Global | The subscription is a server subscription. This type is typically used for Subscribers that republish data to other Subscribers. | |
| Local | The subscription is a client subscription. This type of subscription is appropriate for most Subscribers. | |
| Anonymous | The pull subscription is not explicitly registered at the Publisher by using MakePullSubscriptionWellKnown. Anonymous subscriptions are required if you want to create a subscription without registering the subscription at the Publisher. This is necessary for cases such as Web synchronization, in which you cannot establish a SQL Server connection to the Publisher during subscription configuration. |
// 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