Jak Konfigurowanie publikacji, aby umożliwić synchronizację sieci Web (Programowanie RMO)

W tym temacie procedurą jest pierwszy etap konfigurowania sieci synchronizacja w sieci Web replikacja scalająca.Omówienie procesu konfiguracja, zobacz Jak Konfigurowanie sieci Web synchronizacji replikacji scalania (Programowanie RMO).Po zakończeniu procedury opisane w tym temacie nadal drugiego etapu, konfigurowanie serwera IIS.Drugi etap jest opisany w Jak Skonfigurować usługi IIS Web synchronizacji.

W tym temacie opisano parametry, które są wymagane przez synchronizacja w sieci Web.Aby uzyskać więcej informacji na temat tworzenia publikacji, zobacz Jak Tworzenie publikacji (Programowanie RMO).

Konfigurowanie publikacja korespondencji seryjnej, aby umożliwićsynchronizacja w sieci Web

  1. Tworzenie połączenia do Wydawca za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie ReplicationDatabase klasy dla baza danych publikacja.

  3. Ustaw ConnectionContext właściwość do wystąpienie ServerConnection z kroku 1.

  4. Wywołanie LoadProperties metoda.Jeśli ta metoda zwraca false, sprawdź, czy istnieje baza danych.

  5. Jeśli EnabledMergePublishing właściwość jest false, zestaw tej właściwości, aby true, a następnie wywołać CommitPropertyChanges.

  6. Utworzenie wystąpienie MergePublication klasy, a następnie zestaw następujące właściwości tego obiektu:

    • ServerConnection z kroku 1 dla ConnectionContext.

    • Nazwa bazy danych opublikowanych dla DatabaseName.

    • Nazwę publikacja dla Name.

    • Dodanie wartości AllowWebSynchronization i AllowPull do Attributes za pomocą operator OR logiczne włącznie (| w środowisku Visual C# i Or w języku Visual Basic) umożliwiające synchronizacja w sieci Web.

    • (Opcjonalnie) Jeśli subskrybentów będzie łączyć się tylko z Wydawca za pośrednictwem protokołu HTTP, należy dodać wartość AllowAnonymous do Attributes za pomocą operator OR logiczne włącznie (| w środowisku Visual C# i Or w języku Visual Basic).

    • Dla nowej publikacji, aby podać poświadczenia konta systemu Windows, w ramach którego działa Agent migawki zestaw Login i Password pola SnapshotGenerationAgentProcessSecurity.To konto jest używane również podczas agenta migawki sprawia, że połączenia z dystrybutor lokalny i dla wszelkich połączeń zdalnych, gdy jest używane uwierzytelnianie systemu Windows.

      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.

  7. Wywołania jednej z następujących metod:

    • Dla nowej publikacja, aby utworzyć publikację z synchronizacja w sieci Web włączone, call Create.

    • Do istniejącej publikacja, aby umożliwić synchronizacja w sieci Web, call CommitPropertyChanges.

Przykład

Poniższy przykład tworzy publikacja, który jest włączony dla sieci synchronizacja w sieci Web.

            // Set the Publisher, publication database, and publication names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2008R2";

            ReplicationDatabase publicationDb;
            MergePublication publication;

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Enable the database for merge publication.               
                publicationDb = new ReplicationDatabase(publicationDbName, conn);
                if (publicationDb.LoadProperties())
                {
                    if (!publicationDb.EnabledMergePublishing)
                    {
                        publicationDb.EnabledMergePublishing = true;
                    }
                }
                else
                {
                    // Do something here if the database does not exist. 
                    throw new ApplicationException(String.Format(
                        "The {0} database does not exist on {1}.",
                        publicationDb, publisherName));
                }

                // Set the required properties for the merge publication.
                publication = new MergePublication();
                publication.ConnectionContext = conn;
                publication.Name = publicationName;
                publication.DatabaseName = publicationDbName;

                // Enable Web synchronization, if not already enabled.
                if ((publication.Attributes & PublicationAttributes.AllowWebSynchronization) == 0)
                {
                    publication.Attributes |= PublicationAttributes.AllowWebSynchronization;
                }

                // Enable pull subscriptions, if not already enabled.
                if ((publication.Attributes & PublicationAttributes.AllowPull) == 0)
                {
                    publication.Attributes |= PublicationAttributes.AllowPull;
                }
                
                // Enable Subscriber requested snapshot generation. 
                publication.Attributes |= PublicationAttributes.AllowSubscriberInitiatedSnapshot;

                // Enable anonymous access for Subscribers that cannot make a direct connetion 
                // to the Publisher. 
                publication.Attributes |= PublicationAttributes.AllowAnonymous;

                // Specify the Windows account under which the Snapshot Agent job runs.
                // This account will be used for the local connection to the 
                // Distributor and all agent connections that use Windows Authentication.
                publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin;
                publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword;

                // Explicitly set the security mode for the Publisher connection
                // Windows Authentication (the default).
                publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = true;

                if (!publication.IsExistingObject)
                {
                    // Create the merge publication and the Snapshot Agent job.
                    publication.Create();
                    publication.CreateSnapshotAgent();
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "The {0} publication already exists.", publicationName));
                }
            }

            catch (Exception ex)
            {
                // Implement custom application error handling here.
                throw new ApplicationException(String.Format(
                    "The publication {0} could not be created.", publicationName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the Publisher, publication database, and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"

Dim publicationDb As ReplicationDatabase
Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Enable the database for merge publication.                
    publicationDb = New ReplicationDatabase(publicationDbName, conn)
    If publicationDb.LoadProperties() Then
        If Not publicationDb.EnabledMergePublishing Then
            publicationDb.EnabledMergePublishing = True
        End If
    Else
        ' Do something here if the database does not exist. 
        Throw New ApplicationException(String.Format( _
         "The {0} database does not exist on {1}.", _
         publicationDb, publisherName))
    End If

    ' Set the required properties for the merge publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Enable Web synchronization, if not already enabled.
    If (publication.Attributes And PublicationAttributes.AllowWebSynchronization) = 0 Then
        publication.Attributes = publication.Attributes _
        Or PublicationAttributes.AllowWebSynchronization
    End If

    ' Enable pull subscriptions, if not already enabled.
    If (publication.Attributes And PublicationAttributes.AllowPull) = 0 Then
        publication.Attributes = publication.Attributes _
        Or PublicationAttributes.AllowPull
    End If

    ' Enable Subscriber requested snapshot generation. 
    publication.Attributes = publication.Attributes _
        Or PublicationAttributes.AllowSubscriberInitiatedSnapshot

    ' Enable anonymous access for Subscribers that cannot 
    ' make a direct connetion to the Publisher. 
    publication.Attributes = publication.Attributes _
        Or PublicationAttributes.AllowAnonymous

    ' Specify the Windows account under which the Snapshot Agent job runs.
    ' This account will be used for the local connection to the 
    ' Distributor and all agent connections that use Windows Authentication.
    publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin
    publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword

    ' Explicitly set the security mode for the Publisher connection
    ' Windows Authentication (the default).
    publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = True

    If Not publication.IsExistingObject Then
        ' Create the merge publication and the Snapshot Agent job.
        publication.Create()
        publication.CreateSnapshotAgent()
    Else
        Throw New ApplicationException(String.Format( _
            "The {0} publication already exists.", publicationName))
    End If
Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
        "The publication {0} could not be created.", publicationName), ex)
Finally
    conn.Disconnect()
End Try