Добрый день уважаемые форумчане !!!
Прошу помощи у гуру!!!
При обновлении БП Базовая с релиза 2.0.65.48 на 2.0.66.6 возникла ошибка - при этом на 2.0.65.48 работали на 8.2, а обновляли уже на 8.3.
При обновлении базы вышла Критическая ошибка ... Затем в базу нельзя было зайти (ни в конфигуратор ни в режим предприятрия ...)
Затем за дело взялся я ... и поначалу совершил ошибку (не сделал копии) а сразу запустил chdbfl.exe - как я прочитал зачастую она может "исправить" базы некорректно ...
В опять же программа не стала заходить (ни в конфигуратор ни в режим предприятрия) - только выдавалась ошибка (ошибка формата потока)
С помощью утилиты Tool_1CD выгрузил конфигурацию БД и Основную ... Узнал версию Конф БД - Таблица Config (Загрузил в чистую базу) - БП 2.0.66.6 Базовая;
Версию Основной конфигурации Таблица Config_Save при помощи загрузки в чистую базу узнать не удалось - при загрузке конфигурации ошибка - обнаруженна незавершенная операция сохранения конфигурации; узнал у владельца базы - была 2.0.65.48.
Далее делал так
С помощью Tool_1CD выгрузил таблицу Params из чистой базы в базу с ошибкой (обе конечно версии 66.6).
Наконец то можно было зайти в конфигуратор ...
Только перед запуском - при обновлении данных после последней реструктуризации произошла ошибка. Повторить Обновление ? нажал да зашел в Конфигуратор.
Далее выгружал загружал базу;
ТИС делал при Реиндексации - ошибка Обнаружено несоответствие сруктуры таблиц ИБ заданному режиму совместимости ...
ТИС делал при Реструктуризации - Вылетала ... иногда писала что нет таблицы Const8883 В схеме таблиц БД.
Загружал таблицы ConfigSave DBSchema Params Результат борода ...
Загрузил на SQL эту поломанную базу; воспользовался скриптом. Скрипт сравнивал таблицы Базы с ошибкой , и пустой базы того же релиза. (исходник - http://infostart.ru/public/61123/)
SEL ECT * FR OM
(SEL ECT Base1_Object.Name as TableName, Base1_Columns.Name as ColumnsName FR OM Base1.Sys.columns as Base1_Columns
INNER JOIN Base1.sys.objects as Base1_Object
ON Base1_Object.Object_id = Base1_Columns.Object_id
AND Base1_Object.type in (N'U')) as Base1_Structure
FULL OUTER JOIN
(SELECT Base2_Object.Name as TableName, Base2_Columns.Name as ColumnsName FR OM Base2.Sys.columns as Base2_Columns
INNER JOIN Base2.Sys.objects as Base2_Object
ON Base2_Object.Object_id = Base2_Columns.Object_id
AND Base2_Object.type in (N'U')) As Base2_Structure
ON Base1_Structure.TableName = Base2_Structure.TableName and
Base1_Structure.ColumnsName = Base2_Structure.ColumnsName
WH ERE Base1_Structure.ColumnsName IS NULL OR Base2_Structure.ColumnsName IS NULL
Как писал создатель и как я понял скрипт показывает какие таблицы имеют разные индексы (при том что должны иметь одинаковые - так как конфигурации одинаковые) И если такие таблицы есть то реструктуризация полностью не прошла ...
Вот результат
Такие таблицы есть ... реструктуризация не прошла ... как я понимаю мне нужно для таблиц ошибочной базы вручную / программно изменить индексы для соответствия этих таблиц объектам конфигурации ...
Правильно я понимаю ? и если да то подскажите как мне это сделать?
Заранее огромное спасибо !!!
так же пробовал скрипты
DBCC CHECKDB ('Demo1', REPAIR_FAST)
DBCC CHECKDB ('Demo1', REPAIR_REBUILD)
DBCC CHECKDB ('Demo1', repair_allow_data_loss)
DBCC CHECKALLOC ('Demo1')
Не помогало ...
ЗЫ Может где то неправильно выразился и неправильно что либо описал ... сильно не пинайте - первый раз сталкиваюсь с такой задачей ...
Был тоже глюк на этом обновлении,пришлось не сразу на 2.0.66.6 а на более низкую обновиться,благо была копия. Контрольный вопрос,первоначально обновлялись автоматически или вручную,если автоматически,то есть шанс что создалась копия