Исправление ошибок DBCC CHECKDB (1С, SQL) вручную

Публикация № 192648

Администрирование - Администрирование данных 1С - Тестирование и исправление

Если Вы наблюдаете сообщение "could not continue scan with nolock" и подобные ему - значит эта статья для Вас. В статье рассказывается, как поправить ошибки выданные DBCC CHECKDB вручную.

Все началось с того, что после проблем с жестким диском на сервере и "не совсем удачным" восстановлением рабочей базы данных 1С начала сообщать "could not continue scan with nolock" при проведении документов и закрываться с непоправимой ошибкой. Бэкап был, но не самый свежий, а данные терять не хотелось. Что же лучше делать?

Такое сообщение говорит, как правило, о том, что данные базы разрушены.

Первым делом нужно сделать резервную копию.

Далее запускаем в SQL Management Studio и выполняем DBCC CHECKDB. Выполняем ее так, чтобы данные не терялись, параметр REPAIR_ALLOW_DATA_LOSS оставим на случай совсем безнадежный.

Например, наша база называется Office

Выполняем следующие запросы:

ALTER DATABASE Office
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (N'Office', REPAIR_REBUILD) WITH NO_INFOMSGS
GO

Смотрим что сообщила проверка и видим множество сообщений примерно такого содержания:

Msg 8928, Level 16, State 1, Line 2
Object ID 814625945, index ID 1, partition ID 72057594157203456, alloc unit ID 72057594154844160 (type In-row data): Page (1:3605) could not be processed.  See other errors for details.

        The repair level on the DBCC statement caused this repair to be bypassed.
Msg 8939, Level 16, State 98, Line 2
Table error: Object ID 814625945, index ID 1, partition ID 72057594157203456, alloc unit ID 72057594154844160 (type In-row data), page (1:3605). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 12584969 and -4.

        Repairing this error requires other errors to be corrected first.
Msg 8976, Level 16, State 1, Line 2
Table error: Object ID 814625945, index ID 1, partition ID 72057594157203456, alloc unit ID 72057594154844160 (type In-row data). Page (1:3605) was not seen in the scan although its parent (1:6481) and previous (1:8859) refer to it. Check any previous errors.

        Repairing this error requires other errors to be corrected first.

...

CHECKDB found 0 allocation errors and 8 consistency errors in table 'DT3311' (object ID 1970106059).
CHECKDB found 0 allocation errors and 43 consistency errors in database 'Office'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (Office, repair_rebuild).

После проверки выполняем запрос для дальнейших операций с базой данных:

ALTER DATABASE Office
SET MULTI_USER;

Как восстанавливать поврежденные страницы писать не буду. Статья рассчитана на простое администрирование и поможет даже при модели Simple. Те, кто делают бэкапы логов журнала транзакций очень-очень часто, сюда заходить не будут. smiley Единственное условие - нам потребуется резервная копия (будем надеяться, что по теории вероятности самые свежие данные мы спасли без повреждений и бэкапы хоть иногда делали).

Как видим, все ошибки относятся к index id = 0 или index id = 1. Это говорит о том, что повреждены данные. Но не будем отчаиваться и воспользуемся резервной копией.

Обращаем внимание на сообщенную таблицу DT3311. Пытаемся открыть ее или прочитать данные запросом, возникает сообщение об ошибке:

SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xacafd5b7; actual: 0x21c9cf6a). It occurred during a read of page (1:8473) in database ID 8 at offset 0x00000004232000 in file 'E:\SQL_Data\Office.mdf'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Обращаем внимание, на какой строке таблицы останавливается запрос при полном показе содержимого таблицы в графическом интерфейсе. Например, он показал нам данные до строки 1915.

Проверяем: запрос Select top 1915 * From DT3311 выполняется, а Select top 1916 * From DT3311 - уже нет.

Смотрим резервную базу, поле IDDOC в таблице начиная со строки 1916, это документ с ID  '   1SP   '

В рабочей базе мы ничего с документом не можем сделать: ни открыть его в 1С, ни прочитать его табличную часть, ни удалить его. Что делать?

Предлагаю перебросить по кусочкам данные из разных баз (рабочей и резервной), удалить таблицу в рабочей базе, создать ее повторно и положить данные на место.

Создаем временную базу test, в ней создаем такую же таблицу DT3311 (для тех, кто не знает как это сделать быстро - картинки ниже на примере создания индексов) и выполняем запрос:

