Příznaky
Předpokládejme, že máte nainstalovaný Microsoft SQL Server 2014, 2016 nebo 2017. Můžete zaznamenat některé z následujících problémů:
-
Instance systému SQL Server zdánlivě neodpovídá a dojde k chybě "nevracení výnosu". Pro obnovení může být nutné restartovat server.
-
Vrácení transakce může trvat velmi dlouho. Ve většině případů restartováním instance umožníte, aby se databáze co nejvíce obnovila. Uvědomte si, že existuje mnoho důvodů, proč může vrácení změn netrvat delší dobu, a to v části Další informace, kde najdete podrobnosti o vrácení se ke kontrole před pokusem o restartování.
-
Může se zobrazit velké čekání na spinlocks, jako je třeba SOS_OBJECT_STORE.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích systému SQL Server:
O kumulativních aktualizacích pro SQL Server:
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Nejnovější kumulativní aktualizace pro SQL Server 2017
Informace o aktualizaci Service Pack pro SQL Server
Tato aktualizace je opravená v následující aktualizaci Service Pack pro SQL Server:
O aktualizacích Service Pack pro SQL Server:
Aktualizace Service Pack jsou kumulativní. Každá nová aktualizace Service Pack obsahuje všechny opravy zahrnuté v předchozích aktualizacích Service Pack a všechny nové opravy. Naším doporučením je použití nejnovější aktualizace Service Pack a nejnovější kumulativní aktualizace pro danou aktualizaci Service Pack. Před instalací nejnovější aktualizace Service Pack není nutné nainstalovat předchozí aktualizaci Service Pack. K vyhledání dalších informací o nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci použijte tabulku 1 v následujícím článku.
Jak zjistit verzi, edici a aktualizaci úrovně SQL serveru a jeho součástí
Další informace
Existuje mnoho důvodů, proč může vrácení zpět trvat dlouhou dobu, jako je například dlouhotrvající transakce, velké množství VLFs v souboru protokolu transakcí, pomalé vstupně-výstupní operace. Chcete-li ověřit, že problém popsaný v tomto článku představuje hlavní příčinu nepodrobného vrácení zpět, doporučujeme použít ke sledování postupu vrácení zpět následující techniky:
-
V Sys.dm_exec_requestsurčete session_id, jehož příkaz je nastaven na "usmrceno/vrácení zpět", a ujistěte se, že se v relaci v vstupně-výstupních operacích vyznačí průběh. Pokud se vstupně-výstupní operace nemění, může to znamenat, že se setkáte s problémem popsaným v tomto článku.
-
Dotaz Sys.dm_tran_database_transactions k určení aktuálního stavu vrácení zpět pomocí dotazu, který je následující:
Vyberte 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
PŘIPOJIT sys.dm_exec_requests s NA t.transaction_id = s.transaction_id
KDE t.database_id = db_id (' <název databáze') a s.session_id =<session_id provedení operace vrácení zpět>
Poznámka:
Ve výše uvedeném dotazu
database_transaction_next_undo_lsn je hodnota LSN dalšího záznamu, který chcete vrátit zpět. database_transaction_begin_lsn je hodnota LSN počátečního záznamu pro transakci v transakčním protokolu.
database_transaction_next_undo_lsn je třeba snížit pomocí jednotlivých snímků tohoto dotazu. Vrácení zpět bude dokončeno úspěšně, jakmile database_transaction_next_undo_lsn dosáhne database_transaction_begin_lsn.
Cílem tady je trvat několik snímků předchozího dotazu v předem stanoveném intervalu a pak použít rozdíl v LSNs zpracovaných v database_transaction_next_undo_lsn v tomto intervalu a extrapolací času, který je potřeba k tomu, aby se odhadoval čas, který bude trvat, než database_transaction_next_undo_lsn k dosažení database_transaction_begin_lsn.
Pokud se vrácení změn nezodpovídá za decentnou sazbu mezi jednotlivými snímky, doporučujeme, aby bylo vrácení zpět povoleno bez restartování instance SQL serveru.
Další informace o dlouhotrvajícím obnovení najdete v následujících článcích:
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Odkazy
Informace o terminologiipoužívané společností Microsoft k popisu aktualizací softwaru.