Udostępnij za pośrednictwem


Jak Sprawdzanie poprawności danych przez subskrybenta (Programowanie RMO)

Replikacja umożliwia korzystanie z obiektów zarządzania replikacji (RMO) programowo sprawdzania poprawności danych subskrybent zgodny z danymi na Wydawca.Obiekty można użyć zależą od typu topologia replikacja.replikacja transakcyjnej wymaga sprawdzania poprawności wszystkie subskrypcje w publikacja.

Do sprawdzania poprawności danych wszystkich artykułów transakcyjnych publikacja

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

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

  3. Wywołanie LoadProperties metoda uzyskiwania pozostałych 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. Wywołanie ValidatePublication metoda.Należy przekazać następujące czynności:

    Oznacza artykuły do sprawdzania poprawności.

  5. Jeśli nie jest jeszcze uruchomiona, uruchom agenta dystrybucji do synchronizacji subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Synchronizowanie subskrypcji wypychanej (Programowanie RMO) lub Jak Synchronizowanie subskrypcji ściąganej (Programowanie RMO).Wynik operacji sprawdzania poprawności jest zapisywana w historia agenta.Aby uzyskać więcej informacji, zobacz Jak Programowo monitorowanie replikacji (Programowanie RMO).

Do sprawdzania poprawności danych w wszystkie subskrypcje w publikacja seryjnej

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

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

  3. Wywołanie LoadProperties metoda uzyskiwania pozostałych 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. Wywołanie ValidatePublication metoda.Przekaż żądane ValidationOption.

  5. Uruchom agenta scalania dla subskrypcja do uruchomienia sprawdzania poprawności lub czekać dalej agenta zaplanowanego uruchomienia.Aby uzyskać więcej informacji, zobacz Jak Synchronizowanie subskrypcji ściąganej (Programowanie RMO) i Jak Synchronizowanie subskrypcji wypychanej (Programowanie RMO).Wynik operacji sprawdzania poprawności jest zapisywany w historia agenta przeglądać za pomocą monitora replikacji.Aby uzyskać więcej informacji, zobacz Jak Programowo monitorowanie replikacji (Programowanie RMO).

Do sprawdzania poprawności danych w pojedynczej subskrypcja do publikacja korespondencji seryjnej

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

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

  3. Wywołanie LoadProperties metoda uzyskiwania pozostałych 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. Wywołanie ValidateSubscription metoda.Przekaż nazwę subskrybenta i baza danych subskrypcja sprawdzany i żądane ValidationOption.

  5. Uruchom agenta scalić subskrypcja do uruchomienia sprawdzania poprawności lub czekać dalej agenta zaplanowanego uruchomienia.Aby uzyskać więcej informacji, zobacz Jak Synchronizowanie subskrypcji ściąganej (Programowanie RMO) i Jak Synchronizowanie subskrypcji wypychanej (Programowanie RMO).Wynik operacji sprawdzania poprawności jest zapisywany w historia agenta przeglądać za pomocą monitora replikacji.Aby uzyskać więcej informacji, zobacz Jak Programowo monitorowanie replikacji (Programowanie RMO).

Przykład

W tym przykładzie oznacza wszystkie subskrypcje w publikacja transakcyjnych do sprawdzania poprawności rowcount.

          // Define the server, database, and publication names
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksProductTran";
            string publicationDbName = "AdventureWorks2008R2";

            TransPublication publication;

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

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

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

                // If we can't get the properties for this publication, 
                // throw an application exception.
                if (publication.LoadProperties())
                {
                    // Initiate validataion for all subscriptions to this publication.
                    publication.ValidatePublication(ValidationOption.RowCountOnly,
                        ValidationMethod.ConditionalFast, false);

                    // If not already running, start the Distribution Agent at each 
                    // Subscriber to synchronize and validate the subscriptions.
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Settings could not be retrieved for the publication. " +
                        "Ensure that the publication {0} exists on {1}.",
                        publicationName, publisherName));
                }
            }
            catch (Exception ex)
            {
                // Do error handling here.
                throw new ApplicationException(
                    "Subscription validation could not be initiated.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2008R2"

Dim publication As TransPublication

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

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

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

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

W tym przykładzie znaki szczególne subskrypcja do publikacja korespondencji seryjnej do sprawdzania poprawności rowcount.

         // Define the server, database, and publication names
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2008R2";
            string subscriberName = subscriberInstance;
            string subscriptionDbName = "AdventureWorks2008R2Replica";

            MergePublication publication;

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

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

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


                // If we can't get the properties for this merge publication, then throw an application exception.
                if (publication.LoadProperties())
                {
                    // Initiate validation of the specified subscription.
                    publication.ValidateSubscription(subscriberName,
                        subscriptionDbName, ValidationOption.RowCountOnly);
                    
                    // Start the Merge Agent to synchronize and validate the subscription.
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Settings could not be retrieved for the publication. " +
                        "Ensure that the publication {0} exists on {1}.",
                        publicationName, publisherName));
                }
            }
            catch (Exception ex)
            {
                // Do error handling here.
                throw new ApplicationException(String.Format(
                    "The subscription at {0} to the {1} publication could not " +
                    "be validated.", subscriberName, publicationName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"

Dim publication As MergePublication

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

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

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

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try