Insert into Test.dbo.DT3311
Select * From DT3311 Where IDDOC <> '   1SP   '

Запрос выполнился без ошибок. Это говорит о том, что других данных с "мусором" в этой таблице нет.

Данные о поврежденном документе берем из резервной копии. Выполняем запрос в резервной базе:

Insert into Test.dbo.DT3311
Select * From DT3311 Where IDDOC = '   1SP   '

Теперь в тестовой базе есть полные данные. Удаляем таблицу в рабочей базе, создаем заново и выполняем запрос:

Insert into DT3311
Select * From Test.dbo.DT3311

Пробуем прочитать полностью другие таблицы, ведь мы помним, что не проводились документы. Выясняется, что не могут прочитаться некоторые таблицы итогов регистров (RGXXX). В данном случае можно просто удалить эти таблицы, данные в них восстановит сама 1С. Заходим монопольно в 1С: Предприятие, сдвигаем ТА на самый первый документ, затем на самый последний проведенный документ. В результате итоги по регистрам пересчитаются.

Производим повторную проверку ошибок и убеждаемся в их отсутствии.

 

Беремся за другую базу, Acc.

Выполняем следующие запросы:

ALTER DATABASE Acc
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (N'Acc', REPAIR_REBUILD) WITH NO_INFOMSGS
GO

Для нее мы получили такой перечень ошибок:

Msg 8978, Level 16, State 1, Line 2
Table error: Object ID 1685581043, index ID 6, partition ID 72057594149928960, alloc unit ID 72057594147569664 (type In-row data). Page (1:17191) is missing a reference from previous page (1:19106). Possible chain linkage problem.

        Repairing this error requires other errors to be corrected first.
Msg 8928, Level 16, State 1, Line 2
Object ID 1685581043, index ID 6, partition ID 72057594149928960, alloc unit ID 72057594147569664 (type In-row data): Page (1:19106) could not be processed.  See other errors for details.

        The repair level on the DBCC statement caused this repair to be bypassed.
Msg 8939, Level 16, State 98, Line 2
Table error: Object ID 1685581043, index ID 6, partition ID 72057594149928960, alloc unit ID 72057594147569664 (type In-row data), page (1:19106). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 62916617 and -4.

        Repairing this error requires other errors to be corrected first.
Msg 8976, Level 16, State 1, Line 2
Table error: Object ID 1685581043, index ID 6, partition ID 72057594149928960, alloc unit ID 72057594147569664 (type In-row data). Page (1:19106) was not seen in the scan although its parent (1:20741) and previous (1:15201) refer to it. Check any previous errors.

        Repairing this error requires other errors to be corrected first.
CHECKDB found 0 allocation errors and 4 consistency errors in table 'SC59729' (object ID 1685581043).
CHECKDB found 0 allocation errors and 4 consistency errors in database 'Acc'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (Acc, repair_rebuild).

Тут картина совсем нестрашная. Данные не повреждены. Ошибки можно исправить удалением и созданием некластерных индексов.

Не забываем вернуть доступ к базе данных:

ALTER DATABASE Acc
SET MULTI_USER;

Для начала запишем скрипты на создание индексов (поочередно):

Затем удаляем индексы:

Затем выполним поочередно скрипты по созданию индексов в открытых окнах, попутно закрывая их (чтобы ничего не забыть).

Все исправили, производим повторную проверку и убеждаемся в отсутствии ошибок.

 

Оригинал статьи

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. astraborz 6 06.11.14 04:34 Сейчас в теме
2. maksa2005 312 01.01.16 12:08 Сейчас в теме
Решила мои проблема!!!!!!!!!СПАСИБО!
Оставьте свое сообщение

См. также

Решение проблемы с открытием периода ТиС

Тестирование и исправление v77::ОУ 1С7:ТиС Россия УУ Бесплатно (free)

Способ решения проблемы с открытием периода в конфигурации "Торговля и склад" версии 7.7 (вызванной регистром "Книга продаж")

05.06.2016    15761    0    zemskov    15    

Восстановление БД 1с 7.7 после шифрования вирусом файлом

Тестирование и исправление v7.7 1cv7.md Бесплатно (free)

После расшифровки антивирусом базы - у всех файлов отсутствует 20% начала файла. Способ восстановить данные с минимальными потерями

19.11.2012    18533    0    msvsoft    9    

Нарушена структура индексов таблицы CJ447

Тестирование и исправление v77::Расчет 1С7:ЗиК Россия Бесплатно (free)

