При обновлении конфигурации вылетела 1С. После чего наотрез отказалась входить в базу. При этом в конфигураторе выдавалось сообщение "Внимание!!! При обновлении данных, после последней реструктуризации, произошла критическая ошибка. Повторить обновление?" Потом выходило сообщение "Обнаружена незавершённая операция сохранения конфигурации. Для продолжения необходимо завершить операцию". Горела кнопка Ок - на этом работоспособность конфигуратора и базы заканчивалась.
чиню подобным скриптом
GO
DROP TABLE [ПОЛОМАНАЯ_БАЗА].[dbo].[Config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ПОЛОМАНАЯ_БАЗА].[dbo].[Config](
[FileName] [nvarchar](128) NOT NULL,
[Creation] [datetime] NOT NULL,
[Modified] [datetime] NOT NULL,
[Attributes] [smallint] NOT NULL,
[DataSize] [int] NOT NULL,
[BinaryData] [image] NOT NULL,
PRIMARY KEY CLUSTERED
(
[FileName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
INSERT INTO [ПОЛОМАНАЯ_БАЗА].[dbo].[Config]
SELECT * FROM [БЭКАПНАЯ_БАЗА].[dbo].[Config]
GO
(16)Совершенно верно, если на пальцах - вычищаем таблицу с конфигурацией в рухнувшей базе и записываем туда такую же но рабочую конфигурацию из другой неважно какой базы...
Можно склеить пункт 2 и 3, предварительно убедивщись что таблица ConfigSave - пустая...
Use Base2009
go
Delete From [DBO].[Config]
go
insert into [base2009].[Dbo].[Config] select * from [BaseCopy].[Dbo].[Config]
go
(14) Возможно побыстрее будет - но в общей сложности пункт 2 + 3, на конфе УПП котоая весит в cf-файле 365 мб занял около 10 секунд, что для меня не очень критично.
(4) Спасибо за скрипт! База запустилась. Работает. Однако при попытке внести в нее изменения - снова возникает ошибка нарушения целостности структуры. Как победить? Сейчас приходится изменять дочернюю конфигурацию и скриптом заливать изменения в основную
Совсем недавно абсолютно похожая ситуация случилась и у меня
УПП 1.3.19 PostgreSQL 8.3.8
при обновлении конфигурации БД упал сеанс конфигуратора.
После этого случился сабж.
Очень помогла эта статья - но сделал немного по другому
через PG_ADMIN
1. copy config to '/home/user/config_1.txt в упавшей базе
2. copy config to '/home/user/config_0.txt в базе поднятой из последнего бэкапа
3. delete from config в упавшей базе
4. copy config from '/home/user/config_0.txt в упавшей базе
базу удалось восстановить без потерь информации
Повезло в том что при злополучном обновлении конфигурации менялась только прикладная логика
через PG_ADMIN
1. copy config to '/home/user/config_1.txt в упавшей базе
2. copy config to '/home/user/config_0.txt в базе поднятой из последнего бэкапа
3. delete from config в упавшей базе
4. copy config from '/home/user/config_0.txt в упавшей базе
базу удалось восстановить без потерь информации
Повезло в том что при злополучном обновлении конфигурации менялась только прикладная логика
я извиняюсь, а можете тупому объяснить вот эту часть строки '/home/user/config_1.txt ?
у нас просто ОС Windiws, как мне там написать, пример можете прислать на будущее?
а так у меня получилось восстановить эту таблицу такими действиями:
- в pg_admin delete from config
- открыл таблицы копии базы, там config сделал backup
- и у таблицы config упавшей базы сделал restore
если делать без удаления, то выдает ошибку что запись такая то уже есть
Спасибо за статью! Теперь можно более спокойно прыгать с парашютом (обновлять конфу, имея какоё-либо БЭКАП), имея ещё и запасной парашют (эту методику).
Для читателей: если у Вас не та самая критическая ситуация, описанная в статье, то рекомендую первым делом прочитать пункт 5! В нём наиболее важная информация, которая может помочь Вам избежать опыта автора.
А в целом - респект!
При обновлении конфигурации конфигуратор завис, windows сказал что приложение будет закрыто. После этого в базу попасть никак не мог.
Пытался восстановить по инструкции http://www.gilev.ru/1c/81/restore/, но ситуация не изменилась.
Так как это была копия рабочей БД решил поэкспериментировать.
Сравнил чем отличаются таблицы Config битой базы от целой. В битой базе были 2 записи, которых небыло в целой, с полями FileName = 'commit' и FileName = 'dbStruFinal' binaryData 0x0. Никакой информации об этих полях не нашел. Удалил эти записи. Запустил конфигуратор, он выдал предупреждение "Внимание!!! При обновлении данных, после последней реструктуризации, произошла критическая ошибка. Повторить обновление?" нажал "Да" и все обновилось.
Не знаю на что еще могло повлиять удаление.
23.
free-lancer-2018
16713.04.12 18:47 Сейчас в теме
Полезная ссылка, спасибо. Один раз было, что сервер 1С обрубил соединение в момент сохранения конфигурации. В итоге в скуле получил "невосстановимая ошибка БД".
Рекомендую при подобной ситуации попробывать восстановить базу исходя из последнего опыта и сноски. Все просто и быстро. Не нужны копии и скрипты. Правда как и в первом случае 100% успешного результата не обещаю но попробывать конечно же стоит...
Спасибо огромное за публикацию. Воспользовался ей повторно и особенно сноской. очень помогло, действительно описанным способом можно легко восстановить базу и хотя бы сделать бекап.
28.
IT_PROGRAMMIST
15022.04.12 21:53 Сейчас в теме
Хорошая статья.До этого была та же проблема. Думал смерть моя пришла).Выручила копия базы. Зато, после этой проблемы слежу за снятием копии ежедневно)))
Автор написал, что на 81 таких проблемм не было, но мне кажется что было, да еще как. Происходили подобные сбои в случае неоднократного динамического обновления, без выгонялки пользователей. После одного из таких сбоев, была забавная ситуация, пускало в конфигуратор и в предприятие одного-двух пользовтаелей, если больше базы висла "наглухо", ни выгрузку ни ТИИ не отрабатовало, приводило к зависанию. Приведенным в статье способом, базу поднять не удалось, к счастью потерялось с прошлого бэкапа 2-3 часа. С тех пор больше никогда не использую динамическое обновление больше 1-го раза в день, даже по-мелочи. Честно говоря надеялся, что эти проблеммы ушли в 82, но видать нет. Еще удивляет, когда я искал подобную проблемму пару лет назад на форумах, то такой ситуацией сталкивались единицы, а в коментах у этой стать чуть ли не каждый второй пишет о подобной проблемме, лично у меня за крайние 2 года больше не было таких косяков, к счаcтью.
(29) Just, 3 года обновлял динамически на 8.1 - не было проблем ни разу... а на 8.2 - за год - 2 раза падала, один раз успешно восстанавливал как описано в статье... да вобщем-то 8.3 готовится... )))
Спасибо Огромное!!!. все аналогично как и у других: было очень страшно и руки до сих пор трясутся, плюс я завтра в опуск, поэтому было вдвойне страшно.
копия есть ночная, но она меня не сильно бы спасла, как раз сегодня менеджеры решили перебить кучу доков и в 10 рук непрерывно с сомого утра стучат по клавишам.
все больше никаких динамических
восстановил по вышеописанному скрипту:
Use Base2009
go
Delete From [DBO].[Config]
go
insert into [base2009].[Dbo].[Config] select * from [BaseCopy].[Dbo].[Config]
go
Была практически такая ситуация. Помог вовремя сделанный бэкап до обновления. Бэкап рулит )). Спасибо за статью. Теперь буду еще более готов ко всяким таким вещам.
Спасибо огромное! Реально спасло. Работает на MS SQL 2008 R2 64x. Данные сохранились все; единственно во время первого запуска конфигуратора в заголовке появился <!> (несмотря на то что предварительно была очищена ConfigSave). ну и сохранение конфигурации происходило очень долго ~ 5 минут. Вобщем, все по делу - спасибо.
Use Base2009
go
Delete From [DBO].[Config]
go
insert into [base2009].[Dbo].[Config] select * from [BaseCopy].[Dbo].[Config]
go
Шедевриальный скрипт!!!
Шикарно просто, ОГРОМНЕЙШЕЕ СПАСИБО за идею, до сих пор шок, как ваще такое может случиться....добавил в оборотно-сальдовую ведомость номера страниц блин........
Есть новое решение проблемы, для тех у кого не сохранилось базы с такой же конфигурацией;
1. Очищаем configsave
2. delete from config where FileName = 'commit'
3. delete from config where FileName = ' dbStruFinal'.
Запускаю 1С, все работает. Потом попробовал сохранить конфигурацию, все сохранилось, работаем уже на такой базе в течении 5-ти часов, полет нормальный, вариант кстати очень быстрый
Спасибо большое за статью, взял конфигу из центрального узла (отличающуюся но без изменения в метаданных), создал пустую базу, загрузил. Запустил код - все заработало!
Для себя завел правило перед любым обновлением конфы сначала Бакап, имхо ведь можно так запороть базу что и простое перезаливание конфы из другой базы не поможет.
можно тогда написать процедуру/функцию которая будет конектится к своей SQL-базе и делать что-нить типа
insert into [Dbo].[Config]<Дата><Время> select * from [Dbo].[Config]
типа быстрый бекап cf-ника, ну а дальше мысль развивайте кто как хочет: можно на кнопку прикрутить к админскому интерфейсу, или программно определять, что это первый запуск(удачный) после пересборки(правда не знаю как, но мысль мне нравится). База при этом будет пухнуть и ее придется чистить переодически, но это уже другая история и всего лишь накладные расходы... Можно например создать под эти таблицы отдельный data-файл или вообще отдельную базу, не 1С-ную, под эти нужды(выдыхай борёр, выдыхай...)
Кому мысль нравится - ставим "+" коментарию не стесняясь.
Автору спасибо! Статья оказалась своевременной.
Опишу свой случай. Конфигурация: ЗУП 2.5.51.1. Размер базы 16 Гб.
На днях произошла ситуация - делал динамическое обновление. Спустя 2 дня 2 сотрудника пожаловались,
что при формировании расчетных листков программа вылетает с сохранением дампа. Причем на других компьютерах под их учетками этого не происходило. Остальные пользователи не жаловались.
Пытался имитировать на своем компьютере. Парадоксов было куча.
В рабочей базе все работало. В текущей (получасовой) копии - вылетала.
При исправлении и тестировании базы конфигуратор закрывался.
Пришел к выводу, что при сохранении в базу любых изменений в структуре конфигурации конфигуратор закрывался.
С копиями баз проблем не было - были за каждый день.
Перепробовав все способы наткнулся на эту статью.
Но... перенос таблицы dbo.Config не дал результата, зато показал куда копать.
Спасло перенос 3-х таблиц: Config, DBSchema, Params
http://www.forum.mista.ru/topic.php?id=557213&page=1 Так что автору rs_trade так же огромное спасибо!
Сегодня статья реально спасла, база умерла при обновлении - сделали все по инструкции - ожила как спящая красавица, так что спасибо человеку за его первую статью, дай бог не последнюю.
Ребята, подскажите, базу я восстановила через HxD, убрала из таблицы confif "commit". Только сейчас другая проблема. Конфа базовая, загружает обновление, начинает обновлять но обновление не заканчивает. Загружает конфигурацию и выкидывает служебное окно, что для обновления все готово, обновить или при следующей загрузке. И так бесконца. Пробовала обновить вручную, через конифигуратор выдает ошибку Неправильный путь к файлу 'v8srvr://dbeng8/f05133110/Config. Пробовала реструктуризацию, после этого ошибка формата потока и база перестает загружаться.
Помогите пжл, уже голову сломала.
На терминалке кончилась память в момент динамического обновления. И дальше все по симптомам...
Догадывался, что так можно сделать, но без подтвержденного опыта не рискнул бы. А так юзеры курили около часа, пока тестовая копия жрала хранилице для создания нового прототипа config.
Большое спасибо!
И, нафиг-нафиг, поставлю ночное задание:
use my_1c_database_name
declare @name varchar(64)
select @name = name from sys.Tables where name = 'config_backup'
if @name = 'config_backup'
drop table config_backup
select * into config_backup from config
Вот спасибо огромное! 5 минут и все готово. Учетом поиска этой статьи :) Бэкп был, но база тестовая и хотелось попытаться восстановить результаты до последнего изменения в течении дня хотя бы. В результате выяснилось, что сохранен уже самый последний вариант.
И еще небольшое наблюдения по подобным проблемам: лучше не сохранять сразу и рабочую конфигурацию, и конфу базы данных. Т.е. лучше сначала сохранить основную конфигурацию. А уже только после этого конфигурацию БД. Так ошибки появляются на порядок реже (если вообще появляются).
спасибо автору!!! База умерла при обновлении и отказывалась возрождаться, уже готовились к худшему (восстановление из бекапа с потерей данных за полдня), а тут ваша статья очень вовремя нашлась и жизнь наладилась ))). СПАСИБО!!!
Олег, огромное тебе спасибо!
Выручил, уже не знал что делать с базой, вылетела в конце рабочего дня, а бэкап делается ночью, целый рабочий день 170 пользователей мог потеряться, меня бы расстреляли.. ))
Твой пост, реально помог.
Мда, спасибо огромное за инфо. Случилась такая же проблема при динамическом обновлении периферийной БД, включающем незначительные изменения прав на объекты конфигурации.
После возникновения ошибки заметил зависшее несколько дней назад фоновое задание. думаю связано именно с этим. Так что перед обновлением убедитесь в отсутствие оных и включайте блокировку регламентных заданий.
Мне в такой ситуации помогло:
1. Очищаем configsave
2. delete from config where FileName = 'commit'
3. delete from config where FileName = ' dbStruFinal'
(61) romak78,
Спасибо, помогло.
Согласен с Вами. В корректно обновленной конфигурации базы данных (таблица Config) таких строк быть не должно.
Пустая таблица ConfigSave означает, что она основная конфигурация не отличается от конфигурации базы данных.
Уйма времени ушла на создание бекапа. Минут 5 выполнялся запрос:
Use Base2009
go
Delete From [DBO].[Config]
go
insert into [base2009].[Dbo].[Config] select * from [BaseCopy].[Dbo].[Config]
go
Очень-очень-очень помогла ваша статья, восстанавливали тестовую базу, конфигурацию, вылетела при обновлении и возникла описанная в статье ошибка, но благодаря вашей статье все хорошо
Рад что кому-то помог еще. Да и самому себе опять на днях пришлось помочь ) Переехали в новый офис а тут связь плохая с сервером. Ну и при сохранении конфы рухнула база опять. Восстановил минут за 15 без бэкапа - минут 12 ушло на то чтобы пользователей оставшихся выгнать
10113064 Обновление конфигурации базы данных
Проблема:
Если процесс принятия изменений после обновления конфигурации базы данных был прерван, то на данную информационную базу может быть невозможно запустить ни в Предприятии, ни в Конфигураторе с различными сообщениями об ошибках или с аварийным завершением работы клиентского приложения или процессов сервера Предприятия.
Дата публикации:
2012-09-20
Вообще в configsave хранятся только измененные объекты, не вся конфигурация.
При обновлении конфигурации записи из configsave копируются в config замещая аналогичные записи, потом таблица configsave очищается, а в таблице config записи где FileName = 'commit' и FileName = 'dynamicCommit' удаляются.
Мне в такой же ситуации когда во время сохранения конфигурации произошел сбой помогло:
1. В моем случае таблица configsave была пустая, если бы была полная - надо было очистить.
2. delete from config where FileName = 'commit'
3. delete from config where FileName = 'dynamicCommit'
P.S.
Другие записи, в том числе, где FileName = 'root', FileName = 'DynamicallyUpdated', FileName = ' version', FileName = 'versions' трогать не надо.
Можно удалить запись где FileName = 'dbStruFinal', но она в принципе не влияет на загрузку, удалится сама при очередном обновлении.
Читал с месяц назад эту статью, сегодня пригодилось!!! Спасибо! Нам помогло!
Во время динамического обновления вылезла такая же ошибка на 1С:УПП 8.2; MS SQL 2008;
восстановили другую конфигурацию по данному методу, кстати она тоже была изменена...Взлетело!
Доброго времени суток! Попробовали реализовать сие на своей "горе базе". Зашли в таблицу config и грохнули запись commit. После этих приседаний предприятие работает, а вот в конфигуратор входить отказывается! Думает и в итоге выдает "Перезапустить конфигуратор?" Жмешь "нет", просто закрывается, жмешь "да" все тоже самое! Ждем обеда, будем полностью очищать таблицу.....оооочень надеемся что поможет. Если у кого была подобная проблема, прошу откликнуться