Pojęcia dotyczące obiektów zarządzania replikacją
Dotyczy:programu SQL ServerAzure SQL Managed Instance
Obiekty zarządzania replikacją (RMO) to zarządzany zestaw kodu, który hermetyzuje funkcje replikacji dla programu SQL Server. Funkcja RMO jest implementowana przez przestrzeń nazw Microsoft.SqlServer.Replication.
W tematach w poniższych sekcjach opisano, jak programowo kontrolować zadania replikacji za pomocą funkcji RMO:
Konfigurowanie dystrybucji
Tematy w tej sekcji pokazują, jak używać funkcji RMO do konfigurowania publikowania i dystrybucji.
tworzenie publikacji
Tematy w tej sekcji pokazują, jak używać funkcji RMO do tworzenia, usuwania i modyfikowania publikacji i artykułów.
subskrybować publikacje
Tematy w tej sekcji pokazują, jak używać funkcji RMO do tworzenia, usuwania i modyfikowania subskrypcji.
zabezpieczanie topologii replikacji
Tematy w tej sekcji pokazują, jak używać funkcji RMO do wyświetlania i modyfikowania ustawień zabezpieczeń.
synchronizowanie subskrypcji (replikacji)
Tematy w tej sekcji pokazują, jak synchronizować subskrypcje.
monitorowanie replikacji
Tematy w tej sekcji pokazują, jak programowo monitorować topologię replikacji.
Wprowadzenie do programowania RMO
Funkcja RMO jest przeznaczona do programowania wszystkich aspektów replikacji programu SQL Server. Przestrzeń nazw RMO jest Microsoft.SqlServer.Replicationi jest implementowana przez zestaw Microsoft.SqlServer.Rmo.dll, który jest zestawem microsoft .NET Framework. Zestaw Microsoft.SqlServer.Replication.dll, który również należy do przestrzeni nazw Microsoft.SqlServer.Replication, implementuje interfejs kodu zarządzanego do programowania różnych agentów replikacji (agent migawki, agent dystrybucji i agent scalania). Do jej klas można uzyskać dostęp z funkcji RMO, aby zsynchronizować subskrypcje. Klasy w przestrzeni nazw Microsoft.SqlServer.Replication.BusinessLogicSupport implementowane przez zestaw Microsoft.SqlServer.Replication.BusinessLogicSupport.dll służą do tworzenia niestandardowej logiki biznesowej na potrzeby replikacji scalania. Ten zestaw jest niezależny od funkcji RMO.
Wdrażanie aplikacji na podstawie funkcji RMO
Funkcja RMO zależy od składników replikacji i składników łączności klienta, które są dołączone do wszystkich wersji programu SQL Server z wyjątkiem programu SQL Server Compact. Aby wdrożyć aplikację na podstawie funkcji RMO, należy zainstalować wersję programu SQL Server zawierającą składniki replikacji i składniki łączności klienta na komputerze, na którym będzie uruchamiana aplikacja.
Wprowadzenie do funkcji RMO
W tej sekcji opisano sposób uruchamiania prostego projektu RMO przy użyciu programu Microsoft Visual Studio.
Aby utworzyć nowy projekt Microsoft Visual C#
Uruchom program Visual Studio.
W menu plik
kliknij pozycję NowyProjekt. zostanie wyświetlone okno dialogoweNowy projekt. W oknie dialogowym Project Types wybierz pozycję Visual C# Projects. W okienku szablonów
wybierz pozycję Aplikacja systemu Windows .(Opcjonalnie) W Nazwawpisz nazwę nowej aplikacji.
Kliknij przycisk OK, aby załadować szablon systemu Windows w języku Visual C#.
W menu Project wybierz pozycję Dodaj odwołanie. Zostanie wyświetlone okno dialogowe Dodawanie odwołania .
Wybierz następujące zestawy z listy na karcie .NET, a następnie kliknij przycisk OK.
Microsoft.SqlServer.Replication . Interfejs programowania .NET
Microsoft.SqlServer.ConnectionInfo
Biblioteka agenta replikacji
Nuta
Użyj CTRL, aby wybrać więcej niż jeden plik.
(Opcjonalnie) Powtórz krok 6. Kliknij kartę Przeglądaj, przejdź do folderu C:\Program Files\Microsoft SQL Server\nnn\COM, select Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, a następnie kliknij przycisk OK.
W menu Widok
kliknij pozycję Kod .W kodzie przed instrukcją przestrzeni nazw wpisz następujące przy użyciu instrukcji, aby zakwalifikować typy w przestrzeniach 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ć nowy projekt platformy .NET w języku Microsoft Visual Basic
Uruchom program Visual Studio.
W menu Plik
wybierz pozycję Nowy projekt . Zostanie wyświetlone okno dialogowe Nowy projekt.W okienku Typy projektów wybierz pozycję Visual Basic. W okienku Szablony wybierz pozycję Aplikacja systemu Windows.
(Opcjonalnie) W polu Nazwa wpisz nazwę nowej aplikacji.
Kliknij przycisk OK, aby załadować szablon systemu Windows języka Visual Basic.
W menu projektu
wybierz pozycję Dodaj odwołanie . Zostanie wyświetlone okno dialogowe Dodawanie odwołania .Wybierz następujące zestawy z listy na karcie .NET, a następnie kliknij przycisk OK.
Microsoft.SqlServer.Replication . Interfejs programowania .NET
Microsoft.SqlServer.ConnectionInfo
Biblioteka agenta replikacji
Nuta
Użyj CTRL, aby wybrać więcej niż jeden plik.
(Opcjonalnie) Powtórz krok 6. Kliknij kartę Przeglądaj, przejdź do folderu C:\Program Files\Microsoft SQL Server\nnn\COM, select Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, a następnie kliknij przycisk OK.
W menu Widok
kliknij pozycję Kod .W kodzie przed wszelkimi deklaracjami wpisz następujące instrukcje Import, aby kwalifikować typy w przestrzeniach 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
Nawiązywanie połączenia z serwerem replikacji
Obiekty programowania RMO wymagają połączenia z wystąpieniem programu SQL Server przy użyciu wystąpienia klasy ServerConnection. To połączenie z serwerem jest wykonywane niezależnie od jakichkolwiek obiektów programowania RMO. Następnie jest przekazywany do obiektu RMO podczas tworzenia wystąpienia lub przez przypisanie do właściwości P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContext
obiektu. W ten sposób obiekt programowania RMO i wystąpienia obiektów połączenia można tworzyć i zarządzać oddzielnie, a pojedynczy obiekt połączenia może być ponownie używany z wieloma obiektami programowania RMO. Następujące reguły dotyczą połączeń z serwerem replikacji:
Wszystkie właściwości połączenia są definiowane dla danego obiektu ServerConnection.
Połączenie z każdym wystąpieniem programu SQL Server musi mieć własny obiekt ServerConnection.
Obiekt ServerConnection jest przypisywany do właściwości
P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContext
obiektu programowania RMO tworzonego lub dostępnego na serwerze.Metoda Connect otwiera połączenie z serwerem. Ta metoda musi być wywoływana przed wywołaniem wszelkich metod, które uzyskują dostęp do serwera na dowolnych obiektach programowania RMO przy użyciu połączenia.
Ponieważ obiekty zarządzania RMO i SQL Server (SMO) używają klasy ServerConnection dla połączeń z programem SQL Server, tego samego połączenia mogą używać zarówno obiekty RMO, jak i SMO. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z wystąpieniem programu SQL Server.
Wszystkie informacje uwierzytelniania, aby nawiązać połączenie i pomyślnie zalogować się do serwera, są dostarczane w obiekcie ServerConnection.
Uwierzytelnianie systemu Windows jest ustawieniem domyślnym. Aby korzystać z uwierzytelniania programu SQL Server, LoginSecure musi być ustawiona wartość false i Login oraz Password musi być ustawiona na prawidłowe logowanie i hasło programu SQL Server. Poświadczenia zabezpieczeń muszą być zawsze przechowywane i obsługiwane bezpiecznie i dostarczane w czasie wykonywania zawsze, gdy jest to możliwe.
W przypadku aplikacji wielowątków należy użyć oddzielnego obiektu ServerConnection w każdym wątku.
Wywołaj metodę Disconnect obiektu ServerConnection, aby zamknąć aktywne połączenia serwera używane przez obiekty RMO.
Ustawianie właściwości funkcji RMO
Właściwości obiektów programowania RMO reprezentują właściwości tych obiektów replikacji na serwerze. Podczas tworzenia nowych obiektów replikacji na serwerze właściwości RMO są używane do definiowania tych obiektów. W przypadku istniejących obiektów właściwości funkcji RMO reprezentują właściwości istniejącego obiektu, które można modyfikować tylko dla właściwości, które można zapisywać lub ustawiać. Właściwości można ustawić na nowych obiektach lub istniejących obiektach.
Ustawianie właściwości dla nowych obiektów replikacji
Podczas tworzenia nowego obiektu replikacji na serwerze należy określić wszystkie wymagane właściwości przed wywołaniem metody Create obiektu. Aby uzyskać więcej informacji na temat ustawiania właściwości nowego obiektu replikacji, zobacz Configure Publishing and Distribution.
Ustawianie właściwości istniejących obiektów replikacji
W przypadku obiektów replikacji, które istnieją na serwerze, w zależności od obiektu, funkcja RMO może obsługiwać możliwość zmiany niektórych lub wszystkich jego właściwości. Można zmienić tylko właściwości zapisywalne lub konfigurowalne. Przed zmianą właściwości należy wywołać metodę Load lub metodę M:Microsoft.SqlServer.Replication.ReplicationObject.LoadProperties
w celu pobrania bieżących właściwości z serwera. Wywołanie tych metod wskazuje, że istniejący obiekt jest modyfikowany.
Domyślnie podczas zmiany właściwości obiektu funkcja RMO zatwierdza te zmiany na serwerze na podstawie trybu wykonywania używanego ServerConnection. Metoda P:Microsoft.SqlServer.Replication.ReplicationObject.IsExistingObject
może służyć do sprawdzania, czy obiekt istnieje na serwerze przed podjęciem próby pobrania lub zmiany jego właściwości. Aby uzyskać więcej informacji na temat zmiany właściwości obiektu replikacji, zobacz View and Modify Distributor and Publisher Properties.
Nuta
Gdy wielu klientów RMO lub wielu wystąpień obiektu programowania RMO uzyskuje dostęp do tego samego obiektu replikacji na serwerze, Refresh metodę obiektu RMO można wywołać w celu zaktualizowania właściwości na podstawie bieżącego stanu obiektu na serwerze.
Zmiany właściwości buforowania
Gdy właściwość SqlExecutionModes jest ustawiona na CaptureSql wszystkie instrukcje Transact-SQL generowane przez RMO są przechwytywane tak, aby można je było wykonać ręcznie w jednej partii przy użyciu jednej metody wykonywania. Funkcja RMO umożliwia buforowanie zmian właściwości i zatwierdzanie ich razem w jednej partii przy użyciu metody M:Microsoft.SqlServer.Replication.ReplicationObject.CommitPropertyChanges
obiektu. Aby buforować zmiany właściwości, właściwość P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChanges
obiektu musi być ustawiona na true. W przypadku zmiany właściwości buforowania w funkcji RMO obiekt ServerConnection nadal kontroluje, kiedy zmiany są wysyłane do serwera. Aby uzyskać więcej informacji na temat zmian właściwości buforowania dla obiektu replikacji, zobacz View and Modify Distributor and Publisher Properties.
Ważny
Mimo że klasa ServerConnection obsługuje deklarowanie jawnych transakcji podczas ustawiania właściwości, takie transakcje mogą zakłócać transakcje replikacji wewnętrznej, mogą generować nieprzewidziane wyniki i nie powinny być używane z funkcją RMO.
Włączanie obsługi protokołu TLS 1.2 dla składników RMO
Obsługę protokołu TLS1.2 dla składników RMO w systemie Windows 2012 i niższych można włączyć, instalując aktualizację KB 3140245i tworząc klucze rejestru zgodnie z opisem w artykule. W systemie Windows 2012 R2 i nowszych wersjach należy utworzyć tylko klucze rejestru, jak wspomniano w powyższym artykule.
Przykład
W tym przykładzie pokazano buforowanie zmian właściwości. Zmiany wprowadzone w atrybutach publikacji transakcyjnej są buforowane do momentu ich jawnego wysłania na serwer.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
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();
}
Powiązana zawartość
- Pojęcia dotyczące procedur składowanych systemu replikacji
- Pojęcia dotyczące programowania replikacji