Tünetek
Feltételezzük, hogy a számítógépen telepítve van a Microsoft SQL Server 2014, 2016 vagy 2017. Az alábbi problémák közül egy vagy több jelentkezhet:
- Úgy tűnik, hogy az SQL Server-példány nem válaszol, és a "Nem ad ütemező" hibaüzenet jelenik meg. Előfordulhat, hogy a helyreállításhoz újra kell indítania a kiszolgálót.
- A tranzakció visszaállítása hosszú időt vehet igénybe. A legtöbb esetben a példány újraindításával az adatbázis sokkal gyorsabban helyreáll, mint a visszaállítás. Vegye figyelembe, hogy a visszaállítás sok időt vehet igénybe. Az újraindítás előtti visszaállítások figyeléséről bővebben az alábbi "További információ" című szakaszban olvashat.
- Előfordulhat, hogy hosszú várakozási időket tapasztal a léptető lockok, például a SOS_OBJECT_STORE esetében.
Megoldás
A probléma javítását az SQL Server következő összegző frissítései tartalmazzák:
9-es összegző frissítés az SQL Server 2017-hez
2. összegző frissítés az SQL Server 2016 SP2-höz
Az SQL Server összegző frissítéseinek ismertetése:
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. Tekintse meg az SQL Server legújabb összegző frissítéseit:
Az SQL Server 2017 legújabb összegző frissítése
Az SQL Server 2016 legújabb összegző frissítése
Az SQL Server 2014 legújabb összegző frissítése
Az SQL Server szervizcsomagjával kapcsolatos információk
A frissítés javítását az SQL Server következő szervizcsomagja tartalmazza:
Service Pack 3 az SQL Server 2014-hez
Tudnivalók az SQL Server szervizcsomagjairól:
A szervizcsomagok kumulatívak. Minden új szervizcsomag tartalmazza az előző szervizcsomagokban található összes javítást, az esetleges új javításokkal együtt. Javasoljuk, hogy telepítse a legújabb szervizcsomagot, valamint az adott szervizcsomag legújabb összegző frissítését. A legújabb szervizcsomag telepítése előtt nem kell telepítenie egy korábbi szervizcsomagot. A legújabb szervizcsomaggal és a legújabb kumulatív frissítéssel kapcsolatos további információkért olvassa el a következő cikk 1. táblázatát.
Az SQL Server és összetevői verziójának, kiadásának és frissítési szintjének meghatározása
Számos oka lehet annak, hogy a visszaállítás hosszú időt vehet igénybe, például hosszan futó tranzakciók, sok VLF a tranzakciónaplófájlban, lassú I/O stb. Annak ellenőrzésére, hogy a cikkben ismertetett probléma okozza-e a lassú visszaállítást, javasoljuk, hogy alkalmazza az alábbi technikákat a visszaállítási művelet előrehaladásának figyelésére:
- A sys.dm_exec_requests-ben azonosítsa azt a session_id, amelynek a parancsa "KILLED/ROLLBACK" értékre van állítva, és győződjön meg arról, hogy a munkamenet IO- és CPU-időt is gyűjt az előrehaladást jelző módon. Ha az IO nem változik, az arra utalhat, hogy a jelen cikkben ismertetett problémával találkozik.
- A lekérdezés sys.dm_tran_database_transactions a visszaállítás aktuális állapotának azonosítására az alábbihoz hasonló lekérdezés segítségével:
Megjegyzés
- SELECT getdate() as CurrentTime, database_transaction_next_undo_lsn,database_transaction_begin_lsn,t.transaction_id,database_transaction_begin_time,database_transaction_log_record_count,db_name(t.database_id)
- A sys.dm_tran_database_transactions t
- CSATLAKOZÁS sys.dm_exec_requests
ON t.transaction_id=s.transaction_id - WHERE t.database_id=db_id('<Adatbázis neve') és s.session_id=<Session_id a visszaállítási műveletet> végrehajtja
Megjegyzés:
A fenti lekérdezésben
database_transaction_next_undo_lsn a következő visszavonandó rekord LSN-je. database_transaction_begin_lsn a tranzakció kezdőrekordjának LSN-száma a tranzakciónaplóban.
database_transaction_next_undo_lsn a lekérdezés minden egyes pillanatképével csökkennie kell. A visszaállítás akkor fejeződik be sikeresen, amikor a database_transaction_next_undo_lsn eléri a database_transaction_begin_lsn.
A cél itt az, hogy készítsen néhány pillanatképet az előző lekérdezésről egy előre meghatározott időintervallumon belül, majd használja az abban az időszakban database_transaction_next_undo_lsn feldolgozott LSN-ek különbözetét, és extrapolálja az időtartamot annak becsléséhez, hogy mennyi időbe telik, amíg a database_transaction_next_undo_lsn eléri a database_transaction_begin_lsn.
Ha a visszaállítás megfelelő ütemben halad az egyes pillanatképek között, javasoljuk, hogy a visszaállítás a SQL Server-példány újraindítása nélkül önállóan is befejeződjön.
A hosszú távú helyreállításról az alábbi cikkekben talál további információt:
- Az SQL Server helyreállítási teljesítményének ismertetése
- SQL Server (2000, 2005, 2008): A vártnál tovább tart a helyreállítás/visszaállítás
- Hogyan befolyásolhatja a naplófájlstruktúra az adatbázis helyreállítási idejét?
- Az adatbázis-helyreállítási folyamat nyomon követése a DMV adataival
Á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.
Hivatkozások
Ismerje meg a Microsoft szoftverfrissítésekkel kapcsolatos terminológiáját.