Ознаки
Припустимо, у вас інстальовано Microsoft SQL Server 2014, 2016 або 2017. Може виникнути одна або кілька з наведених нижче проблем.
- Екземпляр SQL Server не відповідає, і з'являється повідомлення про помилку "Невідповідний планувальник". Можливо, для відновлення знадобиться перезавантажити сервер.
- Відкочування транзакції може тривати довго. У більшості випадків перезавантаження екземпляра дозволяє базі даних відновлюватися набагато швидше, ніж відкочування. Зверніть увагу, що відкочування може тривати багато часу (див. розділ "Додаткові відомості" нижче, щоб дізнатися більше про моніторинг відкочування перед спробою перезавантаження).
- Ви можете побачити високі очікування на спінлоках, таких як SOS_OBJECT_STORE.
Спосіб усунення проблеми
Цю проблему вирішено в наведених нижче сукупних оновленнях для SQL ServerSQL Server:
Сукупний пакет оновлень 9 для SQL ServerSQL Server 2017
Сукупний пакет оновлень 2 для SQL ServerSQL Server 2016 SP2
Відомості про сукупні оновлення для SQL ServerSQL Server :
Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Перегляньте останні сукупні оновлення для SQL Server.
Останнє сукупне оновлення для SQL ServerSQL Server 2017
Останнє сукупне оновлення для SQL ServerSQL Server 2016
Останнє сукупне оновлення для SQL ServerSQL Server 2014
Відомості про пакет оновлень для SQL ServerSQL Server
Це оновлення виправлено в такому пакеті оновлень для SQL ServerSQL Server:
Пакет оновлень 3 для SQL Server 2014
Пакети оновлень для SQL Server
Пакети оновлень накопичуються. Кожен новий пакет оновлень містить усі попередні виправлення разом із новими виправленнями. Ми радимо використовувати для них найновіший пакет оновлень і останній сукупний пакет оновлень. Інсталювати попередній пакет оновлень перед інсталяцією останнього пакета оновлень не обов'язково. Щоб дізнатися більше про останній пакет оновлень і останній сукупний пакет оновлень, скористайтеся таблицею 1 у таблиці 1 цієї статті.
Визначення версії, випуску та рівня оновлення SQL Server і його компонентів
Існує багато причин, чому відкат може зайняти багато часу, наприклад, тривала транзакція, велика кількість VLF у файлі журналу транзакцій, повільний ввід/вивід тощо. Щоб переконатися, що проблема, описана в цій статті, є основною причиною повільного відкочування, ми пропонуємо скористатися наведеними нижче методами моніторингу перебігу операції відкочування.
- У sys.dm_exec_requests визначте session_id, для команди якого встановлено значення "KILLED/ROLLBACK" (KILLED/ROLLBACK), і переконайтеся, що сеанс накопичує час вводу-виводу та процесора, що вказує на прогрес. Якщо ввід-вивід не змінюється, це може свідчити про те, що ви зіткнулися з проблемою, описаною в цій статті.
- Query sys.dm_tran_database_transactions визначити поточний стан відкочування за допомогою такого запиту:
Примітка.
- SELECT 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)
- З sys.dm_tran_database_transactions т
- ПРИЄДНАННЯ sys.dm_exec_requests
ON t.transaction_id=s.transaction_id - WHERE t.database_id=db_id('<Ім'я бази даних') і s.session_id=<Session_id виконання операції> відкочування
Примітка.
У наведеному вище запиті
database_transaction_next_undo_lsn – LSN наступного запису, який потрібно скасувати. database_transaction_begin_lsn – LSN початкового запису для транзакції в журналі транзакцій.
database_transaction_next_undo_lsn має зменшуватися з кожним знімком цього запиту. Відкочування завершиться, коли database_transaction_next_undo_lsn досягне database_transaction_begin_lsn.
Мета полягає в тому, щоб зробити кілька знімків попереднього запиту протягом заздалегідь визначеного інтервалу, а потім використати дельту LSN, оброблених у database_transaction_next_undo_lsn протягом цього інтервалу, та екстраполювати час, витрачений на те, щоб оцінити час, потрібний database_transaction_next_undo_lsn , щоб досягти database_transaction_begin_lsn.
Якщо відкочування відбувається з пристойною швидкістю між кожним знімком, радимо дозволити відкочуванню завершитися самостійно, не перезапускаючи SQL Server екземпляр.
Докладні відомості про довготривале відновлення можна знайти в таких статтях:
- Основні відомості про ефективність відновлення в SQL Server
- SQL ServerSQL Server (2000, 2005, 2008): відновлення або відкочування триває довше, ніж очікувалося
- Вплив структури файлу журналу на час відновлення бази даних
- Відстеження перебігу відновлення бази даних за допомогою інформації з DMV
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Посилання
Дізнайтеся, за допомогою яких термінів корпорація Майкрософт описує оновлення програмного забезпечення.