Udostępnij za pośrednictwem


Jak Utworzyć migawkę dla publikacja korespondencji seryjnej z filtrami sparametryzowana (Programowanie RMO)

Podczas generowania migawkę publikacja korespondencji seryjnej przy użyciu filtrów sparametryzowana, najpierw należy wygenerować migawkę standardowe (schemat), zawierający wszystkie metadane subskrybent dla subskrypcja.Następnie należy wygenerować część migawka, zawierający partycję specyficzne dla subskrybent opublikowanych danych.Aby uzyskać więcej informacji zobacz Jak Tworzenie migawka początkowy (Programowanie RMO).

RMO (replikacja Management Objects) służy do generowania podzielonym na partycje migawek programowo w następujący sposób:

  • Zezwalaj na subskrybentów do generowania migawka żądanie i aplikacji w pierwszym czas ich synchronizowania.

  • Wstępnie wygenerować migawki dla każdej partycji.

  • Ręcznie wygenerować migawkę każdej subskrybent przez uruchomienie agenta migawka.

Uwaga

Podczas filtrowania listy artykuł daje siebie partycje, które są unikatowe dla każdej subskrypcja (określając wartość NonOverlappingSingleSubscription() dla PartitionOption() Podczas tworzenia artykułu korespondencji seryjnej), metadane jest czyszczone w momencie działa agent korespondencji seryjnej. Oznacza to, że podzielonym na partycje migawka szybciej wygasa.Po wybraniu tej opcji należy wziąć pod uwagę co subskrybentów żądania generowania migawka.Aby uzyskać więcej informacji zobacz sekcję, w temacie za pomocą odpowiednie opcje filtrowania Sparametryzowana filtry wierszy.

Security noteSecurity Note:

Jeśli jest to możliwe, monituje użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia muszą być przechowywane, należy użyć Usługi kryptograficzne dostarczone przez Microsoft System Windows .NET framework.

