Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описана проблема, возникающая при выполнении DBCC CHECKDB команды на компьютере с базой данных SQL Server.
Оригинальная версия продукта: SQL Server 2005 и более поздние версии Исходный номер базы знаний: 960791
Симптомы
Рассмотрим следующий сценарий:
База данных Microsoft SQL Server восстанавливается из резервной копии.
Во время процесса восстановления возникают ошибки, которые препятствуют восстановлению базы данных.
Вы успешно восстанавливаете базу данных из той же резервной копии с помощью параметра CONTINUE_AFTER_ERROR.
В этом сценарии при выполнении команды DBCC CHECKDB на компьютере, содержашем базу данных SQL Server, вы получите сообщение об ошибке, похожее на следующее:
Msg 8967, Level 16, State 216, Server <name>, Line 2
Внутренняя ошибка произошла в DBCC, которая предотвратила дальнейшую обработку. Обратитесь в службу поддержки клиентов.
Результаты DBCC для имени< базы данных>.Msg 8921, Level 16, State 1, Server <name>, Line 1
Проверка отменена. В процессе сбора фактов была обнаружена ошибка. Возможно, нехватка пространства для базы данных tempdb или не согласована системная таблица. Проверьте наличие предыдущих ошибок.
Кроме того, в журнале ошибок SQL Server может отображаться сообщение, похожее на следующее:
2007-05-26 07:13:49.21 spid58 DBCC обнаружил страницу с LSN больше текущего конца журнала LSN (<LSN>) для его внутреннего моментального снимка базы данных. Не удалось прочитать страницу (идентификатор файла:page), имя< базы данных (идентификатор базы данных>), LSN = (<LSN>), тип = 32, isInSparseFile = 1. Повторно выполните эту команду DBCC.
Причина
Эта проблема возникает, если DBCC CHECKDB команда не может выполнить необходимые проверки для подтверждения согласованности базы данных. Эти проверки не могут выполняться по многим причинам. Например, это поведение может произойти, если в базе данных существуют фундаментальные несоответствия, например несоответствия метаданных или повреждение моментального снимка базы данных. Дополнительные сведения о конкретной причине этой ошибки можно определить, проверив другое состояние, отображаемое в сообщении об ошибке. В сценарии, описанном в DBCC CHECKDB снимка с большим порядковым номером журнала (LSN), чем конец LSN журнала. Это может произойти при восстановлении баз данных с помощью параметра CONTINUE_AFTER_ERROR .
Обходное решение
Чтобы обойти эту проблему, используйте подсказку TABLOCK с командой DBCC CHECKDB . Это позволяет команде DBCC CHECKDB завершить работу без создания сообщения об ошибке.
Дополнительные сведения о подсказках TABLOCK см. в разделе Подсказки (Transact-SQL) - Таблица.