Udostępnij za pośrednictwem


Pojęcia dotyczące obiektów zarządzania replikacją

Obiekty zarządzania replikacja (RMO) jest wirtualny plik dziennika kod zarządzany hermetyzuje funkcje replikacja dla SQL Server.RMO jest implementowana przez Microsoft.SqlServer.Replication obszaru nazw.

Tematy w poniższych sekcjach opisano, jak używać RMO Aby programistycznie sterować zadaniami replikacja:

Wprowadzenie do programowania RMO

RMO jest przeznaczony dla wszystkich aspektów programowania SQL Server replikacja. Obszar nazw RMO jest Microsoft.SqlServer.Replication, i jest implementowana przez Microsoft.SqlServer.Rmo.dll, który jest Microsoft .NET Framework wirtualny plik dziennika.Microsoft.SqlServer.replikacja.dll wirtualny plik dziennika, który należy także do Microsoft.SqlServer.Replication obszaru nazw, implementuje interfejs kod zarządzany programowania różnych czynników replikacja (Agent migawki, Agent dystrybucji i scalanie agenta).Jej klas jest możliwy z RMO do synchronizacji subskrypcji.Klasy w Microsoft.SqlServer.Replication.BusinessLogicSupport nazw implementowane przez Microsoft.SqlServer.Replication.BusinessLogicSupport.dll wirtualny plik dziennika, są używane do tworzenia niestandardowe logika biznesowa dla replikacja scalająca.Ten wirtualny plik dziennika jest niezależna od RMO.

Wdrażanie aplikacji opartych na RMO

RMO zależy od składniki replikacja i składniki łączności klienta, które są dołączone do wszystkich wersja SQL Server z wyjątkiem SQL Server kompaktowym. Aby wdrożyć aplikację oparte na RMO, należy zainstalować wersja SQL Server zawierającej składniki replikacja i łączności klient na komputerze, na którym będzie aplikacji Uruchom.

Wprowadzenie do RMO

W tej sekcji opisano sposób uruchamiania prostego projektu RMO, za pomocą Microsoft programu Visual Studio.

Tworzenie nowego projektu Microsoft Visual C#

  1. Uruchom program Visual Studio.

  2. On the File menu, click NewProject.Nowy projekt pojawi się okno dialogowe.

  3. W Typów projektów okno dialogowe Wybierz Visual C# projektów.W szablonów okienku wybierz Aplikacji systemu Windows.

  4. (Opcjonalnie) W nazwę, wpisz nazwę nowej aplikacji.

  5. Kliknij OK załadować szablon Visual C# systemu Windows.

  6. Na projektu menu wybierz Dodaj odwołanie element.Dodaj odwołanie pojawi się okno dialogowe.

  7. Wybierz następujące zespoły z listy na .NET kartę, a następnie kliknij OK.

    • Microsoft.SqlServer.Replication.Interfejs programowania netto

    • Microsoft.SqlServer.ConnectionInfo

    • Biblioteka Agent replikacji

    Ostrzeżenie

    Użyj klawisza CTRL, klucz , aby zaznaczyć więcej niż jeden plik.

  8. (Opcjonalnie) Powtórz krok 6.Kliknij Przeglądaj karta, przejdź do C:\Program Files\Microsoft SQL Server\100\COM, wybierz Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, a następnie kliknij przycisk OK.

  9. Na widoku menu, kliknij kodu.

  10. W kodzie, przed instrukcją nazw wpisz następujące using instrukcja, aby kwalifikować się do typów w obszarach nazw RMO:

    // These namespaces are required.
    using Microsoft.SqlServer.Replication;
    using Microsoft.SqlServer.Management.Common;
    // This namespace is only used when creating custom business
    // logic for merge replication.
    using Microsoft.SqlServer.Replication.BusinessLogicSupport; 
    

