Požymiai
Tarkime, kad turite įdiegtą "Microsoft „SQL Server“ 2014", 2016 arba 2017. Gali kilti viena ar daugiau iš šių problemų:
- Atrodo, kad „SQL Server“ egzempliorius nereaguoja ir įvyksta klaida "Nepasiduodanti planuoklė". Norint atkurti, gali tekti iš naujo paleisti serverį.
- Operacijos keitimų atšaukimas gali užtrukti ilgai. Daugeliu atvejų iš naujo paleidus egzempliorių duomenų bazė bus atkurta daug greičiau nei atšaukus keitimus. Atkreipkite dėmesį, kad yra daug priežasčių, kodėl keitimų atšaukimas gali užtrukti ilgai. Daugiau informacijos žr. toliau esančiame skyriuje "Daugiau informacijos" apie keitimų atšaukimo stebėjimą prieš bandant paleisti iš naujo.
- Suktukų, tokių kaip SOS_OBJECT_STORE, laukimas gali būti didelis.
Sprendimas
Ši problema išspręsta šiuose kaupiamuosiuose "„SQL Server“" naujinimuose:
9 kaupiamasis naujinimas, skirtas „SQL Server“ 2017
2 kaupiamasis naujinimas, skirtas „SQL Server“ 2016 SP2
Apie "„SQL Server“" kaupiamuosius naujinimus:
Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:
Naujausias "„SQL Server“ 2017" kaupiamasis naujinimas
Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2016
Naujausias "„SQL Server“ 2014" kaupiamasis naujinimas
Pakeitimų paketo informacija, skirta „SQL Server“
Šis naujinimas ištaisytas šiame "„SQL Server“" pakeitimų pakete:
3 pakeitimų paketas, skirtas „SQL Server“ 2014
Apie „SQL Server“ pakeitimų paketus:
Pakeitimų paketai yra kaupiamieji. Kiekviename naujame pakeitimų pakete yra visos ankstesniuose pakeitimų paketuose esančios pataisos ir visos naujos pataisos. Rekomenduojame taikyti naujausią pakeitimų paketą ir naujausią to pakeitimų paketo kaupiamąjį naujinimą. Prieš įdiegiant naujausią pakeitimų paketą nereikia įdiegti ankstesnio pakeitimų paketo. Norėdami rasti daugiau informacijos apie naujausią pakeitimų paketą ir naujausią kaupiamąjį naujinimą, naudokite šio straipsnio 1 lentelę.
Kaip nustatyti "„SQL Server“" ir jo komponentų versiją, leidimą ir atnaujinimo lygį
Yra daug priežasčių, kodėl atšaukimas gali užtrukti ilgai, pvz., ilgai trunkanti operacija, didelis VLF skaičius operacijų žurnalo faile, lėtas įėjimas / išvestis ir kt. Norėdami patikrinti, ar šiame straipsnyje aprašyta problema yra pagrindinė lėto keitimų atšaukimo priežastis, siūlome naudoti šiuos metodus, kad būtų galima stebėti keitimų atšaukimo operacijos eigą:
- Iš sys.dm_exec_requests nustatykite session_id, kurio komanda nustatyta kaip "KILLED/ROLLBACK", ir įsitikinkite, kad seanse kaupiamas įvesties ir procesoriaus laikas, rodantis eigą. Jei įvesties įvestis nesikeičia, tai gali būti požymis, kad susiduriate su šiame straipsnyje aprašyta problema.
- Užklausos sys.dm_tran_database_transactions , kad būtų galima nustatyti dabartinę keitimų atšaukimo būseną naudojant tokią užklausą:
Pastaba
- 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)
- NUO sys.dm_tran_database_transactions t
- PRISIJUNKITE sys.dm_exec_requests S
ĮJUNGTA t.transaction_id=s.transaction_id - WHERE t.database_id=db_id('<Duomenų bazės pavadinimas') and s.session_id=<Session_id atlieka keitimų atšaukimo operaciją>
Pastaba:
Aukščiau pateiktoje užklausoje,
database_transaction_next_undo_lsn yra kito anuliuotino įrašo LSN. database_transaction_begin_lsn yra operacijos pradžios įrašo LSN operacijų žurnale.
database_transaction_next_undo_lsn turėtų mažėti su kiekviena šios užklausos momentine kopija. Keitimų atšaukimas bus sėkmingai baigtas, kai database_transaction_next_undo_lsn pasieks database_transaction_begin_lsn.
Tikslas yra padaryti keletą ankstesnės užklausos momentinių kopijų per iš anksto nustatytą intervalą, tada naudoti LSN, apdorotų database_transaction_next_undo_lsn per tą intervalą, delta ir ekstrapoliuoti laiką, kurio prireikė, kad įvertintumėte, kiek laiko užtruks database_transaction_next_undo_lsn pasiekti database_transaction_begin_lsn.
Jei keitimų atšaukimas vyksta tinkamu greičiu tarp kiekvienos momentinės kopijos, siūlome leisti atšaukti savarankiškai nepaleidžiant „SQL Server“ egzemplioriaus iš naujo.
Peržiūrėkite šiuos straipsnius, jei reikia daugiau informacijos apie ilgalaikį atkūrimą:
- Atkūrimo efektyvumo supratimas „SQL Server“
- „SQL Server“ (2000, 2005, 2008): atkūrimas / atšaukimas trunka ilgiau nei tikėtasi
- Kaip žurnalo failo struktūra gali paveikti duomenų bazės atkūrimo laiką
- Duomenų bazės atkūrimo eigos stebėjimas naudojant informaciją iš DMV
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.
Nuorodos
Sužinokite daugiau apie terminus, kuriuos „„Microsoft““ naudoja apibūdindama programinės įrangos naujinimus.