Aby utworzyć publikacja, która umożliwia subskrybentów zainicjować migawka wytwarzania i dostawy

  1. Utwórz połączenie Wydawca przy użyciu ServerConnection Klasa.

  2. Utworzenie wystąpienie ReplicationDatabase Klasa dla baza danych publikacja, ustaw ConnectionContext() Właściwość do wystąpienie ServerConnection z kroku 1 oraz wywołanie LoadProperties() Metoda. Jeśli LoadProperties() Zwraca false, upewnij się, że istnieje w bazie danych.

  3. Jeśli EnabledMergePublishing() Właściwość jest false, ustaw ją jako true i wywoływanie CommitPropertyChanges().

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

    • The ServerConnection from step 1 for ConnectionContext().

    • Nazwa bazy danych opublikowanej w celu DatabaseName().

    • Nazwę dla publikacja Name().

    • Maksymalną liczbę zadań migawka dynamicznych do uruchomienia MaxConcurrentDynamicSnapshots(). Ponieważ zainicjowane subskrybent migawki żądań może występować w dowolnym momencie, ta właściwość ogranicza liczbę Snapshot Agent zadań, które można uruchomić jednocześnie wielu subskrybent zażądać ich partycjonowana migawka w tym samym czasie.Jeśli maksymalną liczbę zadań, dodatkowe partycjonowana migawka żądania są umieszczane w kolejce do momentu zakończenia jednej z uruchomionych zadań.

    • Za pomocą bitowe logiczny (lub| w środowisku Visual C# i Or w języku Visual Basic) operator, aby dodać wartość AllowSubscriberInitiatedSnapshot() Aby Attributes().

    • The Login() and Password() fields of SnapshotGenerationAgentProcessSecurity() to provide the poświadczenia for the Microsoft Windows account under which the migawka Agent zadanie runs.

      Uwaga

      Ustawienie SnapshotGenerationAgentProcessSecurity() Zaleca się, gdy publikacja jest tworzona przez element członkowski członkowski sysadmin stała rola serwera. Aby uzyskać więcej informacji zobacz Replication Agent Security Model.

  5. Wywołanie Create() Metoda tworzenia publikacja.

    Security noteSecurity Note:

    Podczas konfigurowania przez wydawcę z dystrybutor zdalny wartości dostarczane dla wszystkich właściwości, łącznie z SnapshotGenerationAgentProcessSecurity(), są wysyłane do dystrybutor jako zwykły tekst. Należy zaszyfrować połączenie między Wydawca i jego zdalnego dystrybutor przed telefonicznej Create() Metoda. Aby uzyskać więcej informacji zobacz Encrypting Connections to SQL Server.

  6. Użycie MergeArticle właściwość, która ma zostać dodana do publikacja artykułów. Określ FilterClause() Właściwość dla co najmniej jeden artykuł, który definiuje sparametryzowana filtru. (Opcjonalnie) Tworzenie MergeJoinFilter obiekty, które definiują filtry łączyć między artykułów. Aby uzyskać więcej informacji zobacz Jak Definiowanie artykułu (Programowanie RMO).

  7. Jeśli wartość SnapshotAgentExists() jest false, wywoływanie CreateSnapshotAgent() Aby utworzyć wstępne zadanie agenta migawka dla tej publikacja.

  8. Wywołanie StartSnapshotGenerationAgentJob() Metoda MergePublication Obiekt utworzony w kroku 4. Spowoduje to uruchomienie zadanie agenta, który generuje migawka początkowa.Aby uzyskać więcej informacji na temat generowania migawka początkowa i definiowania harmonogram niestandardowy dla spedytora, migawka zobacz Jak Tworzenie migawka początkowy (Programowanie RMO).

  9. (Opcjonalnie) Sprawdź, czy wartość true dla SnapshotAvailable() właściwości, aby określić, kiedy migawka początkowa jest gotowa do użytku.

  10. Gdy Agent Scal abonenta łączy się w pierwszym czas, migawka podzielonym na partycje jest generowany automatycznie.

Tworzenie publikacja i pregenerate lub automatyczne odświeżanie migawki

  1. Użyj wystąpienie MergePublication Klasa, aby zdefiniować publikacja korespondencji seryjnej. Aby uzyskać więcej informacji zobacz Jak Tworzenie publikacja (Programowanie RMO).

  2. Użycie MergeArticle właściwość, która ma zostać dodana do publikacja artykułów. Określ FilterClause() Właściwość dla co najmniej jeden artykuł, który definiuje sparametryzowana filtr, a następnie utworzyć dowolny MergeJoinFilter obiekty, które definiują filtry łączyć między artykułów. Aby uzyskać więcej informacji zobacz Jak Definiowanie artykułu (Programowanie RMO).

  3. Jeśli wartość SnapshotAgentExists() jest false, wywoływanie CreateSnapshotAgent() Aby utworzyć zadanie Agenta migawka dla tej publikacja.

  4. Wywołanie StartSnapshotGenerationAgentJob() Metoda MergePublication Obiekt utworzony w kroku 1. Ta metoda uruchamia zadanie agenta, który generuje migawka początkowa.Aby uzyskać więcej informacji na temat generowania migawka początkowa i definiowania harmonogram niestandardowy dla spedytora, migawka zobacz Jak Tworzenie migawka początkowy (Programowanie RMO).

  5. Sprawdź, czy wartość true dla SnapshotAvailable() właściwości, aby określić, kiedy migawka początkowa jest gotowa do użytku.

  6. Utworzenie wystąpienie MergePartition klasy, a zestaw sparametryzowana kryteriów filtrowania dla subskrybent przy użyciu co najmniej jedną z następujących właściwości:

    • Jeżeli partycja subskrybent's jest określona przez wynik SUSER_SNAME (Transact-SQL), należy użyć DynamicFilterLogin().

    • Jeżeli partycja abonenta jest określona przez wynik HOST_NAME (Transact-SQL) lub przeciążenie tej funkcja, wykorzystanie DynamicFilterHostName().

  7. Utworzenie wystąpienie MergeDynamicSnapshotJob Klasa i zestaw tej samej właściwość, jak w kroku 6.

  8. Użycie ReplicationAgentSchedule klasy, aby zdefiniować plan generowania filtrowane migawka dla partycji subskrybent.

  9. Za pomocą wystąpienie z MergePublication w kroku 1 wywołanie AddMergePartition(MergePartition). Przekazywanie MergePartition obiekt z kroku 6.

  10. Za pomocą programu MergePublication w kroku 1, wywołanie AddMergeDynamicSnapshotJob(MergeDynamicSnapshotJob, ReplicationAgentSchedule) Metoda. Przekazywanie MergeDynamicSnapshotJob obiekt z kroku 7, ReplicationAgentSchedule obiekt z kroku 8.

  11. Wywołanie EnumMergeDynamicSnapshotJobs(), a zlokalizuj MergeDynamicSnapshotJob obiekt zadanie nowo dodane partycjonowana migawka w zwróconej tablicy.

  12. Uzyskiwanie Name() właściwość dla zadanie.

  13. Utwórz połączenie dystrybutor przy użyciu ServerConnection Klasa.

  14. Utworzenie wystąpienie obiektów SMO (SQL Server Management Objects) Server klasy, przekazując ServerConnection obiekt z kroku 13.

  15. Utworzenie wystąpienie Job klasy, przekazując JobServer() Właściwość Server obiekt z kroku 14, a nazwa zadanie z kroku 12.

  16. Wywołanie Start() Metoda, aby uruchomić zadanie partycjonowana migawka.

  17. Powtórz kroki 6-16 dla poszczególnych subskrybent.

Aby utworzyć publikacja i ręcznego tworzenia migawek dla każdej partycji

  1. Użyj wystąpienie MergePublication Klasa, aby zdefiniować publikacja korespondencji seryjnej. Aby uzyskać więcej informacji zobacz Jak Tworzenie publikacja (Programowanie RMO).

  2. Użycie MergeArticle właściwości, która ma zostać dodana artykuły do publikacja, określ FilterClause() Właściwość dla co najmniej jeden artykuł, który definiuje sparametryzowana filtr, a następnie utworzyć dowolny MergeJoinFilter obiekty, które definiują filtry łączyć między artykułów. Aby uzyskać więcej informacji zobacz Jak Definiowanie artykułu (Programowanie RMO).

  3. Generowanie początkowego migawka.Aby uzyskać więcej informacji zobacz Jak Tworzenie migawka początkowy (Programowanie RMO).

  4. Utworzenie wystąpienie SnapshotGenerationAgent klasy, a zestaw następujących wymaganych właściwości:

    • Publisher() -Nazwa Wydawca

    • PublisherDatabase() -Nazwa publikacja bazy danych

    • Publication() -Nazwa publikacja

    • Distributor() -Nazwa dystrybutor

    • PublisherSecurityMode() -wartość Integrated() Aby używać zintegrowanego uwierzytelnianie systemu Windows lub wartość Standard() Aby użyć uwierzytelnianie programu SQL Server.

    • DistributorSecurityMode() -wartość Integrated() Aby używać zintegrowanego uwierzytelnianie systemu Windows lub wartość Standard() Aby użyć uwierzytelnianie programu SQL Server.

  5. zestaw wartość Merge() dla ReplicationType().

  6. zestaw co najmniej jeden z następujących właściwości, aby zdefiniować parametry partycjonowanie na partycje:

    • Jeżeli partycja subskrybent's jest określona przez wynik SUSER_SNAME (Transact-SQL), należy użyć DynamicFilterLogin().

    • Jeżeli partycja abonenta jest określona przez wynik HOST_NAME (Transact-SQL) lub przeciążenie tej funkcja, wykorzystanie DynamicFilterHostName().

  7. Wywołanie GenerateSnapshot() Metoda.

  8. Powtórz kroki 4–7 dla każdego subskrybent.

Example

W tym przykładzie tworzony publikacja korespondencji seryjnej, która umożliwia generowanie żądanych migawka subskrybentów.

W tym przykładzie ręcznie tworzy partycję subskrybent i filtrowane migawkę dla publikacja korespondencji seryjnej z filtrami parametrami wiersza.

W tym przykładzie uruchamia ręcznie agenta migawka, aby wygenerować migawkę filtrowanych danych dla subskrybent do publikacja korespondencji seryjnej z filtrami parametrami wiersza.