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:Azure SQL Managed Instance
A tranzakciós replikáció az Azure SQL Managed Instance és az SQL Server egyik funkciója, amely lehetővé teszi az adatok replikálását a felügyelt Azure SQL-példányban vagy SQL Server-példányban lévő táblákból a távoli adatbázisokra helyezett táblákba. Ez a funkció lehetővé teszi több tábla szinkronizálását különböző adatbázisokban.
Overview
Tranzakciós replikációval leküldheti a felügyelt Azure SQL-példányban végrehajtott módosításokat a következőre:
- SQL Server-adatbázis (helyszíni vagy Azure-beli virtuális gépen)
- Azure SQL Database-beli adatbázisba
- Adatbázis felügyelt Azure SQL-példányban
Note
A felügyelt Azure SQL-példány összes funkciójának használatához az SQL Server Management Studio (SSMS) és az SQL Server Data Tools (SSDT) legújabb verzióit kell használnia.
Components
A tranzakciós replikáció fő összetevői a Közzétevő, a Forgalmazó és az Előfizető, ahogy az alábbi képen látható:
| Role | Azure SQL Database | Azure SQL Managed Instance |
|---|---|---|
| Publisher | No | Yes |
| Distributor | No | Yes |
| Lekéréses előfizető | No | Yes |
| Előfizető leküldése | Yes | Yes |
A Publisher a frissítéseket a forgalmazónak küldve közzéteszi bizonyos táblákon (cikkeken) végrehajtott módosításokat. A közzétevő lehet felügyelt Azure SQL-példány vagy SQL Server-példány.
A Terjesztő összegyűjti a cikkek módosításait a Közzétevőtől, és osztja el azokat az Előfizetőknek. A terjesztő lehet felügyelt Azure SQL-példány vagy SQL Server-példány (bármilyen verzió, ha az egyenlő vagy magasabb a Publisher verziójánál).
Az Előfizető megkapja a Közzétevőn végrehajtott módosításokat. Az SQL Server-példányok és a felügyelt Azure SQL-példányok leküldéses és lekéréses előfizetők is lehetnek, bár a lekéréses előfizetés nem támogatott, ha a forgalmazó felügyelt Azure SQL-példány, és az előfizető nem. Az Azure SQL Database-ben lévő adatbázisok csak leküldéses előfizetők lehetnek.
A felügyelt Azure SQL-példány az SQL Server alábbi verzióiból támogathatja az előfizetői szerepkört:
- AZ SQL Server 2016 és újabb verziói
- SQL Server 2014 RTM CU10 (12.0.4427.24) vagy SP1 CU3 (12.0.2556.4)
- SQL Server 2012 SP2 CU8 (11.0.5634.1) vagy SP3 (11.0.6020.0) vagy SP4 (11.0.7001.0)
Note
Az SQL Server más olyan verziói esetében, amelyek nem támogatják az Objektumokon való közzétételt az Azure-ban, az adatok újbóli közzétételének módszerével áthelyezheti az adatokat az SQL Server újabb verzióiba.
Ha a replikációt egy régebbi verzióval próbálja konfigurálni, az hibát MSSQL_REPL20084 okozhat (a folyamat nem tudott csatlakozni az Előfizetőhöz), és MSSQL_REPL40532 (A bejelentkezés által kért kiszolgálónév <> nem nyitható meg. A bejelentkezés sikertelen volt).
A replikáció típusai
A replikációnak különböző típusai vannak:
| Replication | Azure SQL Database | Azure SQL Managed Instance |
|---|---|---|
| Standard tranzakciós | Igen (csak előfizetőként) | Yes |
| Snapshot | Igen (csak előfizetőként) | Yes |
| Replikáció egyesítése | No | No |
| Peer-to-peer | No | No |
| Bidirectional | No | Yes |
| Frissíthető előfizetések | No | No |
Támogatási mátrix
Az Azure SQL Managed Instance tranzakciós és pillanatkép-replikációs támogatási mátrixa ugyanaz, mint az SQL Server esetében:
| Publisher | Distributor | Subscriber |
|---|---|---|
| Azure SQL Kezelt PéldányAUTD | Azure SQL Kezelt PéldányAUTD | Azure SQL Database Azure SQL Kezelt PéldányAUTD Azure SQL Kezelt Példány2025 Azure SQL felügyelt példány2022 SQL Server 2022 (16.x) SQL Server 2019 (15.x) |
| Azure SQL Kezelt Példány2025 | Azure SQL Kezelt PéldányAUTD Azure SQL Kezelt Példány2025 |
Azure SQL Database Azure SQL Kezelt PéldányAUTD Azure SQL Kezelt Példány2025 Azure SQL felügyelt példány2022 SQL Server 2022 (16.x) SQL Server 2019 (15.x) |
| Azure SQL felügyelt példány2022 | Felügyelt Azure SQL-példányAUTDFelügyelt Azure SQL-példány2025 Azure SQL felügyelt példány2022 |
Azure SQL Database Azure SQL Kezelt PéldányAUTD Azure SQL felügyelt példány2022 SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) |
| SQL Server 2022 (16.x) | SQL Server 2025 (17.x) SQL Server 2022 (16.x) |
Azure SQL Database SQL-adatbázis a Microsoft Fabric1-ben Azure SQL Kezelt PéldányAUTD Azure SQL Kezelt Példány2025 Azure SQL felügyelt példány2022 SQL Server 2025 (17.x) SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) |
| SQL Server 2019 (15.x) | SQL Server 2025 (17.x) SQL Server 2022 (16.x) SQL Server 2019 (15.x) |
Azure SQL Database Azure SQL Kezelt PéldányAUTD Azure SQL Kezelt Példány2025 Azure SQL felügyelt példány2022 SQL Server 2025 (17.x) SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) |
| SQL Server 2017 (14.x) | SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) |
Azure SQL felügyelt példány2022 SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) |
| SQL Server 2016 (13.x) | SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) |
SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) SQL Server 2012 (11.x) |
| SQL Server 2014 (12.x) | SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) |
SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) SQL Server 2012 (11.x) SQL Server 2008 R2 (10.50.x) SQL Server 2008 (10.0.x) |
| SQL Server 2012 (11.x) | SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) SQL Server 2012 (11.x) |
SQL Server 2016 (13.x) SQL Server 2014 (12.x) SQL Server 2012 (11.x) SQL Server 2008 R2 (10.50.x) SQL Server 2008 (10.0.x) |
| SQL Server 2008 R2 (10.50.x) SQL Server 2008 (10.0.x) |
SQL Server 2022 (16.x) SQL Server 2019 (15.x) SQL Server 2017 (14.x) SQL Server 2016 (13.x) SQL Server 2014 (12.x) SQL Server 2012 (11.x) SQL Server 2008 R2 (10.50.x) SQL Server 2008 (10.0.x) |
SQL Server 2014 (12.x) SQL Server 2012 (11.x) SQL Server 2008 R2 (10.50.x) SQL Server 2008 (10.0.x) |
AUTD az Always-up-to-date frissítési szabályzattal konfigurált felügyelt Azure SQL-példányra vonatkozik.
A 2025 az SQL Server 2025 frissítési szabályzattal konfigurált felügyelt Azure SQL-példányra vonatkozik.
2022 Azokra a Felügyelt Azure SQL-példányokra vonatkozik, amelyeket a SQL Server 2022 frissítési szabályzatával konfiguráltak.
1 A Microsoft Fabricben az SQL Database támogatott konfigurációinak követelményei alapján alkalmazható.
Mikor érdemes használni?
A tranzakciós replikáció a következő esetekben hasznos:
- Tegye közzé az adatbázis egy vagy több táblájában végrehajtott módosításokat, és terjessze őket egy vagy több adatbázisba egy SQL Server-példányban vagy az Azure SQL Database-ben, amely feliratkozott a módosításokra.
- Több elosztott adatbázis szinkronizálási állapotban tartása.
- Az adatbázisok áttelepítése egy SQL Server-példányról vagy felügyelt Azure SQL-példányról egy másik adatbázisba a módosítások folyamatos közzétételével.
Adatszinkronizálás és tranzakciós replikáció összehasonlítása
| Category | adatszinkronizálás | Tranzakciós replikáció |
|---|---|---|
| Advantages | - Aktív-aktív támogatás – Kétirányú kapcsolat a helyszíni rendszerek és az Azure SQL-adatbázis között |
– Kisebb késés - Tranzakciós következetesség – Meglévő topológia újrafelhasználása a migrálás után |
| Disadvantages | - Nincs tranzakciós konzisztencia - Nagyobb teljesítményhatás |
– Nem lehet közzétenni az Azure SQL Database-ből - Magas karbantartási költség |
Gyakori konfigurációk
A közzétevőnek és a terjesztőnek általában a felhőben vagy a helyszínen kell lennie. A következő konfigurációk vannak támogatva:
Közzétevő helyi forgalmazóval felügyelt SQL-példányon
A közzétevő és a terjesztő egyetlen felügyelt SQL-példányon belül van konfigurálva, és a módosításokat egy másik felügyelt SQL-példányra, SQL Database-példányra vagy SQL Server-példányra terjeszti.
Közzétevő a távoli terjesztővel a SQL Managed Instance-en
Ebben a konfigurációban egy felügyelt SQL-példány olyan módosításokat tesz közzé egy másik felügyelt SQL-példányon elhelyezett forgalmazón, amely számos felügyelt SQL-példányt képes kiszolgálni, és a módosításokat egy vagy több célhoz osztja el az Azure SQL Database-ben, az Azure SQL Managed Instance-ben vagy az SQL Serveren.
A közzétevő és a terjesztő két felügyelt példányon van konfigurálva. Ez a konfiguráció néhány korlátozással jár:
- Mindkét felügyelt példány ugyanazon a virtuális hálózaton található.
- Mindkét felügyelt példány ugyanazon a helyen található.
Helyszíni közzétevő/terjesztő távoli előfizetővel
Az Azure SQL Database, mint előfizető.
Ebben a konfigurációban az Azure SQL Database-ben vagy az Azure SQL Managed Instance-ben található adatbázis előfizető. Ez a konfiguráció támogatja a helyszíni környezetből az Azure-ba való migrálást. Ha az előfizető adatbázis az Azure SQL Database-ben, leküldéses módban kell lennie.
Requirements
- Sql-hitelesítés használata a replikáció résztvevői közötti kapcsolathoz.
- Használj egy Azure Storage-fiók megosztást a replikáció által használt munkakönyvtárhoz.
- Nyissa meg a 445-ös TCP-kimenő portot az alhálózat biztonsági szabályaiban az Azure-fájlmegosztás eléréséhez.
- Nyissa meg a 1433-as kimenő TCP-portot, amikor a felügyelt SQL-példány a Közzétevő vagy Elosztó, és az Előfizető nem. Előfordulhat, hogy az SQL-managed NSG kimenő biztonsági szabályt is módosítania kell a(z)
allow_linkedserver_outboundpéldányhoz az 1433-as port cél szolgáltatás címkéjérevirtualnetwork-rőlinternet-re. - Helyezze a közzétevőt és a terjesztőt a felhőbe vagy mindkét helyszínre.
- Konfigurálja a VPN-társviszonyt a replikáció résztvevőinek virtuális hálózatai között, ha a virtuális hálózatok eltérőek.
Note
Ha a kimenő hálózati biztonsági csoport (NSG) 445-ös portja le van tiltva, 53-as hiba léphet fel egy Azure Storage-fájlhoz való csatlakozáskor. Ez abban az esetben fordul elő, ha a disztribútor egy Azure SQL Felügyelt Példány adatbázisa, és az előfizető helyszíni környezetben található. Frissítse a vNet NSG-t a probléma megoldásához.
Biztonság
TLS 1.3-támogatás
Az Azure SQL Managed Instance támogatja a TLS 1.3-at a felügyelt SQL-példányon való futtatásra konfigurált ügynökök által inicializált replikációs kapcsolatokhoz. Ez vonatkozik a két felügyelt SQL-példány közötti replikációs topológiára, valamint az SQL Server bármely verziójára, mint egy felügyelt SQL-példány közzétevőjének és forgalmazójának előfizetője.
Ha a TLS 1.3 használatával biztosítja a replikációs topológiában lévő példányok közötti kapcsolatokat, adjon meg 3 vagy 4 értéket az egyes replikációs ügynökök -EncryptionLevel paraméteréhez:
Egy érték kényszeríti 3 a TLS 1.3-kapcsolatokat a felügyelt SQL-példányokhoz, de nincs hatással az SQL Server-kapcsolatokra. Egy 4 érték kényszeríti a TLS 1.3-kapcsolatokat a felügyelt SQL-példányok között, valamint a felügyelt SQL-példány és az SQL Server közötti kapcsolatokban, és megköveteli, hogy telepítse a tanúsítványt az SQL Server-gazdagépre.
Bejelentkezés replAgentUser
Tranzakciós replikáció céljából a felügyelt SQL-példányok előre létrehozott bejelentkezési(oka)t kapnak a névvel replAgentUser. Ez a bejelentkezés a sysadmin kiszolgálói szerepkör tagja, és olyan replikációs ügynökök használják, amelyeknek csatlakozniuk kell egy felügyelt SQL-példányhoz, amely részt vesz a tranzakciós replikáció beállításában.
Ha a tranzakciós replikáció nincs használatban, a bejelentkezés replAgentUser letiltható. Később újra engedélyezhető, ha úgy dönt, hogy elkezdi használni a tranzakciós replikációt.
Limitations
A tranzakciós replikáció bizonyos korlátozásokkal rendelkezik, amelyek a felügyelt Azure SQL-példányra vonatkoznak. A jelen szakaszban további információt olvashat ezekről a korlátozásokról.
A pillanatképfájlok nem törlődnek az Azure Storage-fiókból
A felügyelt Azure SQL-példány felhasználó által konfigurált Azure Storage-fiókot használ a tranzakciós replikációhoz használt pillanatképfájlokhoz. A helyszíni környezetben lévő SQL Serverrel ellentétben az Azure SQL Managed Instance nem törli a pillanatképfájlokat az Azure Storage-fiókból. Ha már nincs szükség fájlokra, törölnie kell őket. Ez az Azure Storage-felületen, az Azure Portalon, a Microsoft Azure Storage Explorerben vagy parancssori ügyfeleken (Azure PowerShell vagy CLI) vagy az Azure Storage Management REST API-n keresztül végezhető el.
Íme egy példa arra, hogyan törölhet fájlokat, és hogyan törölheti az üres mappát.
az storage file delete-batch --source <file_path> --account-key <account_key> --account-name <account_name>
az storage directory delete --name <directory_name> --share-name <share_name> --account-key <account_key> --account-name <account_name>
Folyamatosan futó terjesztési ügynökök száma
A folyamatos futtatásra konfigurált terjesztési ügynökök száma legfeljebb 30 lehet felügyelt Azure SQL-példányon. Ahhoz, hogy több terjesztési ügynök legyen, igény szerint vagy meghatározott ütemezéssel kell futniuk. Az ütemezés napi gyakorisággal és előfordulással határozható meg 10 másodpercenként (vagy több alkalommal), így annak ellenére, hogy ez nem folyamatos, továbbra is rendelkezhet olyan terjesztővel, amely csak néhány másodperces késést eredményez. Ha nagy számú terjesztőre van szükség, ajánlott ütemezett és nem folyamatos konfigurációt használni.
Feladatátvételi csoportokkal
A feladatátvételi csoportban lévő példányokkal történő tranzakciós replikáció használata támogatott. Ha azonban a felügyelt SQL-példány feladatátvételi csoportba való hozzáadása előtt konfigurálja a replikációt, a replikáció szünetel a feladatátvételi csoport létrehozásakor, a replikációs figyelő pedig Replicated transactions are waiting for the next log backup or for mirroring partner to catch upállapotot jelenít meg. A replikáció a feladatátvételi csoport sikeres létrehozása után folytatódik.
Ha egy közzétevő vagy forgalmazó felügyelt SQL-példány feladatátvételi csoportban van, a felügyelt SQL-példány rendszergazdájának törölnie kell a régi elsődleges példány összes kiadványát, és újra kell konfigurálnia őket az új elsődlegesen a feladatátvétel után. Ebben a forgatókönyvben a következő tevékenységekre van szükség:
Ha vannak ilyenek, állítsa le az adatbázisban futó összes replikációs feladatot.
Az előfizetés metaadatainak elvetése a közzétevőből az alábbi szkript futtatásával a publisher-adatbázisban. Cserélje le a
<name of publication>és a<name of subscriber>értékeket.EXEC sp_dropsubscription @publication = '<name of publication>', @article = 'all', @subscriber = '<name of subscriber>'Az előfizető metaadatainak eltávolítása. Futtassa a következő szkriptet az előfizető felügyelt SQL-példány előfizetési adatbázisán. Cserélje le az
<full DNS of publisher>értéket. Példáulexample.ac2d23028af5.database.windows.net:EXEC sp_subscription_cleanup @publisher = N'<full DNS of publisher>', @publisher_db = N'<publisher database>', @publication = N'<name of publication>';Az összes replikációs objektum kényszerített elvetése a közzétevőből a következő szkript futtatásával a közzétett adatbázisban:
EXEC sp_removedbreplication;A régi disztribútort kényszerítetten eltávolítsa az eredeti elsődleges SQL-kezelőpéldányból (ha vissza kell térni egy régi elsődleges példányhoz, amely korábban disztribútorral rendelkezett). Futtassa a következő szkriptet az
masteradatbázison a régi, felügyelt SQL-disztribútor példányban:EXEC sp_dropdistributor 1, 1;
Ha egy előfizető felügyelt SQL-példány feladatátvételi csoportban van, a kiadványt úgy kell konfigurálni, hogy csatlakozzon az előfizető felügyelt SQL-példány feladatátvételi csoport figyelővégpontához. Feladatátvétel esetén a felügyelt SQL-példány rendszergazdájának ezt követő művelete a feladatátvétel típusától függ:
- Adatvesztés nélküli feladatátvétel esetén a replikáció a feladatátvétel után is működni fog.
- Adatvesztéssel járó feladatátvétel esetén a replikáció is működik. Újra replikálja az elveszett módosításokat.
- Adatvesztéssel járó feladatátvétel esetén, de az adatvesztés a terjesztési adatbázis megőrzési időszakán kívül esik, a felügyelt SQL-példány rendszergazdájának újra kell létrehoznia az előfizetési adatbázist.
Gyakori problémák megoldása
Tranzakciónapló és tranzakciós replikáció
A szokásos körülmények között a tranzakciónapló az adatbázisban lévő adatok változásainak rögzítésére szolgál. A módosítások a tranzakciónaplóban vannak rögzítve, és ez teszi a napló tárterület-fogyasztásának növekedését. Van egy automatikus folyamat is, amely lehetővé teszi a tranzakciónapló biztonságos csonkolását, és ez a folyamat csökkenti a naplóhoz használt tárterületet. A tranzakciós replikáció közzétételének konfigurálásakor a tranzakciónapló csonkolása addig lesz megakadályozva, amíg a napló módosításait a naplóolvasó feladat nem dolgozza fel. Bizonyos körülmények között a tranzakciónapló feldolgozása hatékonyan le van tiltva, és ez az állapot a tranzakciónapló számára fenntartott teljes tárterület feltöltéséhez vezethet. Ha nincs szabad hely a tranzakciónaplóhoz, és nincs több hely a tranzakciónapló növekedéséhez, teljes tranzakciónaplóval rendelkezünk. Ebben az állapotban az adatbázis már nem tudja feldolgozni az írási műveleteket, és gyakorlatilag csak olvasható adatbázissá válik.
Letiltott naplóolvasó ügynök
Előfordulhat, hogy a tranzakciós replikációs kiadvány egy adatbázishoz van konfigurálva, de a naplóolvasó ügynök nincs konfigurálva a futtatásra. Ebben az esetben a módosítások a tranzakciónaplóban halmozódnak fel, és nem dolgozzák fel őket. Ez a tranzakciós napló folyamatos növekedéséhez, végül pedig a teljes tranzakciónaplóhoz vezet. A felhasználónak meg kell győződnie arról, hogy a naplóolvasói feladat létezik és aktív. Másik lehetőségként letilthatja a tranzakciós replikációt, ha nincs rá szükség.
Naplóolvasó ügynök lekérdezési időtúllépései
Előfordulhat, hogy a naplóolvasói feladat nem tud hatékonyan haladni az ismétlődő lekérdezési időtúllépések miatt. A lekérdezési időtúllépések javításának egyik módja a naplóolvasó ügynökfeladat lekérdezési időtúllépési beállításának növelése.
A naplóolvasói feladat lekérdezési időtúllépésének növelése az SSMS használatával végezhető el. Az objektumkezelőben az SQL Server Agent alatt keresse meg a módosítani kívánt feladatot. Először állítsa le, majd nyissa meg annak a tulajdonságait. Keresse meg step 2 és szerkessze. Fűzze hozzá a parancs értékét a következővel -QueryTimeout <timeout_in_seconds>: . A lekérdezés időtúllépési értékének próbálja meg beállítani a 21600 értéket vagy magasabbat. Végül ismét indítsa el a munkát.
A naplótároló mérete elérte a 2 TB maximális korlátot
Ha a tranzakciónapló tárterületének mérete eléri a maximális korlátot, amely 2 TB, a napló fizikailag nem nőhet ennél többre. Ebben az esetben az egyetlen elérhető kockázatcsökkentés az összes feldolgozandó tranzakció megjelölése, amely lehetővé teszi a tranzakciónapló csonkítását. Ez gyakorlatilag azt jelenti, hogy a naplóban lévő fennmaradó tranzakciók nem lesznek replikálva, és újra kell inicializálnia a replikációt.
Note
A kockázatcsökkentés elvégzése után újra kell inicializálnia a replikációt, ami a teljes adatkészlet ismételt replikálását jelenti. Ez az adatművelet mérete, és a replikálandó adatok mennyiségétől függően hosszú ideig is futhat.
A kockázatcsökkentés végrehajtásához először le kell állítania a naplóolvasó ügynököt a forgalmazón. Ezután futtassa a sp_repldone tárolt eljárást a közzétevő adatbázisában, a reset jelzőt 1 értékre állítva a tranzakciónapló csonkolásának engedélyezéséhez. Ennek a parancsnak így kell kinéznie EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1. Ezt követően újra kell létrehoznia a replikációt.
Következő lépések
A tranzakciós replikáció konfigurálásával kapcsolatos további információkért tekintse meg az alábbi oktatóanyagokat:
- Konfigurálja a felügyelt SQL-példány közzétevője és előfizetője közötti replikációt.
- Konfigurálja a replikációt egy felügyelt SQL-példány közzétevője, a felügyelt SQL-példány forgalmazója és az SQL Server-előfizető között.
- Kiadvány létrehozása.
-
Hozzon létre egy leküldéses előfizetést úgy,
N'azuresqldbdns.database.windows.nethogy a kiszolgáló nevét használja előfizetőként (példáulAdventureworks) és az Adatbázist az Azure SQL Database-ben céladatbázisként (például).