Tünetek
Tegyük fel, hogy AlwaysOn rendelkezésre állási csoportot használ egy Microsoft SQL Server 2012- vagy SQL Server 2014-adatbázisban, és létezik egy nagyméretű nyitott aktív tranzakció, amely további naplóterületet igényel. Ha a naplófájl mérete az alábbi okok egyike miatt nem lehetséges, a tranzakció meghiúsul.
- További fájlterület hiánya
- A naplófájl úgy van konfigurálva, hogy ne növekedjen
- A naplófájl elérte a beállított maximális méretet
Ezenkívül az alábbihoz hasonló hibaüzenet is megjelenik:
Megjegyzés
Hiba: 9002, Súlyosság: 17, Állapot: 9.
A(z) "<adatbázisnév>" adatbázis tranzakciónaplója a "LOG_BACKUP" miatt megtelt.
A napló biztonsági mentésének futtatása után egy újabb 9002-es hibaüzenet jelenik meg:
Megjegyzés
Hiba: 9002, Súlyosság: 17, Állapot: 9.
A(z) "<adatbázisnév>" adatbázis tranzakciónaplója a "ACTIVE_TRANSACTION" miatt megtelt.
Újabb biztonsági mentés után egy újabb 9002-es hibaüzenet, amelyet egy 5901-es hibaüzenet követ:
Megjegyzés
Hiba: 9002, Súlyosság: 17, Állapot: 9.
A(z) "<adatbázisnév>" adatbázis tranzakciónaplója a "AVAILABILITY_REPLICA" miatt megtelt.
Megjegyzés
Nem sikerült ellenőrzőpont-rekordot írni az adatbázis-adatbázis <nevébe> , mert a naplóban kevés a hely. Kérje meg az adatbázis rendszergazdáját, hogy csonkolja a naplót, vagy szabadítson fel több helyet az adatbázis naplófájljainak.
Hiba: 5901, Súlyosság: 16, Állapot: 1.
Egy vagy több, a(z) "adatbázisnév>"< adatbázishoz tartozó helyreállítási egység nem tudott ellenőrzőpontot létrehozni. Ezt általában a rendszererőforrások – például lemez vagy memória – hiánya, vagy bizonyos esetekben adatbázis-sérülés okozza. A hiba részleteiért tanulmányozza a hibanapló korábbi bejegyzéseit.
Amikor a tranzakció visszaállítása során a rendszer ezt követően biztonsági másolatot készít az ellenőrzőpontról vagy a naplóról, az alábbi hibaüzenet jelenhet meg:
Megjegyzés
Msg 3052, Level 16, State 1, Line 4
A BIZTONSÁGI MENTÉSI NAPLÓ nem tudta naplózni az adatbázis<"adatbázisnév>" frissítéseit. Ezt követően biztonsági másolatot kell készíteni a naplóról, hogy a biztonsági mentési pont< az "LSN-azonosító 1"-ről >az<"LSN-azonosító 2"-re >kerüljön, miután a naplózásukhoz helyet szabadítottunk fel.
Amikor ilyen üzeneteket kap, a továbbiakban nem tud új tranzakciókat küldeni az adatbázisba, nem bővítheti a naplófájlt, illetve nem adhat hozzá újabb naplófájlt.
Megoldás
A hibát először az SQL Server következő összegző frissítésében javítottuk:
- 3. összegző frissítés az SQL Server 2014 SP1-hez
- 10-es összegző frissítés az SQL Server 2014-hez
- 8-as összegző frissítés az SQL Server 2012 SP2-höz
Javaslat: Telepítse az SQL Server legújabb összegző frissítését
Az SQL Server minden új összegző frissítése tartalmazza az összes gyorsjavítást és minden biztonsági javítást, amely az előző kumulatív frissítésben szerepelt. Javasoljuk, hogy töltse le és telepítse az SQL Server legújabb összegző frissítéseit:
- Az SQL Server 2014 SP1 legújabb összegző frissítése
- Az SQL Server 2014 legújabb összegző frissítése
- Az SQL Server 2012 SP2 legújabb összegző frissítése
Kerülő megoldás
Az alábbi kerülő megoldással csonkolhatja a naplókat, és folytathatja a tevékenységet.
Az egyes másodlagos replikák ellenőrzésével ellenőrizze, hogy a másodlagos replika last_hardened_lsn (lásd sys.dm_hadr_database_replica_states) egyezik-e az elsődleges replikával last_hardened_lsn. Ezt az alábbi lekérdezés futtatásával teheti meg, amely az elsődleges replikapéldányhoz kapcsolódik
SELECT ags.name as AGGroupName, ar.replica_server_name as InstanceName, hars.role_desc, db_name(drs.database_id)as DBName, drs.last_hardened_lsn, drs.log_send_queue_size, drs.synchronization_state_desc as SyncState, ar.availability_mode_desc as SyncMode, CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id FROM sys.dm_hadr_database_replica_states drs LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id LEFT JOIN sys.availability_groups ags ON ar.group_id = ags.group_id LEFT JOIN sys.dm_hadr_availability_replica_states hars ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id WHERE db_name(drs.database_id) = '<database name>'Az elsődleges replikán
- Távolítsa el az adatbázist a rendelkezésre állási csoportból.
- Adja hozzá ismét az adatbázist a rendelkezésre állási csoporthoz.
Minden másodlagos replikán
- Adja hozzá ismét az adatbázist a rendelkezésre állási csoporthoz.
Ha eltávolítja az adatbázist a rendelkezésre állási csoportból, az azonnal csonkolja a naplóit, és naplóterületet szabadít fel.
Ha az egyes másodlagos replikák last_hardened_lsn megegyezik az elsődleges replikával, és nem készül naplóbiztonsági másolat az adatbázisnak a rendelkezésre állási csoportból való eltávolítása és az adatbázis minden másodlagos példányon való újbóli hozzáadása során, a másodlagos replika hiba nélkül újból hozzá lesz adva, és nem kell visszaállítani a naplók biztonsági másolatait a másodlagos replikán.
Ha nincs aktuális másodlagos replika az elsődleges replikával, és el kell távolítania az adatbázist a rendelkezésre állási csoportból, mielőtt a másodlagos felzárkózhatna, előfordulhat, hogy a másodlagos replikának vissza kell állítania a napló biztonsági másolatait, hogy felzárkózzon, mielőtt újra hozzáadná a rendelkezésre állási csoporthoz, vagy el kell dobnia az adatbázist a másodlagos replikára, és újra fel kell töltenie egy teljes biztonsági másolattal és tranzakciónapló-adatbázis biztonsági másolattal.
Állapot
A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.