KB4338890 - FIX: tõrge "Mittesaav ajasti" ja SQL Server tundub ei reageeri SQL Server 2014, 2016 ja 2017

Rakenduskoht
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)

Sümptomid

Oletagem, et teil on installitud Microsoft SQL Server 2014, 2016 või 2017.  Teil võib esineda üks või mitu järgmistest probleemidest.

  • SQL Server eksemplar ei reageeri ja ilmneb tõrge "Mittesisaldav ajasti". Võimalik, et peate taastamiseks serveri taaskäivitama.
  • Tehingu tagasipööramine võib võtta kaua aega. Enamasti võimaldab eksemplari taaskäivitamine andmebaasil taastada palju kiiremini kui tagasipööramine. Pange tähele, et tagasipööramine võib võtta kaua aega, kuna tagasipööramine võib võtta palju aega, vaadake allpool olevat jaotist "Lisateave", et saada üksikasjalikku teavet jälgimise tagasipööramise kohta enne taaskäivitamise katset.
  • Spinlockidel (nt SOS_OBJECT_STORE) võidakse oodata väga palju.

Lahendus

See probleem on lahendatud järgmistes SQL Server koondvärskendustes:

SQL Server 2017 koondvärskendus 9

SQL Server 2016 SP2 koondvärskendus 2

Teave SQL Server koondvärskenduste kohta.

Iga uus koondvärskendus SQL Server sisaldab kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmise koondvärskenduse. Vaadake uusimaid SQL Server koondvärskendusi.

Uusim koondvärskendus SQL Server 2017 jaoks

Uusim koondvärskendus SQL Server 2016 jaoks

Uusim koondvärskendus SQL Server 2014 jaoks

SQL Server hoolduspaketi teave

See värskendus on lahendatud järgmises SQL Server hoolduspaketis:

Hoolduspakett Service Pack 3 for SQL Server 2014

Teave SQL Server hoolduspakettide kohta.

Hoolduspaketid on kumulatiivsed. Iga uus hoolduspakett sisaldab kõiki varasemates hoolduspakettides sisalduvaid parandusi koos uute parandustega. Meie soovitus on rakendada selle hoolduspaketi jaoks uusim hoolduspakett ja uusim koondvärskendus. Te ei pea enne uusima hoolduspaketi installimist installima eelmist hoolduspaketti. Uusima hoolduspaketi ja uusima koondvärskenduse kohta lisateabe saamiseks kasutage järgmises artiklis toodud tabelit 1.

SQL Server ja selle komponentide versiooni, väljaande ja värskendustaseme määratlemine

Lisateave

Tagasipööramiseks võib olla mitu põhjust, näiteks pikaajaline tehing, suur hulk VLF-e tehingulogi failis, aeglane I/O jne. Selleks et kontrollida, kas selles artiklis kirjeldatud probleem on aeglase tagasipööramise algpõhjus, soovitame tagasipööramistoimingu edenemise jälgimiseks kasutada järgmisi meetodeid:

  • Tuvastage sys.dm_exec_requests session_id, mille käsu väärtuseks on määratud "KILLED/ROLLBACK" ja veenduge, et seanss koguneks nii IO-le kui ka protsessoriajale, mis näitab edenemist. Kui IO ei muutu, võib see viidata selles artiklis kirjeldatud probleemile.
  • Päring sys.dm_tran_database_transactions , et tuvastada tagasipööramise praegune olek järgmise päringu abil:

Märkus.

  • 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)
  • FROM sys.dm_tran_database_transactions t
  • JOIN sys.dm_exec_requests s
       ON t.transaction_id=s.transaction_id
  • WHERE t.database_id=db_id('<Database Name') and s.session_id=<Session_id performing the rollback operation>

Märkus:

Ülaltoodud päringus

database_transaction_next_undo_lsn on tagasivõtmiseks järgmise kirje LSN. database_transaction_begin_lsn on tehingulogi kande alguskirje LSN.

database_transaction_next_undo_lsn peaks selle päringu iga hetktõmmise korral vähenema. Tagasipööramine viiakse lõpule, kui database_transaction_next_undo_lsn jõuab database_transaction_begin_lsn.

Siin on eesmärk teha eelmääratletud intervalliga eelmisest päringust mõned hetktõmmised ja seejärel kasutada selle intervalliga database_transaction_next_undo_lsn töödeldud LSN-ide deltat ja ekstrapoleerida aega, mis kulub database_transaction_next_undo_lsndatabase_transaction_begin_lsn jõudmiseks.

Kui tagasipööramine edeneb iga hetktõmmise vahel korraliku kiirusega, soovitame tagasipööramist lubada iseseisvalt lõpule viia ilma SQL Server eksemplari taaskäivitamata.

Lisateavet pikaajalise taaste kohta leiate järgmistest artiklitest.

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Viited

Lisateave Microsofti tarkvaravärskenduste terminoloogia kohta.