Sümptomid
Oletame, et teil on installitud Microsoft SQL Server 2014, 2016 või 2017. Võib ilmneda mõni järgmistest probleemidest.
-
SQL serveri eksemplar kuvatakse reageerimast ja ilmneb tõrge "mitte saades scheduler". Võimalik, et peate taastamiseks serveri uuesti käivitama.
-
Tehingu tagasipööramine võib aega võtta. Enamikul juhtudel võimaldab eksemplari taaskäivitamine andmebaasi tagasipööramist tunduvalt kiiremini taastada. Pidage meeles, et tagasipööramine võib palju aega võtta, kui soovite enne uuesti käivitamist jälgida tagasipööramise üle tehtavaid üksikasju, vt allpool jaotist "Lisateave".
-
Võib-olla näete kõrget spinlocks (nt SOS_OBJECT_STORE).
Lahendus
See probleem on lahendatud SQL serveri järgmisi kumulatiivseid värskendusi.
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Uusim SQL Server 2017 koondvärskenduses
SQL serveri hoolduspaketi teave
See värskendus on lahendatud järgmises SQL serveri hoolduspaketis.
Hoolduspaketid on kumulatiivsed. Iga uus hoolduspakett sisaldab kõiki varasemates pakettides olevaid parandusi koos uute parandustega. Meie soovitus on rakendada uusimat hoolduspaketti ja selle hoolduspaketi uusimat kumulatiivset värskendust. Enne uusima hoolduspaketi installimist pole vaja installida eelmist hoolduspaketti. Järgmise artikli tabel 1 abil leiate lisateavet uusima hoolduspaketi ja uusima kumulatiivse värskenduse kohta.
SQL serveri ja selle komponentide versiooni, väljaande ja värskendamise taseme määratlemine
Lisateave
Tagasipööramise tagasipööramine võib võtta palju aega (nt pikaajaline tehing, suur hulk VLFs, aeglane I/O jne). Selleks et kontrollida, kas selles artiklis kirjeldatud probleem on aeglase tagasipööramise põhjus, soovitame kasutada järgmisi meetodeid tagasipööramise edenemise jälgimiseks.
-
Sys.dm_exec_requests, tuvastage session_id, mille käsk on seatud väärtusele "killed/tagasipööramine", ja veenduge, et seanss koguks nii IO kui ka CPU aja, mis näitab edasiminekut. Kui IO ei muutu, võib see olla märk sellest, et teil tekib selles artiklis kirjeldatud probleem.
-
Päring sys.dm_tran_database_transactions , et tuvastada tagasipööramise praegune olek, kasutades päringut, näiteks järgmist:
Valige GETDATE () 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)
ALATES sys.dm_tran_database_transactions t
LIITUge sys.dm_exec_requests s T.transaction_id = s.transaction_id
KUS t.database_id = db_id ("<andmebaasi nimi") ja s.session_id =<Session_id, mis sooritab tagasipööramise toimingu>
Märkus:
Ülaltoodud päringus
database_transaction_next_undo_lsn on järgmise kirje LSN, mille soovite tagasi võtta. database_transaction_begin_lsn on tehingulogi tehingu alustamiseks kirje LSN.
database_transaction_next_undo_lsn peaks vähendama selle päringu iga hetktõmmist. Tagasipööramine viiakse edukalt lõpule, kui database_transaction_next_undo_lsn jõuab database_transaction_begin_lsnni.
Siin on eesmärgiks teha eelnevalt määratud intervalliga mõned hetktõmmised eelmisest päringust ja seejärel kasutada selle intervalli jooksul database_transaction_next_undo_lsn töödeldud LSNs deltat ning ekstrapoleerida aega, et hinnata, kui palju aega kulub database_transaction_next_undo_lsn database_transaction_begin_lsnsaavutamiseks.
Kui tagasipööramine edeneb iga hetktõmmise vahel rahuldaval määral, soovitame tagasipööramise lubada ka siis, kui SQL serveri eksemplar uuesti ei tööta.
Lisateavet pika jooksva süsteemitaaste kohta leiate järgmistest artiklitest.
-
SQL Server (2000; 2005; 2008): taastamine/tagasipööramine võtab oodatust kauem aega
-
Kuidas logifaili struktuur võib mõjutada andmebaasi taastamise aega
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Viited
Siit leiate teavet selle kohta, mida Microsoftkasutab tarkvaravärskenduste kirjeldamiseks.