Megosztás a következőn keresztül:


A replikációkezelési objektumok fogalmai

A következőkre vonatkozik:SQL ServerFelü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

  1. Indítsa el a Visual Studiót.

  2. A Fájl menüben kattintson NewProject elemre. Megjelenik a Új projekt párbeszédpanel.

  3. A Projekttípusok párbeszédpanelen válassza Visual C#-projekteklehetőséget. A Sablonok panelen válassza Windows-alkalmazáslehetőséget.

  4. (Nem kötelező) A Névmezőbe írja be az új alkalmazás nevét.

  5. Kattintson OK gombra a Visual C# Windows-sablon betöltéséhez.

  6. A Project menüben válassza Hivatkozás hozzáadása elemet. Megjelenik a Hivatkozás hozzáadása párbeszédpanel.

  7. 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.

  8. (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.

  9. A Nézet menüben kattintson Kódelemre.

  10. 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

  1. Indítsa el a Visual Studiót.

  2. A Fájl menüben válassza Új projektlehetőséget. Megjelenik az Új projekt párbeszédpanel.

  3. A Projekttípusok panelen válassza Visual Basiclehetőséget. A Sablonok panelen válassza Windows-alkalmazáslehetőséget.

  4. (Nem kötelező) A Név mezőbe írja be az új alkalmazás nevét.

  5. Kattintson OK gombra a Visual Basic Windows-sablon betöltéséhez.

  6. 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.

  7. 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.

  8. (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.

  9. A Nézet menüben kattintson Kódelemre.

  10. 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.ConnectionContext tulajdonsá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 tulajdonságát igazkell beállítani. A tulajdonság RMO-ban történő gyorsítótárazásakor a ServerConnection objektum továbbra is szabályozza, hogy a rendszer mikor küldje el a módosításokat a kiszolgálónak. A replikációs objektumok tulajdonságmódosításainak gyorsítótárazá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.

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();
}