Jak Konfigurowanie subskrypcji do użycia w sieci Web synchronizacji (Programowanie RMO)
W tym temacie procedurą jest trzeci krok w procesie konfigurowania sieci synchronizacja w sieci Web replikacja scalająca.Wykonaj ten krok po publikacja włączyć i skonfigurować komputer z systemem Microsoft Internet Information Services (IIS).Omówienie procesu konfiguracja, zobacz Jak Konfigurowanie sieci Web synchronizacji replikacji scalania (Programowanie RMO).Podczas konfigurowania subskrypcja subskrybenci mogą łączyć się tylko z Wydawca za pośrednictwem protokołu HTTP za pomocą sieci synchronizacja w sieci Web, należy poprawnie skonfigurować publikacji.Aby uzyskać więcej informacji, zobacz Jak Konfigurowanie publikacji, aby umożliwić synchronizację sieci Web (Programowanie RMO).Po zakończeniu procedury opisane w tym temacie zsynchronizować subskrypcja zostały utworzone.Aby uzyskać więcej informacji, zobacz Jak Synchronizowanie subskrypcji ściąganej (Programowanie RMO).
W tym temacie opisano parametry, które są wymagane przez synchronizacja w sieci Web.Aby uzyskać więcej informacji na temat tworzenia ściągać subskrypcji, zobacz Jak Tworzenie subskrypcji ściąganej (Programowanie RMO).
Ważne: |
---|
Adres URL serwera sieci Web, która służy do synchronizacja w sieci Web (takie jak https://server.domena.com /katalog/replisapi.dll) określa lokalizację replisapi.dll.Jeśli serwer jest skonfigurowany do używania portu innego niż domyślny port 443 dla protokołu SSL (Secure Sockets Layer), musisz podać również portu: https://serwer.domena.com:numer_portu/katalog/replisapi.dll.Nazwa serwera w adresie URL musi być taka sama jak nazwa, używany podczas tworzenia certyfikat.Na przykład w intranecie, można na dostęp do serwera sieci Web poprzez https://server/.Jednak jeśli w pełni kwalifikowana nazwa (takich jak https://serwer.domena.com/) został użyty podczas tworzenia certyfikat, należy użyć w pełni kwalifikowana nazwa ta w adresie URL (https://server.domain.com /katalog/replisapi.dll). |
Aby skonfigurować subskrypcja, aby użyćsynchronizacja w sieci Web
Tworzenie połączenia do subskrybenta i Wydawca przy użyciu ServerConnection klasy
Utworzenie wystąpienie MergePublication klasy przy użyciu połączenia Wydawca z kroku 1.
(Opcjonalnie) Jeśli baza danych subskrypcja nie istnieje, utwórz bazę danych przy użyciu programu SQL Server Management obiektów (SMO) Database klasyAby uzyskać więcej informacji, zobacz Tworzenie, modyfikowanie i usuwanie baz danych.
Utworzenie wystąpienie MergePullSubscription klasy
Ustaw następujące właściwości subskrypcja:
ServerConnection Do subskrybenta, który został utworzony w kroku 1 dla ConnectionContext.
Nazwa baza danych subskrypcja dla DatabaseName.
Nazwa Wydawca dla PublisherName.
Nazwa baza danych publikacja dla PublicationDBName.
Nazwa publikacja dla PublicationName.
Value of true for UseWebSynchronization.
Lokalizacja serwera sieci Web obsługującego synchronizacja w sieci Web dla InternetUrl.
Identyfikator logowania i hasło konta systemu Windows, w ramach którego działa Agent scalić subskrybent dla Login i Password pola SynchronizationAgentProcessSecurity, odpowiednio.To konto jest używane również, po agenta scalić połączeń lokalnych subskrybenta.
Ostrzeżenie
Podczas tworzenia publikacja przez element członkowski sysadmin ustalona roli serwera, nie trzeba zestaw SnapshotGenerationAgentProcessSecurity.Aby uzyskać więcej informacji, zobacz Model zabezpieczeń Agent replikacji.
Wartość 0 dla InternetSecurityMode , a także wartości InternetLogin i InternetPassword podczas uwierzytelniania podstawowego HTTP jest używany do dostępu do serwera sieci Web.Zaleca się, aby stosować tę metoda uwierzytelnianie w sieci synchronizacja w sieci Web.Aby uzyskać więcej informacji, zobacz Zabezpieczanie replikacji w Internecie.
Wywołanie Create metoda.
Przy użyciu wystąpienie MergePublication od kroku 2 call MakePullSubscriptionWellKnown metoda zarejestrować subskrypcja wciągana z Wydawca.
Aby skonfigurować subskrypcja subskrybenci mogą łączyć się tylko z Wydawca za pośrednictwem serwera sieci Web przy użyciu protokołu HTTP za pomocą sieci synchronizacja w sieci Web
Tworzenie połączenia do subskrybenta za pomocą ServerConnection klasy
(Opcjonalnie) Jeśli baza danych subskrypcji nie istnieje, utwórz bazę danych za pomocą obiektów SMO Database klasyAby uzyskać więcej informacji, zobacz Tworzenie, modyfikowanie i usuwanie baz danych.
Utworzenie wystąpienie MergePullSubscription klasy
Ustaw następujące właściwości subskrypcja:
ServerConnection Utworzony w kroku 1 dla ConnectionContext.
Nazwa baza danych subskrypcja dla DatabaseName.
Nazwa Wydawca dla PublisherName.
Nazwa baza danych publikacja dla PublicationDBName.
Nazwa publikacja dla PublicationName.
A value of Anonymous for SubscriberType.
Value of true for UseWebSynchronization.
Lokalizacja serwera sieci Web obsługującego synchronizacja w sieci Web dla InternetUrl.
Identyfikator logowania i hasło konta systemu Windows, w ramach którego działa Agent scalić subskrybent dla Login i Password pola SynchronizationAgentProcessSecurity, odpowiednio.To konto jest używane również, po agenta scalić połączeń lokalnych subskrybenta.
Ostrzeżenie
Podczas tworzenia publikacja przez element członkowski sysadmin ustalona roli serwera, nie trzeba zestaw SnapshotGenerationAgentProcessSecurity.Aby uzyskać więcej informacji, zobacz Model zabezpieczeń Agent replikacji.
Wartość 0 dla InternetSecurityMode , a także wartości InternetLogin i InternetPassword podczas uwierzytelniania podstawowego HTTP jest używany do dostępu do sieci Web.Zaleca się, aby stosować tę metoda uwierzytelnianie w sieci synchronizacja w sieci Web.Aby uzyskać więcej informacji, zobacz Zabezpieczanie replikacji w Internecie.
Wywołanie Create metoda.
Przykład
Poniższy przykład tworzy subskrypcja, która jest synchronizowane z programem Wydawca przy użyciu sieci synchronizacja w sieci Web.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2008R2Replica";
string publicationDbName = "AdventureWorks2008R2";
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 = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
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
W tym przykładzie tworzony jest synchronizowane z programem Wydawca przy użyciu sieci synchronizacja w sieci Web abonenta, który można łączyć się za pośrednictwem serwera sieci Web przy użyciu protokołu HTTP wydawcy subskrypcja.
// The publication must support anonymous Subscribers, pull
// subscriptions, and Web synchronization.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2008R2Replica";
string publicationDbName = "AdventureWorks2008R2";
string hostname = @"adventure-works\garrett1";
string webSyncUrl = "https://" + publisherInstance + "/WebSync/replisapi.dll";
//Create the Subscriber connection.
ServerConnection conn = new ServerConnection(subscriberName);
// Create the objects that we need.
MergePullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.PublisherName = publisherName;
subscription.PublicationName = publicationName;
subscription.PublicationDBName = publicationDbName;
subscription.DatabaseName = subscriptionDbName;
subscription.HostName = hostname;
// Specify an anonymous Subscriber type since we can't
// register at the Publisher with a direct connection.
subscription.SubscriberType = MergeSubscriberType.Anonymous;
// 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();
}
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();
}
' The publication must support anonymous Subscribers, pull
' subscriptions, and Web synchronization.
' 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 = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim hostname As String = "adventure-works\\garrett1"
Dim webSyncUrl As String = "https://" + publisherInstance + "/WebSync/replisapi.dll"
'Create the Subscriber connection.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
' Create the objects that we need.
Dim subscription As MergePullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.PublisherName = publisherName
subscription.PublicationName = publicationName
subscription.PublicationDBName = publicationDbName
subscription.DatabaseName = subscriptionDbName
subscription.HostName = hostname
' Specify an anonymous Subscriber type since we can't
' register at the Publisher with a direct connection.
subscription.SubscriberType = MergeSubscriberType.Anonymous
' 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()
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