Назад | Перейти на главную страницу

DBCC CHECKDB завершается с ошибкой и завершает работу, неоднозначное сообщение об ошибке

Я получил уведомление о том, что один из наших серверов (кластер SQL Server 2008 в кластере Win Enterprise 2008) DBCC CHECKDB для всех баз данных в последние четыре раза не работал. У нас нет никаких данных до этого, но не похоже, что какое-то время это было успешным. Только в лог-файле ошибок нет:

DBCC results for 'sys.sysxmlfacet'. [SQLSTATE 01000]
Msg 0, Sev 0, State 1: Unspecified error occurred on SQL Server. Connection may have been     terminated by the server. [SQLSTATE HY000]
There are 112 rows in 1 pages for object "sys.sysxmlfacet". [SQLSTATE 01000]

Я запустил DBCC CHECKDB, используя sp_MSForEachDB, чтобы получить более точные результаты, и имел ту же ошибку в той же БД, но в отдельной точке:

DBCC results for 'NameValuePair_Greek_CI_AS'. [SQLSTATE 01000]
Msg 0, Sev 0, State 1: Unspecified error occurred on SQL Server. Connection may have     been terminated by the server. [SQLSTATE HY000]
There are 0 rows in 0 pages for object "NameValuePair_Greek_CI_AS". [SQLSTATE 01000]

Кроме того, в журнале ошибок указано, что DBCC завершилась без ошибок для этой базы данных.

Я не могу понять, как отследить эту неоднозначную проблему, которая возникает только в этой базе данных из десятков на этом сервере. Любая помощь приветствуется!

Изменить, чтобы ответить на комментарий:
Он запускается локально через агент SQL Server. Единственное, о чем мы думали, это то, что он находится в кластере Win2008, что может вызвать сбой, поскольку база данных сейчас слишком велика (880 ГБ, но не так много, как многие другие базы данных, выполняющие ту же работу на том же жестком / программном обеспечении) , но у нас нет ничего, чтобы показать, что происходит аварийное переключение, которое устраняет проблемы с подключением. Отработка отказа обычно отправляет так много флагов и предупреждений, что их трудно пропустить. Разрушение базы данных может быть нашей следующей мерой по устранению неполадок, но до тех пор мы просто пытаемся понять, почему это задание выполняется так странно.

Если в журнале ошибок написано, что CHECKDB завершился, значит, это произошло - это последнее, что делает CHECKDB перед выходом.

Это похоже на проблему клиента при печати результатов. Когда я писал DBCC CHECKDB во время разработки SQL Server 2005, иногда возникали неприятные проблемы с различными клиентами в зависимости от количества строк вывода - например, SSMS будет печатать только первые 1000 ошибок из CHECKDB, иначе ему не хватит памяти.

Несколько вещей, которые стоит попробовать:

  1. запускать с помощью WITH ALL_ERRORMSGS, NO_INFOMSGS (это способ, которым я всегда рекомендую запускать его)
  2. запустите его с помощью sqlcmd вместо SSMS

  3. запустить его из SQLCMD и передать результаты в файл с помощью переключателя SQLCMD -o

Спасибо