Udostępnij za pośrednictwem


Jak Tworzenie migawki początkowego (Programowanie RMO)

Po utworzeniu publikacja, Agent migawki generuje migawek.Migawki te można generować programowo przy użyciu obiektów zarządzania replikacja (RMO) i kod zarządzany bezpośredni dostęp do funkcji agenta replikacja.Używanych obiektów zależą od typu replikacja.Można uruchomić agenta migawki synchronicznie przy użyciu SnapshotGenerationAgent obiektu lub asynchronicznie za pomocą zadanie agenta.Po migawka początkowa został wygenerowany, jest przekazywane i stosowane przez subskrybenta po pierwszym zsynchronizowaniu subskrypcja.Musisz ponownie uruchomić agenta, ilekroć migawka istniejących już zawiera ważne,-do-data danych.Aby uzyskać więcej informacji, zobacz Utrzymywanie publikacje.

Publikacji korespondencji seryjnej, które filtry sparametryzowana wymagają dwóch części migawka.Aby uzyskać więcej informacji, zobacz Jak Utworzyć migawkę dla publikacji korespondencji seryjnej za pomocą sparametryzowanych filtrów (Programowanie RMO).

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Jeśli to możliwe, monitują użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia muszą być przechowywane, usługi kryptograficzne dostarczonych przez Microsoft systemu Windows.NET Framework.

Aby wygenerować migawka początkowa dla migawki lub transakcyjnych publikacja przez uruchomienie zadanie agenta migawki (asynchronicznej)

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

  2. Utworzenie wystąpienie TransPublication klasyUstaw Name i DatabaseName właściwość publikacja i zestaw ConnectionContext właściwość połączenia, utworzony w kroku 1.

  3. Wywołanie LoadProperties metoda załadować pozostałe właściwości obiektu.Jeśli ta metoda zwraca false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości publikacji w kroku 2.

  4. Jeśli wartość SnapshotAgentExists jest false, call CreateSnapshotAgent utworzyć zadanie agenta migawka dla publikacja.

  5. Wywołanie StartSnapshotGenerationAgentJob metoda, aby uruchomić zadanie agenta, który generuje migawka dla publikacja.

  6. (Opcjonalnie) Gdy wartość SnapshotAvailable jest true, migawka jest dostępne dla subskrybentów.

Aby wygenerować migawka początkowa dla migawki lub transakcyjnych publikacja przez uruchomienie agenta migawki (synchroniczną)

  1. Utworzenie wystąpienie SnapshotGenerationAgent klasy, a zestaw następujące wymagane właściwości:

  2. Set a value of Transactional or Snapshot for ReplicationType.

  3. Wywołanie GenerateSnapshot metoda.

Aby wygenerować migawka początkowa dla publikacja seryjnej przez uruchomienie zadanie agenta migawki (asynchronicznej)

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

  2. Utworzenie wystąpienie MergePublication klasyUstaw Name i DatabaseName właściwość publikacja i zestaw ConnectionContext właściwość połączenia, utworzony w kroku 1.

  3. Wywołanie LoadProperties metoda załadować pozostałe właściwości obiektu.Jeśli ta metoda zwraca false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości publikacji w kroku 2.

  4. Jeśli wartość SnapshotAgentExists jest false, call CreateSnapshotAgent utworzyć zadanie agenta migawka dla publikacja.

  5. Wywołanie StartSnapshotGenerationAgentJob metoda, aby uruchomić zadanie agenta, który generuje migawka dla publikacja.

  6. (Opcjonalnie) Gdy wartość SnapshotAvailable jest true, migawka jest dostępne dla subskrybentów.

Aby wygenerować migawka początkowa dla publikacja seryjnej przez uruchomienie agenta migawki (synchroniczną)

  1. Utworzenie wystąpienie SnapshotGenerationAgent klasy, a zestaw następujące wymagane właściwości:

  2. Ustawiona wartość Merge dla ReplicationType.

  3. Wywołanie GenerateSnapshot metoda.

Przykład

W tym przykładzie uruchamiane synchronicznie agenta migawki do generowania migawka początkowa dla transakcyjnych publikacja.

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

            SnapshotGenerationAgent agent;

            try
            {
                // Set the required properties for Snapshot Agent.
                agent = new SnapshotGenerationAgent();
                agent.Distributor = distributorName;
                agent.DistributorSecurityMode = SecurityMode.Integrated;
                agent.Publisher = publisherName;
                agent.PublisherSecurityMode = SecurityMode.Integrated;
                agent.Publication = publicationName;
                agent.PublisherDatabase = publicationDbName;
                agent.ReplicationType = ReplicationType.Transactional;

                // Start the agent synchronously.
                agent.GenerateSnapshot();

            }
            catch (Exception ex)
            {
                // Implement custom application error handling here.
                throw new ApplicationException(String.Format(
                    "A snapshot could not be generated for the {0} publication."
                    , publicationName), ex);
            }
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publisherName As String = publisherInstance
Dim distributorName As String = publisherInstance

Dim agent As SnapshotGenerationAgent

Try
    ' Set the required properties for Snapshot Agent.
    agent = New SnapshotGenerationAgent()
    agent.Distributor = distributorName
    agent.DistributorSecurityMode = SecurityMode.Integrated
    agent.Publisher = publisherName
    agent.PublisherSecurityMode = SecurityMode.Integrated
    agent.Publication = publicationName
    agent.PublisherDatabase = publicationDbName
    agent.ReplicationType = ReplicationType.Transactional

    ' Start the agent synchronously.
    agent.GenerateSnapshot()

Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
End Try

W tym przykładzie asynchronicznie uruchamia zadanie agenta do generowania migawka początkowa dla transakcyjnych publikacja.

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

            TransPublication publication;

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

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

                // Set the required properties for an existing publication.
                publication = new TransPublication();
                publication.ConnectionContext = conn;
                publication.Name = publicationName;
                publication.DatabaseName = publicationDbName;

                if (publication.LoadProperties())
                {
                    // Start the Snapshot Agent job for the publication.
                    publication.StartSnapshotGenerationAgentJob();
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "The {0} publication does not exist.", publicationName));
                }
            }
            catch (Exception ex)
            {
                // Implement custom application error handling here.
                throw new ApplicationException(String.Format(
                    "A snapshot could not be generated for the {0} publication."
                    , publicationName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publisherName As String = publisherInstance

Dim publication As TransPublication

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

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

    ' Set the required properties for an existing publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    If publication.LoadProperties() Then
        ' Start the Snapshot Agent job for the publication.
        publication.StartSnapshotGenerationAgentJob()
    Else
        Throw New ApplicationException(String.Format( _
         "The {0} publication does not exist.", publicationName))
    End If
Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
Finally
    conn.Disconnect()
End Try