Aby utworzyć nowe Microsoft Visual Basic.NET projektu

  1. Uruchom program Visual Studio.

  2. Na pliku menu wybierz Nowy projekt.Nowy projekt pojawi się okno dialogowe.

  3. W okienku typów projektów wybierz Visual Basic.W okienku szablony wybierz Aplikacji systemu Windows.

  4. (Opcjonalnie) W nazwę wpisz nazwę nowej aplikacji.

  5. Kliknij OK załadować szablon Windows Visual Basic.

  6. Na projektu menu wybierz Dodaj odwołanie.Dodaj odwołanie pojawi się okno dialogowe.

  7. Wybierz następujące zespoły z listy na .NET kartę, a następnie kliknij OK.

    • Microsoft.SqlServer.Replication.Interfejs programowania netto

    • Microsoft.SqlServer.ConnectionInfo

    • Biblioteka Agent replikacji

    Ostrzeżenie

    Użyj klawisza CTRL, klucz , aby zaznaczyć więcej niż jeden plik.

  8. (Opcjonalnie) Powtórz krok 6.Kliknij Przeglądaj karta, przejdź do C:\Program Files\Microsoft SQL Server\100\COM, wybierz Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, a następnie kliknij przycisk OK.

  9. Na widoku menu, kliknij kodu.

  10. W kodzie przed wszelkimi deklaracjami, wpisz następujące Imports instrukcji, aby kwalifikować się do typów w obszarach nazw RMO.

    ' These namespaces are required.
    Imports Microsoft.SqlServer.Replication
    Imports Microsoft.SqlServer.Management.Common
    ' This namespace is only used when creating custom business
    ' logic for merge replication.
    Imports Microsoft.SqlServer.Replication.BusinessLogicSupport 
    

Łączenie z serwerem replikacji

RMO obiekty programowania wymagają połączenia z wystąpienie SQL Server dokonane za pomocą wystąpienie ServerConnection KlasaTo połączenie z serwerem jest dokonane niezależnie od wszelkich obiektów programowania RMO.Następnie są przekazane do obiektu RMO, podczas tworzenia wystąpienie lub przez przypisanie do ConnectionContext właściwość obiektu.W ten sposób RMO programowania obiektu i wystąpienia obiektów połączenia można tworzyć i zarządzane oddzielnie i obiektu pojedynczego połączenia mogą być ponownie użyte RMO wiele obiektów programowania.Dla połączeń z serwerem replikacja obowiązują następujące reguły:

  • Wszystkie właściwości połączenia są zdefiniowane dla danego ServerConnection obiektu.

  • Połączenia do każdego wystąpienie SQL Server musi mieć własny ServerConnection obiektu.

  • ServerConnection Obiektu jest przypisany do ConnectionContext właściwość obiektu programowania RMO tworzenia ani uzyskać dostępu do serwera.

  • Connect Metoda otwiera połączenie z serwerem.Tej metoda należy wywołać przed wywołaniem wszystkie metoda dostępu do serwera, na dowolnej RMO programowania obiektów za pomocą połączenia.

  • Ponieważ RMO i SQL Server obiektów zarządzania (SMO) używają ServerConnection klasy dla połączeń z SQL Server, tego samego połączenia mogą być używane przez RMO i SMO obiektów.Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z wystąpieniem programu SQL Server.

  • Wszystkie informacje uwierzytelnianie do nawiązania połączenia i pomyślnie zalogować się do serwera jest dostarczany w ServerConnection obiektu.

  • Uwierzytelnianie systemu Windows jest domyślnie.Aby użyć SQL Server uwierzytelniania, LoginSecure musi być zestaw do false i Login i Password musi być zestaw do prawidłowego SQL Server logowania i hasło.Poświadczenia zabezpieczeń musi zawsze być przechowywane obsługiwane bezpiecznie i dostarczane na uruchamianie -czas to możliwe.

  • W przypadku aplikacji wielowątkowych, oddzielne ServerConnection obiektu powinny być stosowane w każdym wątek.

Wywołanie Disconnect metoda na ServerConnection obiekt, aby zamknąć połączenia active server używane przez obiekty RMO.

Ustawienie właściwości RMO

Właściwości obiektów programowania RMO reprezentuje właściwości tych obiektów replikacja na serwerze.Podczas tworzenia nowych obiektów replikacja na serwerze, właściwości RMO są używane do definiowania tych obiektów.Dla istniejących obiektów właściwości RMO reprezentuje właściwości istniejącego obiektu, które można modyfikować tylko dla właściwości, które są zapisywalny lub do ustawienia.zestaw właściwości obiektów nowych lub istniejących obiektów.

