Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 DBCC CHECKDB выдал ошибку - можно исправить БД?  [new]
balykovdron
Member

Откуда:
Сообщений: 101
Я запускал DBCC CHECKDB (<db>, repair_fast) и выдалось такое

Msg 8992, Level 16, State 1, Line 1
Проверьте состояние каталога 3853, состояние 1: Атрибут (referenced_major_id=1187639424,referenced_minor_id=1) строки (class=0,object_id=1872165865,column_id=0,referenced_major_id=1187639424,referenced_minor_id=1) в sys.sql_dependencies не имеет совпадающей строки (object_id=1187639424,column_id=1) в sys.columns.

Microsoft SQL Server 2005 - 9.00.4035.00 (X64)
Nov 24 2008 16:17:31
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)


как можно прправить БД?
3 апр 12, 10:44    [12355380]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CHECKDB выдал ошибку - можно исправить БД?  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 852
balykovdron,

Тебе же написали где искать :-).
1. Найди в sys.sql_dependencies все что относится к object_id=1872165865
2. Найди в sys.sysobjects имя обьекта object_id=1872165865
3. Найди в sys.sysobjects имя обьекта object_id=1187639424

Скорее всего object_id=1187639424 - таблица, на основе которой создано view object_id=1872165865, и скорее всего создано оно как select * from ... . Видимо структура таблицы была изменена а view не изменилось. Все что нужно сделать - выполнить следующее:

exec sp_refreshview '<view_name>';
3 апр 12, 11:13    [12355561]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CHECKDB выдал ошибку - можно исправить БД?  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 852
flexgen,

И на будущее - использовать select * from не стоит, лучше перечислить необходимые поля.
3 апр 12, 11:15    [12355571]     Ответить | Цитировать Сообщить модератору
 Re: DBCC CHECKDB выдал ошибку - можно исправить БД?  [new]
balykovdron
Member

Откуда:
Сообщений: 101
flexgen
balykovdron,

2. Найди в sys.sysobjects имя обьекта object_id=1872165865
3. Найди в sys.sysobjects имя обьекта object_id=1187639424



нашел. Одно из них таблица - а другое - триггер к ней.
Удалил триггер - снова запустил dbcc checkdb - все отработало!

P.S. В триггере действительно была конструкция SELECT * FROM... Сейчас поправлю и все будет чики пики!

Спасибо!!!
3 апр 12, 12:13    [12355986]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить