KB4338890 – JAVÍTÁS: "Nem hozamú ütemező" hibaüzenet jelenik meg, és a SQL Server nem válaszol a SQL Server 2014-ben, 2016-ban és 2017-ben

Hatókör
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

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

További információ

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:

Á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.