MergePullSubscription.InternetPassword Property
Gets or sets the password for the supplied InternetLogin value when connecting to the Web server during Web synchronization.
Namespace: Microsoft.SqlServer.Replication
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
You should use the SecureInternetPassword property to set the Internet password. SecureInternetPassword provides better security for the password while it exists in memory.
When possible, prompt users to enter security credentials at runtime. If you must store credentials, use the cryptographic services provided by the Microsoft Windows .NET Framework.
The password is never returned by InternetPassword.
You should use BasicAuthentication with Web synchronization. For more information, see Web Synchronization for Merge Replication.
The InternetPassword property can only be set by members of the sysadmin fixed server role at the Subscriber or by members of the db_owner fixed database role on the subscription database.
Setting the InternetPassword property is equivalent to executing sp_addmergepullsubscription_agent or sp_changemergepullsubscription.
This property is only used if the UseWebSynchronization property is true.
// 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"; string webSyncUrl = "https://" + publisherInstance + "/WebSync/replisapi.dll"; //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 and Web synchronization. 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; } if ((publication.Attributes & PublicationAttributes.AllowWebSynchronization) == 0) { publication.Attributes |= PublicationAttributes.AllowWebSynchronization; } // 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; // Enable Web synchronization. subscription.UseWebSynchronization = true; subscription.InternetUrl = webSyncUrl; // Specify the same Windows credentials to use when connecting to the // Web server using HTTPS Basic Authentication. subscription.InternetSecurityMode = AuthenticationMethod.BasicAuthentication; subscription.InternetLogin = winLogin; subscription.InternetPassword = winPassword; // Ensure that we create a job for this subscription. 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" Dim webSyncUrl As String = "https://" + publisherInstance + "/WebSync/replisapi.dll" '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 and Web synchronization. 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 If (publication.Attributes And PublicationAttributes.AllowWebSynchronization) = 0 Then publication.Attributes = publication.Attributes _ Or PublicationAttributes.AllowWebSynchronization 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 subscription.CreateSyncAgentByDefault = True ' Specify the Windows login credentials for the Merge Agent job. subscription.SynchronizationAgentProcessSecurity.Login = winLogin subscription.SynchronizationAgentProcessSecurity.Password = winPassword ' Enable Web synchronization. subscription.UseWebSynchronization = True subscription.InternetUrl = webSyncUrl ' Specify the same Windows credentials to use when connecting to the ' Web server using HTTPS Basic Authentication. subscription.InternetSecurityMode = AuthenticationMethod.BasicAuthentication subscription.InternetLogin = winLogin subscription.InternetPassword = winPassword ' 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