SQL Server: несоответствие обнуляемости столбцов - PullRequest
1 голос
/ 16 сентября 2008

У меня есть база данных SQL Server 2005, которую можно восстановить только с помощью

Restore Database The_DB_Name
From Disk = 'C:\etc\etc'
With Continue_After_Error

Мне сказали, что с исходной базой данных все в порядке. Отчеты о восстановлении

Предупреждение: обнуляемость столбца несоответствие было обнаружено в метаданные индекса "IDX_Comp_CompanyId" (index_id = 2) по идентификатору объекта nnnnn в базе данных "The_DB_Name". Индекс может быть коррумпированы. Запустите DBCC CHECKTABLE, чтобы проверить консистенция.

DBCC CHECKTABLE (Company)

дает

Сообщение 8967, уровень 16, состояние 216, строка 1 В DBCC произошла внутренняя ошибка что помешало дальнейшей обработке. Обратитесь в службу поддержки клиентов.

Сообщение 8921, Уровень 16, Состояние 1, Строка 1
Проверка прекращена. Ошибка была обнаружено при сборе фактов. Возможно, tempdb из космоса или Системная таблица не соответствует. Проверьте предыдущие ошибки.

Alter Index IDX_Comp_CompanyId On dbo.Company
Rebuild

дает мне

Сообщение 824, Уровень 24, Состояние 2, Строка 1
SQL Server обнаружил логический ошибка ввода-вывода на основе согласованности: неверно Pageid (ожидаемый 1: 77467; фактический 45: 2097184). Это произошло во время чтения страницы (1: 77467) в базе данных с идентификатором 20 по адресу смещение 0x00000025d36000 в файле 'C: \ и т.д. \ etc.mdf. Дополнительные сообщения в журнале ошибок или системе SQL Server Журнал событий может предоставить более подробную информацию. Это серьезная ошибка, угрожает целостности базы данных и должен быть исправлено немедленно. Завершить полная проверка согласованности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана много факторов; для дополнительной информации, см. электронную документацию по SQL Server.

Сколько у меня проблем?

1 Ответ

3 голосов
/ 16 сентября 2008

Повреждение в индексе не так плохо, как повреждение в базовой таблице, так как индекс можно восстановить.

Сравните определения таблиц и индексов между исходной и целевой базами данных. Проверьте версию обоих серверов. (была ли резервная копия автоматически обновлена ​​при восстановлении на вашем сервере) Удалите и заново создайте индекс и повторно запустите CheckTable.

...