При попытке войти в базу 1С:Зарплата и Кадры 7.7 стала возникать ошибка: "Нарушена структура индексов таблицы CJ447. Для восстановления запустите программу в монопольном режиме!". Каким образом удалось устранить эту ошибку - далее.

15.11.2011    16168    0    Nicholas    11    

Простейший способ очистить базу данных от мусора и исправить ошибки

Тестирование и исправление Чистка базы openconf v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Столкнулся с ситуацией: все проводки (бухгалтерия) удвоены! во всех отчётах, при этом проводки по документам верны. КРАЙ! заготовок на такой случай нет... Скопировал на флешку, а потом сделал вот такие шаманские действия:

15.12.2010    15601    0    vladimir_makarov    40    

Восстановление потерянных реквизитов документов v 7.7

Администрирование данных 1С Поиск данных Тестирование и исправление v7.7 1cv7.md Россия Бесплатно (free)

В ранее записанных и проведённых документах пропали неторые реквизиты. В результате в отчётах полный бардак. Как я решил эту проблему.

13.09.2010    11694    0    vladimir_makarov    8    

Обработки для печати и исправления реквизитов табличных частей документов (унив.)

Обработка документов Поиск данных Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Обработка предназначена для печати и исправления реквизитов табличных частей документов. Вид документа выбирается из списка. Предусмотрен механизм множественного отбора для реквизитов табличной части. Возможно указать какие реквизиты печатаются, какие - нет. Обработка универсальная и работает в любой базе.

28.09.2009    13885    0    swimdog    7    

Формирование счетов-фактур на аванс, записей книги покупок. (Проверка на ошибки при ручном оформлении и т.д.)

Обработка документов Тестирование и исправление Чистка базы v77::БУ 1С7:Бух БУ НУ НДС Бесплатно (free)

Удобный и проверенный временем инструмент. Обрабатывает различные нестандартные ситуации (возвраты авансов, пропущенные документом "Формирование записей книги покупок" зачеты и т.д.)

21.07.2009    18660    0    LostMicos    29    

Замена значений справочников

Универсальные обработки Тестирование и исправление v77::БУ 1cv7.md Бесплатно (free)

Элементарная обработка позволяющая заменить одно значение справочника на другое везде, где оно присутствует (шапки и табличные части документов, владельцы справочников, ссылки в других справочниках, константах, и в проводках, где может присутствовать в виде субконто). Обработка предназначена для компоненты 7.7 Бухгалтерия.

23.06.2009    10333    0    Лев    8    

ЗиК: Исправление задвоенных шаблонов проводок

Чистка базы Поиск данных Тестирование и исправление Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v77::Расчет 1С7:ЗиК БУ Бесплатно (free)

Обработка предназначена для поиска одинаковых шаблонов проводок конфигурации Зарплата+Кадры 2.3, поиска и замены ссылок на один из них.

21.10.2008    16843    0    poppy    6    

Очистка периодических реквизитов справочников

Чистка базы Обработка справочников Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Данная обработка предназначена для вывода в таблицу более поздних повторяющихся или "пустых" значений периодических реквизитов справочников для просмотра, анализа и последующего удаления «лишних» значений.

15.07.2008    24453    0    UrbSI    9    

Замещение помеченных на удаление записей справочников

Чистка базы Обработка документов Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

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

14.05.2008    8218    0    illarion    2    

Поиск одинаковых наименований в справочниках

Чистка базы Поиск данных Тестирование и исправление v77::БУ 1С7:Бух Бесплатно (free)

Обработка по кнопке "Поиск одинаковых наименований" ищет одинаковые по наименованию позиции справочника (Сотрудники или Контрагенты - по выбору!!!). По кнопке "Сформировать" перекодирует справочники в нормальный красивый вид!!! Писал быстро, так что не ругайте - мож кому пригодиться...

19.02.2008    9595    0    alegator    4    

Замена вида расчета

Поиск данных Тестирование и исправление Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v77::Расчет 1С7:ЗиК Бесплатно (free)

Замена вида расчета. Иногда пользователи заводят произвольные виды расчетов, хотя для тех же целей имеются предопределенные и наоборот. Например премии вводили предопределенным "Премия разовая", а потом не устраивает как она входит в расчет среднего. Данная обработка призвана исправить ситуацию. Не забывайте делать архивных копий!

18.02.2008    13942    0    Kapitan911    6    

Сравнение производительности 1с под DBF-ADS-CodeBase-SQL.

