Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
A replikációs hibák hibaelhárítása frusztráló lehet anélkül, hogy alapvető ismereteket kellene tudnia a tranzakciós replikáció működéséről. A kiadvány létrehozásának első lépése, hogy a Pillanatkép-ügynök létrehozza a pillanatképet, és menti azt a pillanatkép mappába. Ezután a terjesztési ügynök alkalmazza a pillanatképet az előfizetőre.
Ez a folyamat létrehozza a kiadványt, és szinkronizálási állapotba helyezi. A szinkronizálás három fázisban működik:
A tranzakciók replikált objektumokon történnek, és a tranzakciónaplóban "replikációra" vannak jelölve.
A Naplóolvasó ügynök megvizsgálja a tranzakciónaplót, és megkeresi a "replikációra" megjelölt tranzakciókat. A rendszer ezután menti ezeket a tranzakciókat a terjesztési adatbázisba.
A terjesztési ügynök az olvasószál használatával megvizsgálja a terjesztési adatbázist. Ezután az írószál használatával ez az ügynök csatlakozik az előfizetőhöz, hogy alkalmazza ezeket a módosításokat az előfizetőre.
A folyamat bármely lépésében hibák léphetnek fel. Ezeknek a hibáknak a megkeresése a szinkronizálási problémák elhárításának legnagyobb kihívást jelentheti. Szerencsére a Replikációfigyelő használata megkönnyíti ezt a folyamatot.
Megjegyzés:
Ennek a hibaelhárítási útmutatónak a célja a hibaelhárítási módszertan elsajátítása. Nem az adott hiba megoldására szolgál, hanem általános útmutatást nyújt a replikációval kapcsolatos hibák megtalálásához. Néhány konkrét példát is megadunk, de a megoldásuk a környezettől függően változhat. A példahibák az „két teljesen csatlakoztatott kiszolgáló közötti replikáció konfigurálása (tranzakció-alapú)” oktatóanyagon alapulnak.
Hibaelhárítási módszertan
Felteendő kérdések
- A szinkronizálási folyamat mely pontjánál sikertelen a replikáció?
- Melyik ügynök tapasztal hibát?
- Mikor működött utoljára sikeresen a replikáció? Azóta változott valami?
Teendők
A Replikációfigyelővel azonosíthatja, hogy a replikáció melyik ponton találkozik a hibával (melyik ügynökkel?):
- Ha a Publisher–Forgalmazó szakaszban hibák történnek, a hiba a Naplóolvasó ügynökkel kapcsolatos.
- Ha a Terjesztő–Előfizető szakaszban hibák jelentkeznek, a probléma a terjesztési ügynökkel kapcsolatos.
A hiba részleteinek azonosításához tekintse át az ügynök feladatelőzményeit a Feladattevékenység-figyelőben. Ha a feladatelőzmények nem mutatnak elég adatot, engedélyezheti az adott ügynök részletes naplózását .
Próbálja meg meghatározni a hiba megoldását.
Hibák keresése a Pillanatkép-ügynökkel
A Pillanatkép-ügynök létrehozza a pillanatképet, és a megadott pillanatképmappába írja.
A Pillanatkép-ügynök állapotának megtekintése:
Az Object Explorerben bontsa ki a Helyi közzététel csomópontot a Replikáció területen.
Kattintson a jobb gombbal a kiadványa AdvWorksProductTrans>Pillanatkép-ügynök állapotának megtekintése lehetőségére.
Ha hiba jelenik meg a Pillanatkép-ügynök állapotában, további részleteket a Pillanatkép-ügynök feladatelőzményeiben talál:
Bontsa ki az SQL Server-ügynököt az Object Explorerben, és nyissa meg a Feladattevékenység-figyelőt.
Rendezze kategória szerint, és azonosítsa a pillanatkép-ügynököt a REPL-Snapshot kategóriában.
Kattintson a jobb gombbal a Pillanatkép-ügynökre, majd válassza a Nézetelőzmények lehetőséget.
A Pillanatkép-ügynök előzményei között válassza ki a megfelelő naplóbejegyzést. Ez általában egy vagy két sor a hibát jelző bejegyzés előtt . (A piros X hibát jelez.) Tekintse át az üzenet szövegét a naplók alatti mezőben:
The replication agent had encountered an exception. Exception Message: Access to path '\\node1\repldata.....' is denied.
Ha a Windows-engedélyek nincsenek megfelelően konfigurálva a pillanatképmappához, a Pillanatkép-ügynök "Hozzáférés megtagadva" hibaüzenet jelenik meg. Ellenőriznie kell a pillanatképet tároló mappára vonatkozó engedélyeket, és győződjön meg arról, hogy a Pillanatkép-ügynök futtatásához használt fiók rendelkezik a megosztáshoz való hozzáféréshez szükséges engedélyekkel.
Hibák keresése a Naplóolvasó ügynökkel
A Naplóolvasó ügynök csatlakozik a közzétevő adatbázisához, és megvizsgálja a tranzakciónaplót a "replikációra" megjelölt tranzakciók esetében. Ezután hozzáadja ezeket a tranzakciókat a terjesztési adatbázishoz.
Csatlakozzon a közzétevőhöz az SQL Server Management Studióban. Bontsa ki a kiszolgálócsomópontot, kattintson a jobb gombbal a Replikáció mappára , majd válassza a Replikációfigyelő indítása parancsot:
Megnyílik a Replikációfigyelő:
A piros X azt jelzi, hogy a kiadvány nem szinkronizálódik. Bontsa ki a saját közzétevőket a bal oldalon, majd bontsa ki a megfelelő közzétevő kiszolgálót.
Válassza ki a bal oldalon az AdvWorksProductTrans kiadványt, majd keresse meg a piros X-et az egyik lapon a probléma helyének azonosításához. Ebben az esetben a piros X az Ügynökök lapon található, ezért az egyik ügynök hibát tapasztal:
Válassza az Ügynökök lapot annak azonosításához, hogy melyik ügynökhöz tartozik a hiba:
Ez a nézet két ügynököt jelenít meg, a Pillanatkép-ügynököt és a Naplóolvasó ügynököt. Az, amelyik hibával találkozik, piros X-szel van ellátva. Ebben az esetben ez a Log Reader Agent.
Kattintson duplán arra a sorra, amelyben a hiba jelentése van, hogy megnyissa a Naplóolvasó Ügynök előzményeit. Ez az előzmények további információt nyújtanak a hibáról:
Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'. The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'. Status: 0, code: 15517, text: 'Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.'. Status: 0, code: 22037, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'.A hiba általában akkor fordul elő, ha a közzétevő adatbázis tulajdonosa nincs megfelelően beállítva. Ez az adatbázis visszaállításakor fordulhat elő. Ellenőrzés:
Nyissa ki az Adatbázisok elemet az Objektum-kutatóban.
Kattintson a jobb gombbal az AdventureWorks2025>tulajdonságai elemre.
Ellenőrizze, hogy létezik-e tulajdonos a Fájlok lapon. Ha ez a mező üres, ez a probléma valószínű oka.
Ha a tulajdonos üres a Fájlok lapon, nyisson meg egy Új lekérdezés ablakot az
AdventureWorks2025adatbázis környezetében. Futtassa a következő T-SQL-kódot:-- set the owner of the database to 'sa' or a specific user account, without the brackets. EXECUTE sp_changedbowner '<useraccount>'; -- example for sa: exec sp_changedbowner 'sa' -- example for user account: exec sp_changedbowner 'sqlrepro\administrator'Előfordulhat, hogy újra kell indítania a Naplóolvasó ügynököt:
Bontsa ki az SQL Server-ügynök csomópontot az Object Explorerben, és nyissa meg a Feladattevékenység-figyelőt.
Rendezés kategória szerint, és a Naplóolvasó ügynök azonosítása a REPL-LogReader kategória szerint.
Kattintson a jobb egérgombbal a Naplóolvasó ügynök munkára, és válassza a Feladat indítása lépésként lehetőséget.
Ellenőrizze, hogy a kiadvány szinkronizálva van-e a Replikációfigyelő ismételt megnyitásával. Ha még nincs megnyitva, megtalálhatja a Replikációt az Object Explorerben a jobb gombbal kattintva.
Válassza ki az AdvWorksProductTrans kiadványt, válassza az Ügynökök lapot, majd kattintson duplán a Naplóolvasó ügynökre az ügynök előzményeinek megnyitásához. Most már látnia kell, hogy a Naplóolvasó ügynök fut, és vagy parancsokat replikál, vagy "nincs replikált tranzakció":
Hibák keresése a terjesztési ügynökkel
A terjesztési ügynök megkeresi az adatokat a terjesztési adatbázisban, majd alkalmazza azokat az előfizetőre.
Csatlakozzon a közzétevőhöz az SQL Server Management Studióban. Bontsa ki a kiszolgálócsomópontot, kattintson a jobb gombbal a Replikáció mappára , majd válassza a Replikációfigyelő indítása parancsot.
A Replikációfigyelőben válassza az AdvWorksProductTrans kiadványt, majd a Minden előfizetés lapot. Kattintson a jobb gombbal az előfizetésre, és válassza a Részletek megtekintése lehetőséget:
Megnyílik a Terjesztő előfizetői előzményekhez párbeszédpanel, amely tisztázza, hogy az ügynök milyen hibába ütközik.
Error messages: Agent 'NODE1\SQL2016-AdventureWorks2022-AdvWorksProductTrans-NODE2\SQL2016-7' is retrying after an error. 89 retries attempted. See agent job history in the Jobs folder for more details.A hiba azt jelzi, hogy a terjesztési ügynök újra próbálkozik. További információkért tekintse meg a terjesztési ügynök feladatelőzményeit:
Bontsa ki az SQL Server-ügynököt az Object Explorer >feladattevékenység-figyelőjében.
A feladatok rendezése kategória szerint.
Azonosítsa a terjesztési ügynököt a REPL-Distribution kategória alapján. Kattintson a jobb gombbal az ügynökre, és válassza a Nézetelőzmények lehetőséget.
Válasszon ki egy hibabejegyzést, és tekintse meg a hibaszöveget az ablak alján:
Message: Unable to start execution of step 2 (reason: Error authenticating proxy NODE1\repl_distribution, system error: The user name or password is incorrect.)Ez a hiba azt jelzi, hogy a terjesztési ügynök által használt jelszó helytelen. A probléma megoldása:
Bontsa ki a replikációs csomópontot az Object Explorerben.
Kattintson a jobb gombbal az előfizetés >tulajdonságaira.
Válassza ki a ügynökfolyamat-fiók melletti kivonatjelet (...), és módosítsa a jelszót.
Ellenőrizze újra a Replikációfigyelőt, ha a jobb gombbal a Replikáció elemre kattint az Object Explorerben. A Minden előfizetés alatt lévő piros X azt jelzi, hogy a terjesztési ügynök továbbra is hibát tapasztal.
Nyissa meg a Terjesztési előzményeket, ha a jobb gombbal az előfizetésre kattint a Replikációfigyelő>nézet részletei között. Itt a hiba most már más:
Connecting to Subscriber 'NODE2\SQL2016' Agent message code 20084. The process could not connect to Subscriber 'NODE2\SQL2016'. Number: 18456 Message: Login failed for user 'NODE2\repl_distribution'.Ez a hiba azt jelzi, hogy a terjesztési ügynök nem tudott csatlakozni az előfizetőhöz, mert a NODE2 felhasználói\repl_distribution nem sikerült a bejelentkezés. A további vizsgálathoz csatlakozzon az előfizetőhöz, és nyissa meg az aktuális SQL Server hibanaplót az Object Explorer Felügyeleti csomópontja alatt:
Ha ezt a hibát látja, a bejelentkezés hiányzik az előfizetőn. A hiba elhárításához tekintse meg a replikáció biztonsági szerepköreinek követelményeit.
A bejelentkezési hiba megoldása után ellenőrizze újra a Replikációfigyelőt. Ha az összes problémát megoldották, a Kiadvány neve mellett egy zöld nyíl jelenik meg, és az Összes előfizetés alatt a Futó állapot látható.
A sikeres működés ellenőrzéséhez kattintson a jobb gombbal az előfizetésre, hogy újra megnyissa a Distributor To Subscriber előzményeket. Ha először futtatja a Terjesztési Ügynököt, látni fogja, hogy a pillanatképet tömegesen átmásolták az előfizető rendszerére.
Hibák keresése a Merge Agent segítségével
Az egyesítési ügynök sok időt vehet igénybe a módosítások replikálásához. Annak megállapításához, hogy az egyesítési replikáció szinkronizálási folyamatának melyik lépése a legtöbb időt vesz igénybe, használja a 101-es nyomkövetési jelzőt és az egyesítési ügynök naplózását. Ehhez használja a következő paramétereket az egyesítési ügynök paramétereihez, majd indítsa újra az ügynököt:
-T 101
-output
-outputverboselevel
Megjegyzés:
Ha statisztikákat kell írnia a <distribution-server>..msmerge_history táblába, használja a 102-es nyomkövetési zászlót.
Az egyesítési ügynök mintakimenete az egyesítési replikáció szinkronizálásának befejezése után a következő:
**************************************************************
CONNECTION TIMES --> time took to establish the connection to the servers. Publisher (all connections) 156 msec Subscriber (all connections) 32 msec Distributor 93 msec
**************************************************************
UPLOAD COUNTERS --> upload phase (changes from the Sub to the Pub) stats MakeGeneration Time = 343 msec. InsertGenHistory Time = 31 msec. UpdateGenHistory Time = 0 msec. ProxiedMetadata Time = 0 msec.
**************************************************************
DOWNLOAD COUNTERS --> download phase (changes from the Pub to the Sub) stats MakeGeneration Time = 219 msec. InsertGenHistory Time = 0 msec. UpdateGenHistory Time = 0 msec.
**************************************************************
RETENTION-BASED CLEANUP STATISTICS --> sp_mergemetadataretentioncleanup proc stats Publisher: Cleanup Time 281 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_tombstone rows cleaned up 0 Subscriber: Cleanup Time 187 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_rowtrack rows cleaned up 0 MSmerge_tombstone rows cleaned up 0
**************************************************************
RETRY STATISTICS Retry Time (Upload) 0 msec. Retry Time (Download) 0 msec. Total changes retried 0 Number of Iterations through rows needing retry 0 Total number of changes that failed despite retry 0
**************************************************************
PROXY METADATA QUEUE COUNTERS Queue Full: Number of Waits: 0, Total Wait Time: 0 msec
**************************************************************
Distributor-side History Logging Time = 219 msec. Number of Distributor-side History Messages Logged = 11 Subscriber-side History Logging Time = 295 msec. Number of Subscriber-side History Messages Logged = 11
**************************************************************
2013-05-28 17:24:11.820 OLE DB Subscriber '<SQL Server name>\sql2008r2': DBCC SQLPERF (NETSTATS) 2013-05-28 17:24:11.822 OLE DB Publisher '<SQL Server name>\SQL2008R2': DBCC SQLPERF (NETSTATS) 2013-05-28 17:24:11.824 OLE DB Distributor '<SQL Server name>\SQL2008R2': DBCC SQLPERF (NETSTATS) NETWORK STATISTICS Server Reads Writes Bytes Read Bytes Written Publisher 74 74 19112 37526 Subscriber 73 73 19032 36931 Distributor 75 75 19192 38121
**************************************************************
NETWORK STATUS Network Connection: The computer has one or more LAN cards that are active. Network link speed: Destination Incoming Outgoing Publisher Unreachable Unreachable Subscriber Unreachable Unreachable Distributor Unreachable Unreachable
**************************************************************
Részletes naplózás engedélyezése bármelyik ügynöknél
Részletes naplózással részletesebb információkat kaphat a replikációs topológia bármely ügynökével kapcsolatos hibákról. A lépések minden ügynök esetében megegyeznek. Csak győződjön meg arról, hogy a feladattevékenység-figyelőben a megfelelő ügynököt választja ki.
Megjegyzés:
Az ügynökök lehetnek a közzétevő vagy az előfizető oldalán, attól függően, hogy lekéréses vagy leküldéses előfizetésről van-e szó. Ha az ügynök nem érhető el a vizsgált kiszolgálón, ellenőrizze a másik kiszolgálót.
Döntse el, hogy hová szeretné menteni a részletes naplózást, és győződjön meg arról, hogy a mappa létezik. Ez a példa a c:\temp függvényt használja.
Bontsa ki az SQL Server-ügynök csomópontot az Object Explorerben, és nyissa meg a Feladattevékenység-figyelőt.
Rendezés kategória szerint, és a fontos ügynök azonosítása. Ez a példa a Naplóolvasó ügynököt használja. Kattintson a jobb gombbal a kívánt ügynökre, majd >.
Válassza a Lépések lapot, majd jelölje ki az Ügynök futtatása lépést. Válassza a Szerkesztés lehetőséget.
A Parancsmezőben kezdjen el egy új sort, írja be a következő szöveget, és válassza az OK gombot:
-Output C:\Temp\OUTPUTFILE.txt -Outputverboselevel 3A hely és a részletességi szint a beállításoknak megfelelően módosítható.
Ha részletes kimeneti paramétert ad hozzá, az alábbi problémák miatt az ügynök meghibásodhat, vagy hiányzik a fájlkimeneti fájl:
Van egy formázási probléma, amely miatt a kötőjel kötőjel lett.
A hely nem létezik a lemezen, vagy az ügynököt futtató fiók nem rendelkezik engedéllyel a megadott helyre való íráshoz.
Hiányzik egy szóköz az utolsó paraméter és a
-Outputparaméter között.Az ügynökök különböző szintű bőbeszédűséget támogatnak. Ha engedélyezi a részletes naplózást, de az ügynök nem indul el, próbálja meg 1-rel csökkenteni a megadott részletességi szintet.
Indítsa újra a Naplóolvasó ügynököt, kattintson jobb gombbal az ügynök >'Feladat leállítása lépésnél' opciójára. Frissítés az eszköztár Frissítés ikonjának kiválasztásával. Kattintson a jobb gombbal az ügynök >feladatának indítására az adott lépésnél.
Tekintse át a lemez kimenetét.
A részletes naplózás letiltásához kövesse az előző lépéseket a korábban hozzáadott teljes
-Outputsor eltávolításához.
Kapcsolódó tartalom
Segítség kérése
- Ötletek az SQL-hez: Javaslatai vannak az SQL Server fejlesztésére?
- Microsoft Q &A (SQL Server)
- DBA Stack Exchange (sql-server címke): Sql Serverrel kapcsolatos kérdések
- Stack Overflow (tag sql-server): Válaszok az SQL fejlesztési kérdéseire
- Microsoft SQL Server licencfeltételek és információk
- Támogatási lehetőségek üzleti felhasználók számára
- További SQL Server-súgó és visszajelzés
Közreműködés az SQL dokumentációjában
Tudta, hogy saját maga szerkesztheti az SQL-tartalmakat? Ha így tesz, nem csak a dokumentáció fejlesztésében segít, hanem az oldal közreműködőjeként is jóváírást kap.
További információ: Microsoft Learn-dokumentáció szerkesztése.