Поврежденный столбец в базе данных - PullRequest
1 голос
/ 06 октября 2009

У меня есть база данных SQL Server. В одной из таблиц есть столбец, который из-за отсутствия лучшего слова действует как испорченный. Я могу выбрать * или даже выбрать этот конкретный столбец, и он отлично работает. Я могу без проблем выполнять такие функции, как подсчет, упорядочение и группировка по всем остальным столбцам. Но если я попытаюсь выполнить одну из этих функций в этом столбце, произойдет ошибка со следующим сообщением: Ошибка: (Состояние: S1000, Собственный код: E28)

Также я подключен к базе данных с помощью winsql.

Кто-нибудь когда-либо видел такое поведение раньше?

Дополнительная информация:

select colname from tablename

отлично работает

select colname from tablename order by colname

выдает ошибку

Ответы [ 2 ]

2 голосов
/ 06 октября 2009

Попробуйте перестроить индексы. У меня была похожая проблема, и восстановление индексов исправило ее. В другом случае перестройка индексов не работала, поэтому мне пришлось восстанавливать ночное резервное копирование. Слава Богу, у нас были ночные резервные копии для базы данных разработки.

1 голос
/ 06 октября 2009

Если база данных SQL сообщает о повреждении / это действительно повреждение - начните очень осторожно. Повреждение может начать проявляться с 823/824 и другими ошибками высокой степени серьезности. Сохраняйте спокойствие и запускайте DBCC CheckDB - узнайте степень коррупции. Не отсоединяйте его и не начинайте выполнять случайные действия.

Прежде чем продолжить, вы должны взять резервную копию журнала транзакций - он может вам понадобиться, если вы вынуждены восстанавливать. Я бы, наверное, взял это с опцией COPY_ONLY.

CheckDB может занять некоторое время, но дайте ему закончить и посмотрите, сколько сообщений о повреждениях сообщается, и о каких объектах они сообщаются.

Повреждения в индексах NC могут быть легко устранены путем перестроения индекса, повреждения с порванными страницами будут сложнее.

Если CheckDB отказывается завершить работу и выдает ошибку, у вас есть реальная проблема, и вы будете экспортировать, какие данные вы можете / восстанавливать из резервной копии.

Одним из лучших мест, где можно почитать о повреждениях и найти / исправить / когда закончится игра, является блог Пола С. Рэндала. http://www.sqlskills.com/blogs/paul/

Это применимо, только если вы действительно смотрите на коррупцию, а не на хитрый SQL.

...