Ustawianie właściwości dla nowych obiektów replikacji

Podczas tworzenia nowego obiektu replikacja na serwerze, należy określić wszystkie wymagane właściwości przed wywoływaniem Create metoda obiektu.Aby uzyskać więcej informacji na temat ustawiania właściwości dla nowego obiektu replikacja, zobacz Jak Konfigurowanie publikacji i dystrybucji (Programowanie RMO).

Ustawianie właściwości dla istniejących obiektów replikacji

Dla obiektów replikacja, które istnieją na serwerze, w zależności od obiektu RMO może obsługiwać możliwość zmiany niektórych lub wszystkich jego właściwości.Tylko zapisywalny lub do ustawienia właściwości można zmienić.Zanim można zmienić właściwości, albo Load lub LoadProperties musi zostać wywołana metoda uzyskać właściwości bieżącego z serwera.Wywołania tych metod wskazuje, że modyfikowany jest istniejący obiekt.

Domyślnie podczas zmieniania właściwości obiektu, RMO zatwierdza zmiany do serwera na podstawie trybu wykonywania z ServerConnection używany.IsExistingObject metoda można sprawdzić, czy obiekt istnieje na serwerze przed podjęciem próby pobrania lub zmienić jego właściwości.Aby uzyskać więcej informacji na temat zmieniania właściwości obiektu replikacja, zobacz Jak Wyświetlanie i modyfikowanie właściwości dystrybutora (Programowanie RMO) i Wydawca.

Ostrzeżenie

Gdy wielu klientów RMO lub wiele wystąpień obiektu programowania RMO uzyskują dostęp do tego samego obiektu replikacja na serwerze, Refresh można wywołać metoda RMO obiektu zaktualizować właściwości na podstawie bieżącego stanu obiektu serwera.

Zmiany właściwości buforowania

Gdy SqlExecutionModes właściwość jest zestaw do CaptureSql wszystkich Transact-SQL instrukcji generowane przez RMO są przechwytywane tak, że mogą być wykonywane ręcznie w jednej partia, używając jednej z metod wykonywania.RMO umożliwia zmiany właściwość w pamięci podręcznej i zatwierdzanie je razem w jednej partia przy użyciu CommitPropertyChanges metoda obiektu.Zmiany w pamięci podręcznej właściwość CachePropertyChanges właściwość obiektu musi być zestaw do true.Gdy buforowanie zmian właściwość w RMO, ServerConnection obiekt nadal kontroluje, gdy zmiany są wysyłane do serwera.Aby uzyskać więcej informacji na temat buforowania zmiany właściwość dla obiektu replikacja, zobacz Jak Wyświetlanie i modyfikowanie właściwości dystrybutora (Programowanie RMO) i Wydawca.

Ważna informacjaWażne:

Chociaż ServerConnection obsługuje klasy deklarowanie transakcje podczas ustawiania właściwości, takie transakcje mogą zakłócać transakcji wewnętrznych replikacja, może prowadzić do niekontrolowanej wyniki i nie powinny być używane z RMO.

Przykład

Ten przykład demonstruje buforowanie zmian właściwość.Zmiany atrybutów publikacja transakcyjne są buforowane przed wysłaniem jawnie na serwerze.

            // 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;

                // Explicitly enable caching of property changes on this object.
                publication.CachePropertyChanges = true;

                // If we can't get the properties for this publication, 
                // throw an application exception.
                if (publication.LoadProperties())
                {
                    // Enable support for push subscriptions and disable support 
                    // for pull subscriptions.
                    if ((publication.Attributes & PublicationAttributes.AllowPull) != 0)
                    {
                        publication.Attributes ^= PublicationAttributes.AllowPull;
                    }
                    if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
                    {
                        publication.Attributes |= PublicationAttributes.AllowPush;
                    }

                    // Send changes to the server.
                    publication.CommitPropertyChanges();
                }
                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(
                    "The publication property could not be changed.", ex);
            }
            finally
            {
                conn.Disconnect();
            }