Проблемы
Предположим, что у вас установлен Microsoft SQL Server 2014, 2016 или 2017. Может возникнуть одна или несколько из перечисленных ниже проблем.
-
Экземпляр SQL Server не отвечает на запросы и появляется сообщение об ошибке "не выдается планировщик". Возможно, потребуется перезапустить сервер для восстановления.
-
Выполнение отката транзакции может занять много времени. В большинстве случаев перезагрузка экземпляра позволяет базе данных выполняться значительно быстрее, чем откат. Обратите внимание на то, что выполнение отката может занять много времени, ознакомьтесь с разделом «Дополнительные сведения» ниже, чтобы получить подробные сведения о наблюдении за откатом перед попыткой перезапуска.
-
Вы можете видеть большое время ожидания в spinlocks, например SOS_OBJECT_STORE.
Решение
Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server.
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Последнее накопительное обновление для SQL Server 2017
Сведения о пакете обновления для SQL Server
Это обновление исправлено в следующем пакете обновления для SQL Server.
Пакеты обновления являются накопительными. Каждый новый пакет обновления включает все исправления из предыдущих пакетов обновления вместе с новыми исправлениями. Наши рекомендации относятся к установке последнего пакета обновления и последнего накопительного обновления для этого пакета обновления. Перед установкой последнего пакета обновления вам не нужно устанавливать предыдущий пакет обновления. С помощью таблицы 1 в следующей статье вы узнаете, как найти дополнительные сведения о последнем пакете обновления и новейшем накопительном обновлении.
Как определить версию, выпуск и уровень обновления системы SQL Server и ее компонентов
Дополнительная информация
Существует множество причин, по которым откат может занять длительное время, например длительную транзакцию, большое число VLFs в файле журнала транзакций, медленное выполнение операций ввода-вывода и т. д. Чтобы убедиться в том, что проблема, описанная в этой статье, является основной причиной медленного отката, мы рекомендуем использовать следующие методы для отслеживания хода выполнения операции отката.
-
В sys.dm_exec_requestsопределите session_id, для команды которого задано значение "Kill/ROLLBACK", и убедитесь в том, что сеанс накапливает данные как ввода-вывода, так и время ЦП, обозначающий ход выполнения. Если ввод-вывод не меняется, это может свидетельствовать о проблемах, описанных в этой статье.
-
Запросите sys.dm_tran_database_transactions , чтобы определить текущее состояние отката с помощью такого запроса, как показано ниже.
Выберите 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 s НА t.transaction_id = s.transaction_id
ГДЕ 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, откат будет выполнен успешно.
Цель этой задачи состоит в том, чтобы сделать несколько снимков предыдущего запроса в предварительно определенном интервале и затем использовать Дельта, обработанную в database_transaction_next_undo_lsn в течение этого интервала, и выполнить экстраполяцию времени, затраченного на то, чтобы оценить время, которое займет database_transaction_next_undo_lsn для достижения database_transaction_begin_lsn.
Если откат выполняется по независимым тарифам между каждым снимком, мы рекомендуем, чтобы откат был разрешен самостоятельно, не перезапуская экземпляр SQL Server.
Для получения дополнительных сведений о длительном восстановлении ознакомьтесь со следующими статьями.
-
Общие сведения о производительности восстановления в SQL Server
-
SQL Server (2000, 2005, 2008): восстановление или откат выполняется дольше, чем ожидалось
-
Влияние структуры файла журнала на время восстановления базы данных
-
Отслеживание хода восстановления базы данных с помощью данных из представления DMV
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.