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


Replikációs előfizetők és Always On rendelkezésre állási csoportok (SQL Server)

A következőkre vonatkozik:SQL Server

Ha egy Always On rendelkezésre állási csoport (AG) meghibásodik, amely egy replikációs előfizető adatbázist tartalmaz, a replikációs előfizetés meghiúsulhat. A tranzakciós replikáció push-előfizetői esetében a terjesztési ügynök átállás után is automatikusan folytatja a replikálást, ha az előfizetés az AG-felügyeleti nevével lett létrehozva. A tranzakciós replikáció lekéréses előfizetői esetében a terjesztési ügynök a feladatátvétel után is automatikusan replikálódik, ha az előfizetés az AG-figyelő nevével lett létrehozva, és az eredeti előfizetői kiszolgáló működik. Ennek az az oka, hogy a terjesztési ügynök feladatai csak az eredeti előfizetőn (az AG elsődleges replikáján) jönnek létre. Az előfizetők egyesítése esetén a replikációs rendszergazdának manuálisan újra kell konfigurálnia az előfizetőt az előfizetés újrakonfigurálásával.

Mi van támogatva?

Az SQL Server-replikáció támogatja a közzétevő automatikus átváltását és a tranzakciós előfizetők automatikus átváltását. Az előfizetők egyesítése egy AG része lehet. A feladatátvételt követően azonban manuális műveletekre van szükség az új előfizető konfigurálásához. Az AG-k nem kombinálhatók WebSync- és SQL Server Compact-forgatókönyvekkel.

Tranzakciós előfizetés létrehozása rendelkezésre állási csoportban

Tranzakciós replikáció esetén az alábbi lépésekkel konfigurálhatja és feladatátvételt végezhet egy előfizetői AG-vel:

  1. Az előfizetés létrehozása előtt adja hozzá az előfizetői adatbázist a megfelelő AG-hez.

  2. Adja hozzá az előfizető AG-figyelőjét csatolt kiszolgálóként az AG összes csomópontjára. Ez a lépés biztosítja, hogy minden lehetséges átvételi partner tisztában legyen a hallgatóval, és csatlakozni tudjon hozzá.

  3. Használja a tranzakciós replikáció leküldéses előfizetésének létrehozása szakaszban található szkriptet, és hozza létre az előfizetést az előfizető AG-figyelőjének nevét használva. A feladatátvétel után a figyelő neve mindig érvényes marad, míg az előfizető tényleges kiszolgálóneve attól függ, hogy melyik csomópont lett az új elsődleges.

    Megjegyzés:

    Az előfizetés létrehozásához Transact-SQL szkriptet kell használnia. A Management Studio nem használható.

  4. Lekéréses előfizetés létrehozása:

    1. A tranzakciós replikáció lekéréses előfizetésének létrehozása szakaszban található mintaszkript használatával hozza létre az előfizetést az előfizető AG-figyelőjének nevével.

    2. Feladatátvétel után hozza létre a terjesztési ügynök feladatát az új elsődleges replikán a sp_addpullsubscription_agent tárolt eljárás használatával.

Amikor lekéréses előfizetést hoz létre az előfizetési adatbázissal egy AG-ben, minden feladatátvétel után le kell tiltania a terjesztési ügynök feladatátvételt a régi elsődleges replikán, és engedélyeznie kell a feladatot az új elsődleges replikán.

Tranzakciós replikációs push előfizetés létrehozása

-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO

EXEC sp_addsubscription @publication = N'<publication name>',
    @subscriber = N'<AG listener name>',
    @destination_db = N'<subscriber database name>',
    @subscription_type = N'Push',
    @sync_type = N'automatic',
    @article = N'all',
    @update_mode = N'read only',
    @subscriber_type = 0;
GO

EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
    @subscriber = N'<AG listener name>',
    @subscriber_db = N'<subscriber database name>',
    @job_login = NULL,
    @job_password = NULL,
    @subscriber_security_mode = 1;
GO

Tranzakciós replikációs lekéréses előfizetés létrehozása

-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO

EXEC sp_addpullsubscription @publisher = N'<publisher name>',
    @publisher_db = N'<publisher database name>',
    @publication = N'<publication name>',
    @subscription_type = N'pull';
GO

EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
    @subscriber = N'<AG listener name or alias>',
    @distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
    @publisher_db = N'<publisher database name>',
    @publication = N'<publication name>',
    @job_login = NULL,
    @job_password = NULL,
    @subscriber_security_mode = 1;
GO

Rendelkezésre állási csoport figyelőjének követelménye

Amikor futtatja az sp_addpullsubscription_agent parancsot egy AG részét képező előfizetőhöz, a @subscriber paraméter értékét AG-figyelőnévként kell megadnia a tárolt eljárásnak. Ha az SQL Server 2016 (13.x) és korábbi verzióit vagy az SQL Server 2017-et (14.x) a CU 16 előtt futtatja, a tárolt eljárás nem hivatkozik az AG-figyelő nevére. Az előfizetést azzal az előfizetői kiszolgálónévvel hozza létre, amelyen a parancs végrehajtása történik. A probléma megoldásához manuálisan frissítse a @subscriberreplikációs terjesztési ügynök paraméterét az AG-figyelő névértékével.

Ha az előfizető AG-figyelő nem alapértelmezett portot használ, a paraméterben az AG-figyelő nevének @subscriber részeként megadott portszám nem támogatott Windows rendszeren. Áthidaló megoldásként létrehozhat aliast a figyelőhöz és a porthoz a közzétevő, a terjesztő és az előfizetői kiszolgálón az Aliasok (SQL Server Configuration Manager) vagy az SQL Server ügyfélhálózati segédprogramja (cliconfg) használatával az SQL Server 2022 -hez (16.x) és újabb verziókhoz, és átadhatja az @subscriber aliast paraméterértékként.

Folytassa az összevonási ügynököket, miután az előfizető rendelkezésre állási csoportjának feladatátvétel történt.

Az egyesítési replikációhoz a replikációs rendszergazdának manuálisan újra kell konfigurálnia az előfizetőt az alábbi lépésekkel:

  1. Hajtsa végre sp_subscription_cleanup az előfizető régi előfizetésének eltávolítását. Hajtsa végre ezt a műveletet az új elsődleges replikán (amely korábban a másodlagos replika volt).

  2. Hozza létre újra az előfizetést egy új előfizetés létrehozásával, egy új pillanatfelvétellel kezdve.

Megjegyzés:

Ez a folyamat kényelmetlen az egyesítési replikáció előfizetői számára. Az egyesítési replikáció fő forgatókönyve azonban a kapcsolat nélküli felhasználók (asztali számítógépek, laptopok, kézi eszközök), amelyek nem használnak AG-ket az előfizetőn.