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 ГБ, но не так велика, как многие другие базы данных, выполняющие ту же работу на том же аппаратном / программном обеспечении), но нам нечего показать, что происходит аварийное переключение, которое устраняет проблемы с подключением. Аварийное переключение обычно отправляет так много флагов и предупреждений, что их трудно пропустить. Разбиение базы данных может быть нашей следующей мерой по устранению неполадок, но до тех пор мы просто пытаемся понять, почему эта работа так странно выполняется.

1 ответ

Решение

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

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

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

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

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

Спасибо

Другие вопросы по тегам