Тестирование и исправление v7.7 1cv7.md Россия Бесплатно (free)

Представлено сравнение выполнения таких задач в 1с, как заполнение, проведение и отмена проведения документа в режиме сервера терминалов через Virtual PC на одном ПК.

11.02.2008    12950    0    tarasenkov    6    

Чистка справочников

Чистка базы Поиск данных Тестирование и исправление v7.7 1cv7.md Бесплатно (free)

Обработка позволяет удалять дублированные элементы на которые уже существуют ссылки.

29.11.2007    8331    0    Kolek    10    

Восстановление после операции Удаление помеченных объектов

Тестирование и исправление v7.7 1cv7.md Россия Бесплатно (free)

Восстановление после операции Удаление помеченных объектов

21.08.2007    10059    0    MACTEP    6    

Проверка и исправление ( перенумерация ) неуникальных и некорректных номеров

Обработка документов Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Поиск неуникальных (в соответствии с периодичностью, заданным нумератором) и некорректных (несоответствие пробелов в конце) номеров документов, исправление простое ("УстановитьНовыйНомер") и бинарным поиском, возможность сохранить прежнюю числовую часть, задание количества пробелов в конце номера, изменение префикса перед перенумерацией.

07.08.2007    26349    0    Shaman100M    25    

Универсальная обработка по поиску дубликатов в справочниках

Чистка базы Поиск данных Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Универсальная обработка по поиску дубликатов в любых справочниках по любым реквизитам!!!Бомба!

15.05.2007    16141    0    denukraine    27    

Планировщик задач для 1С. Zolushka

Распределенная БД (УРИБ, УРБД) Администрирование данных 1С Тестирование и исправление v77::ОУ v77::БУ 1С7:Комплекс 1С7:ТиС Россия УУ Бесплатно (free)

Позволяет в заданное время запускать задания для 1Сv77 Торговля и склад (может работать и с комплексной конфигурацией). Проводит необходимое регулярное обслуживание базы: Восстанавливает последовательности документов. Переносит "на вчера" даты запрета редактирования документов. Тестирует и исправляет ИБ. Проводит синхронизации распределенных ИБ. Делает резервные копии базы. Позволяет запускать другие внешние обработки. Итогами работы за ночь отчитывается по электронной почте. Удобная программа для не замороченных на программировании пользователей и администраторов. Крайне простой и интуитивно понятный интерфейс. Она Вам понравится.

06.10.2006    21050    0    recommend    36    

Замена элементов справочников по всей базе

Чистка базы Поиск данных Тестирование и исправление v77::БУ 1С7:Бух Бесплатно (free)

Заменяет один элемент справочника на другой, после чего заменяемый элемент можно удалить.[b] ДЛЯ ТЕХ, КТО В ТАНКЕ, обработка заточена под компоненту "Бухгалтерский учет", и ДОКУМЕНТЫ НЕ ПЕРЕПРОВОДИТ.[/b] Кто сталкивался с гиговыми базами и знает, что такое "закрытый период", тот поймет и оценит.

30.08.2006    14611    0    defini    12    

Комплект обработок (ПЕРЕНОС ДАННЫХ, МАССОВАЯ ОБРАБОТКА, ПОИСК)

Универсальные обработки Тестирование и исправление 1С7.7<->1C7.7 v7.7 1cv7.md Бесплатно (free)

Комплекс обработок для групповой ОБРАБОТКИ/ПЕРЕНОСА (выгрузка/загрузка)/ПОИСКА объектов справочников и документов

17.07.2006    17058    0    zalst    18    

[DELOPER] Массовое удаление выборочных проводок из ручных операций

Обработка документов Чистка базы Тестирование и исправление v77::БУ 1С7:Бух Бесплатно (free)

Обработка предназначена для работы в "связке" со стандартной "Обработкой документов" из типовой бухгалтерии (меню-сервис-обработка документов). Типовая обработка бухгалтерии позволяет удалить все документы по контрагенту, но что делать, если контрагент упоминается в проводках ручных операций, причем операция - может быть одна, а проводок с разными клиентами в ней - много...? Предлагаемая обработка как раз и решает эту проблему: "вычищает" ненужных клиентов из таких ручных операций. При этом м.б. удалены упоминания только по конкретному договору клиента, или по клиенту в целом (без внимания на договора). Можно наложить доп.фильтр по вхождению строки в поле комментария ручной операции. Подробное описание - см.внутри архива.

15.07.2006    17468    0    CheBurator    7