Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Felügyelt Azure SQL-példány
A Replikációkezelési objektumok (RMO) egy felügyelt kódszerelvény, amely magában foglalja az SQL Server replikációs funkcióit. Az RMO-t a Microsoft.SqlServer.Replication névtér valósítja meg.
A következő szakaszokban található témakörök ismertetik, hogyan vezérelheti programozott módon a replikációs feladatokat az RMO használatával:
Terjesztési konfigurálása
Az ebben a szakaszban található témakörök bemutatják, hogyan konfigurálható az RMO a közzététel és a terjesztés konfigurálásához.
Kiadvány létrehozása
Az ebben a szakaszban található témakörök bemutatják, hogyan használható az RMO a kiadványok és cikkek létrehozására, törlésére és módosítására.
Előfizetés kiadványokra
Az ebben a szakaszban található témakörök bemutatják, hogyan használható az RMO az előfizetések létrehozására, törlésére és módosítására.
Replikációs topológia védelme
Az ebben a szakaszban található témakörök bemutatják, hogyan használható az RMO a biztonsági beállítások megtekintésére és módosítására.
Előfizetések (replikáció) szinkronizálása
Az ebben a szakaszban található témakörök az előfizetések szinkronizálását mutatják be.
replikáció monitorozása
Az ebben a szakaszban található témakörök bemutatják, hogyan lehet programozott módon monitorozni a replikációs topológiát.
Bevezetés az RMO programozásába
Az RMO az SQL Server-replikáció minden aspektusának programozására szolgál. Az RMO-névtér Microsoft.SqlServer.Replication, és a Microsoft.SqlServer.Rmo.dllvalósítja meg, amely egy Microsoft .NET-keretrendszer-szerelvény. A Microsoft.SqlServer.Replication.dll szerelvény, amely szintén a Microsoft.SqlServer.Replication névtérhez tartozik, egy felügyelt kódfelületet implementál a különböző replikációs ügynökök (pillanatképügynök, terjesztési ügynök és egyesítési ügynök) programozásához. Az osztályai az RMO-ból érhetők el az előfizetések szinkronizálásához. A Microsoft.SqlServer.Replication.BusinessLogicSupport.dll szerelvény által implementált Microsoft.SqlServer.Replication.BusinessLogicSupport névtér osztályai egyéni üzleti logikát hoznak létre az egyesítési replikációhoz. Ez a szerelvény független az RMO-tól.
Alkalmazások üzembe helyezése RMO-n alapuló
Az RMO az SQL Server compact kivételével az SQL Server összes verziójában megtalálható replikációs összetevőktől és ügyfélkapcsolati összetevőktől függ. Az RMO-n alapuló alkalmazás üzembe helyezéséhez telepítenie kell az SQL Server azon verzióját, amely replikációs összetevőket és ügyfélkapcsolati összetevőket tartalmaz azon a számítógépen, amelyen az alkalmazás futni fog.
Az RMO használatának első lépései
Ez a szakasz azt ismerteti, hogyan indíthat el egy egyszerű RMO-projektet a Microsoft Visual Studióval.
Új Microsoft Visual C#-projekt létrehozása
Indítsa el a Visual Studiót.
A Fájl menüben kattintson NewProject elemre. Megjelenik a Új projekt párbeszédpanel.
A Projekttípusok párbeszédpanelen válassza Visual C#-projekteklehetőséget. A Sablonok panelen válassza Windows-alkalmazáslehetőséget.
(Nem kötelező) A Névmezőbe írja be az új alkalmazás nevét.
Kattintson OK gombra a Visual C# Windows-sablon betöltéséhez.
A Project menüben válassza Hivatkozás hozzáadása elemet. Megjelenik a Hivatkozás hozzáadása párbeszédpanel.
Válassza ki a következő szerelvényeket a .NET lapon található listából, majd kattintson OKgombra.
Microsoft.SqlServer.Replication .NET programozási felület
Microsoft.SqlServer.ConnectionInfo
Replikációs ügynök kódtára
Jegyzet
A CTRL billentyűkombinációval több fájlt is kijelölhet.
(Nem kötelező) Ismételje meg a 6. lépést. Kattintson a Tallózás fülre, lépjen a meghajtóra><:\Program Files\Microsoft SQL Server\nnn\COM, select Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, majd kattintson az OK gombra.
A Nézet menüben kattintson Kódelemre.
A kódban a névtérutasítás előtt írja be a következő utasítások használatával, hogy az RMO-névterekben szereplő típusokat minősítse:
// 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;
Új Microsoft Visual Basic .NET-projekt létrehozása
Indítsa el a Visual Studiót.
A Fájl menüben válassza Új projektlehetőséget. Megjelenik az Új projekt párbeszédpanel.
A Projekttípusok panelen válassza Visual Basiclehetőséget. A Sablonok panelen válassza Windows-alkalmazáslehetőséget.
(Nem kötelező) A Név mezőbe írja be az új alkalmazás nevét.
Kattintson OK gombra a Visual Basic Windows-sablon betöltéséhez.
A Project menüjében válassza a Hivatkozás hozzáadásalehetőséget. Megjelenik a Hivatkozás hozzáadása párbeszédpanel.
Válassza ki a következő szerelvényeket a .NET lapon található listából, majd kattintson OKgombra.
Microsoft.SqlServer.Replication .NET programozási felület
Microsoft.SqlServer.ConnectionInfo
Replikációs ügynök kódtára
Jegyzet
A CTRL billentyűkombinációval több fájlt is kijelölhet.
(Nem kötelező) Ismételje meg a 6. lépést. Kattintson a Tallózás fülre, lépjen a meghajtóra><:\Program Files\Microsoft SQL Server\nnn\COM, select Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, majd kattintson az OK gombra.
A Nézet menüben kattintson Kódelemre.
A kódban a deklarációk előtt írja be a következő Import utasítást az RMO-névterek típusok minősítéséhez.
' 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
Csatlakozás replikációs kiszolgálóhoz
Az RMO-programozási objektumok megkövetelik, hogy az SQL Server egy példányához a ServerConnection osztály egy példányával kell kapcsolatot létesíteni. A kiszolgálóval való kapcsolat minden RMO programozási objektumtól függetlenül jön létre. Ezt követően a rendszer a példány létrehozásakor vagy az objektum P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContext tulajdonságához való hozzárendeléssel továbbítja az RMO-objektumnak. Ily módon egy RMO programozási objektum és a kapcsolatobjektum-példányok külön hozhatók létre és kezelhetők, és egyetlen kapcsolatobjektum több RMO programozási objektummal is újra felhasználható. A replikációs kiszolgálóval létesített kapcsolatokra a következő szabályok vonatkoznak:
A kapcsolat összes tulajdonsága egy adott ServerConnection objektumhoz van definiálva.
Az SQL Server egyes példányaival való kapcsolatnak saját ServerConnection objektummal kell rendelkeznie.
A ServerConnection objektum a kiszolgálón létrehozott vagy elérhető RMO programozási objektum
P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContexttulajdonságához van rendelve.A Connect metódus megnyitja a kapcsolatot a kiszolgálóval. Ezt a metódust meg kell hívni, mielőtt meghívna minden olyan metódust, amely a kapcsolatot használó RMO-programozási objektumokon hozzáfér a kiszolgálóhoz.
Mivel az RMO és az SQL Server Management Objects (SMO) egyaránt a ServerConnection osztályt használja az SQL Serverhez való kapcsolatokhoz, ugyanezt a kapcsolatot az RMO és az SMO-objektumok is használhatják. További információ: Csatlakozás SQL Server-példányhoz.
A kapcsolat létrehozásához és a kiszolgálóra való sikeres bejelentkezéshez szükséges összes hitelesítési információ a ServerConnection objektumban található.
A Windows-hitelesítés az alapértelmezett. Az SQL Server-hitelesítés használatához LoginSecurehamis, Login és Password érvényes SQL Server-bejelentkezésre és jelszóra kell állítani. A biztonsági hitelesítő adatokat mindig biztonságosan kell tárolni és kezelni, és futásidőben kell megadni, amikor csak lehetséges.
Többszálas alkalmazások esetén minden szálban külön ServerConnection objektumot kell használni.
Az RMO-objektumok által használt aktív kiszolgálókapcsolatok bezárásához hívja meg a Disconnect objektum ServerConnection metódusát.
RMO-tulajdonságok beállítása
Az RMO programozási objektumok tulajdonságai a replikációs objektumok tulajdonságait képviselik a kiszolgálón. Amikor új replikációs objektumokat hoz létre a kiszolgálón, az RMO-tulajdonságok határozzák meg ezeket az objektumokat. Meglévő objektumok esetében az RMO-tulajdonságok a meglévő objektum tulajdonságait jelölik, amelyek csak írható vagy állítható tulajdonságok esetén módosíthatók. A tulajdonságok új objektumokon vagy meglévő objektumokon állíthatók be.
Új replikációs objektumok tulajdonságainak beállítása
Amikor új replikációs objektumot hoz létre a kiszolgálón, meg kell adnia az összes szükséges tulajdonságot, mielőtt meghívja az objektum Create metódusát. Az új replikációs objektum tulajdonságainak beállításáról további információt a Közzététel és terjesztés konfigurálásacímű témakörben talál.
Meglévő replikációs objektumok tulajdonságainak beállítása
A kiszolgálón található replikációs objektumok esetében az objektumtól függően az RMO támogatja a tulajdonságok egy részének vagy egészének módosítását. Csak írható vagy beállítható tulajdonságok módosíthatók. A tulajdonságok módosítása előtt vagy a Load vagy a M:Microsoft.SqlServer.Replication.ReplicationObject.LoadProperties metódust kell meghívni, hogy lekérje az aktuális tulajdonságokat a kiszolgálóról. A metódusok meghívása azt jelzi, hogy egy meglévő objektum módosul.
Az objektumtulajdonságok módosításakor az RMO alapértelmezés szerint a használt ServerConnection végrehajtási módjától függően véglegesíti ezeket a módosításokat a kiszolgálón. A P:Microsoft.SqlServer.Replication.ReplicationObject.IsExistingObject metódussal ellenőrizheti, hogy egy objektum létezik-e a kiszolgálón, mielőtt megkísérli lekérni vagy módosítani a tulajdonságait. A replikációs objektumok tulajdonságainak módosításáról további információt a Forgalmazó és közzétevő tulajdonságainak megtekintése és módosításacímű témakörben talál.
Jegyzet
Ha egy RMO-programozási objektum több RMO-ügyfele vagy több példánya is hozzáfér ugyanahhoz a replikációs objektumhoz a kiszolgálón, az RMO-objektum Frissítés metódusa meghívható a tulajdonságok frissítéséhez a kiszolgálón lévő objektum aktuális állapota alapján.
Tulajdonságmódosítások gyorsítótárazása
Ha a SqlExecutionModes tulajdonság úgy van beállítva, hogy CaptureSql az RMO által létrehozott összes Transact-SQL utasítás rögzítve legyen, hogy azokat manuálisan lehessen végrehajtani egyetlen kötegben az egyik végrehajtási módszer használatával. Az RMO lehetővé teszi a tulajdonságmódosítások gyorsítótárazását és véglegesítését egyetlen kötegben az objektum M:Microsoft.SqlServer.Replication.ReplicationObject.CommitPropertyChanges metódusával. A tulajdonságváltozások gyorsítótárazásához az objektum
Fontos
Bár a ServerConnection osztály támogatja az explicit tranzakciók deklarálását a tulajdonságok beállításakor, az ilyen tranzakciók megzavarhatják a belső replikációs tranzakciókat, nem várt eredményeket eredményezhetnek, és nem használhatók az RMO-val.
A TLS 1.2 támogatásának engedélyezése az RMO-összetevőkhöz
A Windows 2012-ben és az alacsonyabb verzióban futó RMO-összetevők TLS1.2-támogatása a frissítés KB 3140245telepítésével és a beállításkulcsok a cikkben említett létrehozásával engedélyezhető. Windows 2012 R2 és újabb verziókban csak a fenti cikkben említett beállításkulcsokat kell létrehozni.
Példa
Ez a példa a tulajdonságváltozások gyorsítótárazását mutatja be. A tranzakciós kiadvány attribútumainak módosításai gyorsítótárazva lesznek, amíg explicit módon el nem küldik őket a kiszolgálónak.
// 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();
}