Simptomi
Pretpostavimo da imate instaliran Microsoft SQL Server 2014, 2016 ili 2017. Može doći do nekih od sledećih problema:
-
Instanca SQL servera ne reaguje i dolazi do greške "Planer bez prinosa". Možda ćete morati ponovo da pokrenete server da biste ga oporavili.
-
Vraćanje transakcije može potrajati dugo. U većini slučajeva ponovno pokretanje instance će omogućiti da se baza podataka spasi mnogo brže od ponovnog pokretanja. Imajte na kraju da postoji mnogo razloga zbog kojih vraćanje može potrajati dugo, pogledajte odeljak "Više informacija" u nastavku za detalje o vraćanjem nadgledanja pre nego što pokušate ponovo da pokrenete računar.
-
Možda ćete videti visoka čekanja na kičme kao što je SOS_OBJECT_STORE.
Rešenje
Ovaj problem je rešen u sledećim kumulativnim ispravkama za SQL Server:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Najnovija kumulativna ispravka za SQL Server 2017
Informacije o servisnom paketu za SQL Server
Ova ispravka je fiksna u sledećem servisnom paketu za SQL Server:
Servisni paketi su kumulativni. Svaki novi servisni paket sadrži sve ispravke koje se naći u prethodnim servisnim paketima, zajedno sa svim novim ispravkama. Naša preporuka je da primenite najnoviji servisni paket i najnoviju kumulativnu ispravku za taj servisni paket. Ne morate da instalirate prethodni servisni paket pre nego što instalirate najnoviji servisni paket. Koristite tabelu 1 u sledećem članku da biste pronašli više informacija o najnovijem servisnom paketu i najnovijoj kumulativnoj ispravci.
Utvrđivanje nivoa verzije, izdanja i ažuriranja sistema SQL Server i njegovih komponenti
Više informacija
Postoji mnogo razloga zbog kojih vraćanje može da potraje kao što su dugotrajna transakcija, veliki broj VLF-ova u datoteci evidencije transakcija, spori U/I itd. Da bismo proverili da li je problem opisan u ovom članku osnovni uzrok sporog vraćanje unazad, predlažemo da se sledeće tehnike koriste za praćenje napretka operacije vraćanje unazad:
-
Od sys.dm_exec_requests, identifikujte session_id čija je komanda postavljena na "KILLED/ROLLBACK" i uverite se da se sesija akumulira i IO i CPU vreme koje ukazuje na napredak. Ako se IO ne menja, onda to može biti pokazatelj da nailazite na problem opisan u ovom članku.
-
Query sys.dm_tran_database_transactions da biste identifikovali trenutno stanje povraćaja pomoću upita kao što je sledeći:
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)
OD sys.dm_tran_database_transactions t
PRIDRUŽIte 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>
Napomena:
U gorenavedenoj upitu,
database_transaction_next_undo_lsn je LSN sledećeg zapisa koji treba poništiti. database_transaction_begin_lsn je LSN zapisa početka transakcije u evidenciji transakcija.
database_transaction_next_undo_lsn bi trebalo da se smanjuje sa svakim snimkom ovog upita. Vraćanje će se uspešno završiti kada database_transaction_next_undo_lsn dostigne database_transaction_begin_lsn.
Ovde je cilj da se napravi nekoliko snimaka prethodnog upita u unapred određenom intervalu, a zatim da se u tom intervalu koristi delta LSN obrađena database_transaction_next_undo_lsn. godine i ekstrapolira vreme potrebno da se proceni vreme koje će biti potrebno da database_transaction_next_undo_lsn stigne do database_transaction_begin_lsn.
Ako vraćanje unazad napreduje pristojnom brzinom između svakog snimka, predlažemo da se dozvoli da se vraćanje sama dovrši bez ponovnog pokretanja instance SQL servera.
Više informacija o dugotrajnom oporavku potražite u sledećim člancima:
-
SQL Server (2000, 2005, 2008): Oporavak/vraćanje traje duže od očekivanog
-
Kako struktura datoteke evidencije može da utiče na vreme oporavka baze podataka
-
Praćenje toka oporavka baze podataka pomoću informacija iz funkcije DMV
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Reference
Saznajte više o terminologijikoju Microsoft koristi za opisivanje softverskih ispravki.