Переезжали мы на новый сервер. На нем SQL и 1C. В сравнении со старыми был намного круче. И тест Гилева это тоже подтвердил: против 10-15 на старых серверах выдавал 39. Поэтому мы сразу после покупки перенесли базу и начали работу.
Но в какой-то момент что-то пошло не так — пользователи стали жаловаться на медленную работу. Произвели определенные настройки сервера и служб (какие — тема отдельного поста) и решили перезагрузить сервер, благо скорость перезагрузки — 2 минуты (на других серверах до 10 доходило). После этого при входе в 1С получаем следующее сообщение:
«Внимание!!! При обновлении данных, после последней реструктуризации, произошла ошибка. Повторить обновление?» «Да, Нет»
После нажатия кнопки «Да» появляется следующее:
«Обнаружена незавершенная операция сохранения конфигурации. Для продолжения работы необходимо завершить операцию.»
Первое, что решил сделать — CHECKDB на в Managment Studio — после 2х часов ожидания (база 500 ГБ) — все ОК.
На просторах сети нашел информацию, что такая же ошибка бывает при динамическом обновлении.
Решения, предложенные в сети сходу не помогли, но вкупе с другими действия дали результат. Итак, что я делал:
Решение:
sp_configure ‘allow updates’, 1
reconfigure with override
go
2. Переводим базу в режим восстановления
alter database set EMERGENCY, SINGLE_USER
3. Выполняем тестирование базы:
dbcc checkdb(‘db_name’, REPAIR_ALLOW_DATA_LOSS)
4. Выводим базу из режима восстановления:
alter database set ONLINE, MULTI_USER
5. В принципе, если уверены что с самой базой все ок, то можно не делать 2-4 пункты. Далее выполняем два запроса в профайлере SQL:
delete from config where FileName = ‘commit’
delete from config where FileName = ‘ dbStruFinal’Эти записи и отвечают за динамическое обновление — можно не бояться их удалять.
В рабочих версиях баз запросы:
select * from Config WHERE FileName = ‘commit’
select * from Config WHERE FileName = ‘dbStruFinal’
будут пустые.
6. возвращаем настройки:
sp_configure ‘allow updates’, 0
go
7. После этого удалось запустить конфигуратор и база заработала.
Также база может заработать после удаления первого флага.
При работе в «1С:Предприятие» может всплыть следующее сообщение: «Для работы с новой версией 1С:Предприятия должно быть выполнено преобразование информационной базы». Почему появляется это окно и как можно устранить ошибку?
В большинстве случаев причина появления окна – недавний переход программы с устаревшей версии платформы на более новую. У разных платформ информационная база 1С формируется по-своему и принимает разный состав. Всё, что требуется сделать – произвести конвертацию базы данных (структура которой соответствует устаревшей платформе) в самый новый формат.
Процедура эта несложная, однако, сначала рекомендуется создать резервную копию базы, на случай, если во время конвертирования произойдёт ошибка (например, отключится компьютер, в результате информационная база 1С , как и сама программа, могут повредиться). Затем примените следующий алгоритм действий:
Откройте базу данных – она должна запуститься без проблем. Если после преобразования окно с ошибкой продолжает появляться, можно попробовать выполнить процедуру повторно. В случае, когда и это не помогает, необходимо обратиться к программисту 1С. Иногда при выполнении операции программа может подвисать. Не надо в этот момент предпринимать никаких действий.
Важно! Информационная база 1С , преобразованная последней версией программы, не может быть открыта на предыдущих версиях.
Предыстория
Нужно нам было создать новый регистр сведений "ЖурналОтслеживанияСообщений". Добавили в конфигурацию, загрузили данные. Затем пошла работа по оптимизации. Пришлось менять структуру регистра. Но не тут-то было!
Тут все ясно. Записи стали неуникальными, нужно их удалить!
Самой простой способ это:
НоваяЗапись = РегистрыСведений.ЖурналОтслеживанияСообщений.СоздатьНаборЗаписей(); НоваяЗапись.Записать();
Таким методом мы очистим регистр в 1С очень быстро (но это будет и нашей ошибкой).
Ошибка
Казалось бы, в регистре пусто, и можно обновлять 1С. Не хочу вас удивить, но будет снова ошибка:
Что же представляет ошибка:
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name "dbo._InfoRgChngR34546NG" and the index name "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". The duplicate key value is (0x00000011,d7,, Sep 27 4015 10:22PM, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1
Пояснение
Давайте разберемся со структурой SQL. У нас есть регистр "ЖурналОтслеживанияСообщений", он в SQL находится в таблице "_InfoR34546". Проверить это вы можете специальными обработками или методом "тыка" (нам это не придется делать т.к. в тексте ошибки уже указано название таблицы).
А теперь поясню, что же произошло. Когда мы загрузили данные в регистр, то в SQL они попали в таблицу " _InfoR34546". Когда мы кодом в 1С очистили таблицу, то эти данные удалились из таблицы " _InfoR34546", но они скопировались в таблицу "_InfoRgChngR34546". Это и стало проблемой.
Решение
Для решения возникшей проблемы нам понадобится очистить SQL таблицу " _InfoRgChngR34546".
Расскажу на примере "Microsoft SQL Server Management Studio". Заходим в "Management Studio". Находим нашу базу, открываем вкладку таблиц, кликаем на любую и жмем кнопку "Новый запрос":. Теперь набираем запрос
Truncate table "_InfoRgChngR34546 "
У вас может быть и другая таблица! Не забывайте!
И жмем выполнить или клавишу "F5". Вот такой должен быть результат:
Все, теперь можно спокойно обновлять 1С, и ошибки не будет!
Песочница
авторитет 18 сентября 2013 в 15:24В свое время столкнулся с проблемой: при обновлении конфигурации из хранилища, произошел сбой, и закрылась 1С.
Как выяснилось позднее – произошло разрушение хранилища конфигурации и при обновлении конфигурации из хранилища слетела и конфигурация БД. Подобная ошибка возникала прежде при динамическом обновлении ИБ.
Т.к. данная проблема возникала не однократно решил поделится вариантом лечения.
При следующем запуске конфигуратора вышла ошибка: «Внимание!!! При обновлении данных, после последней реструктуризации, произошла ошибка. Повторить обновление?» при утвердительном ответе получаем сообщение: «Обнаружена незавершенная операция сохранения конфигурации. Для продолжения работы необходимо завершить операцию» после этого приложение закрывается.
При разборе данной проблемы было найдено несколько вариантов решения проблемы, каждое решение работает в разных случаях.
Вариант 1 (при наличии бэкапа SQL c копией с идентичной конфигурацией):
Разворачивается копия ИБ, и выполняется запрос следующей конструкции:
USE
GO
DELETE FROM ..
GO
INSERT INTO .. SELECT * FROM ..
GO
При этом пере заливается таблица в которой хранится конфигурация ИБ. Желательно после данной операции выполнить тестирование и исправление ИБ.
Вариант 2 (при отсутствии бэкапа):
К данному варианту обратились как к последней соломинке. Т.к. конфигурация была в стадии разработки и про бэкап немного позабыли понадеясь на хранилище.
В базе удаляются две записи из таблицы «Config» по значению в столбце «FileName» - dbStruFinal и commit
Выполняется следующий запрос:
USE
GO
DELETE FROM .
WHERE FileName = "dbStruFinal"
GO
DELETE FROM .
WHERE FileName = "commit"
GO
Как ни странно база оживает.
Теги: 1с предприятие 8.2, SQL, восстановление конфигурации
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит