KB3095156 – JAVÍTÁS: 9002-es és 3052-es hibakód jelenik meg, amikor naplófájlt próbál hozzáadni vagy biztonsági másolatot készíteni a SQL Server 2012-ben vagy a SQL Server 2014-ben

Hatókör
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

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:

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:

      

Kerülő megoldás

Az alábbi kerülő megoldással csonkolhatja a naplókat, és folytathatja a tevékenységet.

  1. 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>'
    
  2. 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.
  3. 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.