Америку не открою, просто расскажу как быстро создаю новую периферийную базу для SQL.
1. Сначала через конфигуратор в центральной базе заводим новую периферийную базу
2. Через Enterprice Manager, в центральной базе в таблице _1SBDSET для новой базы меняем DBSTATUS c «N» на «C», и DBFMODE c «1» на «3» (активируем ее)
3. Отключаем (Detach Database) центральную базу в Enterprice Manager, копируем файлы базы данных .MDF и .LDF туда, где будет распологаться периферийная база и подключаем там ее (Attach Database), (не забываем центральную тоже назад подключить).
4. Через Query Analizer периферийной базы запускаем скрипт (Меняем только номер пер. базы 1С, ну и имя базы SQL)
use
declare @Nom char(3)
declare @NomCentr char(3)
select @NomCentr = dbsign from _1SDBSET where dbstatus = ‘M’
set @Nom = ‘048’ — МЕНЯТЬ НОМЕР на НОВОЙ НОМЕР ПЕРИФ. БАЗЫ ЗДЕСЬ!!!! (в этом случае 048)
delete from _1SDBSET
where dbsign <> @NomCentr and dbsign <> @Nom
update _1SDBSET
set dbstatus = ‘P’
where dbsign = @NomCentr
update _1SDBSET
set dbstatus = ‘M’
where dbsign = @Nom
update _1SSYSTEM
set DBSIGN = @Nom
truncate table _1SDWNLDS
truncate table _1SUPDTS
—DBCC SHRINKDATABASE(,5) — при желании сожмем базу (раскомментировать в этом случае)
—exec sp_changedbowner ‘1cuser’ — и если база поключилась с другим владельцем, сменим на нужного
5. Радуемся, база готова к работе! идем крутить константы и др 😉
Доброго времени суток! Решение хорошее применена хитрость 🙂 в принципе толково но есть несколько ньюансов если кому будет интересно поднимайте ветку расскажу да и умных комментариев люблю почитать буду рад пообщатся 🙂
Может идиотский вопрос (просто собираюсь попробовать), а как потом автообмен будет? Т.е. выгрузка из основной базы (она около 60 гиг весит) будет только изменений?
(2) alexchebanenko, да, когда мы создадим новую базу через конфигуратор и активируем ее (_1SBDSET для новой базы меняем DBSTATUS c «N» на «C») то для новой периферийной базы количество объектов для выгрузки будет — 0. Соответственно при обмене из основной базы выгружаться будут только изменения произошедшие с момента клонирования базы.
(3) Спасибо! На выходные попробую. А то на неделе поставили задачу создать 3 переферийки, а на тестах одна только выгрузка из основной занимает около 5 часов. Благодаря Вашему скрипту время уменьшится до 30-40 минут для создания одной полноценной переферийки.
(4) alexchebanenko, еще перед этим действом есть смысл «зашинковать» базу чтобы уменьшить размер файлов базы и лога.
Я обычно перевожу «Recovery model» на «simple» и запускаю команду
DBCC SHRINKDATABASE(ИМЯБАЗЫ,10)
и потом при создании периф. баз основное время (97%) занимает простое копирование файлов..
Не удержался — попробовал. Все великолепно сработало! Взял архивную ночную копию. Только один нюанс — в созданной переферийки отключен автообмен… В основной все ок.
(5) У меня перед бэкапом все это происходит. Бэкаплю средствами SQL.
Извините, разобрался с (6). Т.к. я взял ночную копию — в таблице _1SBDSET в поле DBFMODE стояла «1». Исправил на «3» и все пошло. Итог — за менее чем 2 часа создал 3 переферийки при том что ни выгонял пользователей! Жаль нет возможности поставить еще пару крестиков. Еще раз спасибо!
(8) alexchebanenko, Пожалуйста! Мне тоже этот способ часто помогает..
(9) указанным способом пользовался не один раз, только без скрипта.
Вот я и сначала тоже без скрипта все делал, но баз мноооого, так гораздо стало проще..
(11) да, баз стало очень много и размер файла выгрузки более 2Гб, поэтому типовые средства полностью отпадают. Со скриптом даже очень удобно, от меня спасибо большое. Есть еще какие-либо наработки?
Вы меня спасли!
Подскажите, а есть подобный способ для создания РИБ на 1С:8.2? И Enterprice Manager, после SQL 2000, начала называться Management Studio.
(14) Region102, в 8.2 можно проделать тоже самое, даже еще проще (если обмен по РИБ полный).
в 8.2 так же копируем базу, в главном узле заводим новый узел нужного плана обмена,
а в копии для текущего узла устанавливаем тот же код, который завели в центральной базе, а для записи центральной базы (с кодом центральной базы) устанавливаем признал «главной базы» запустив код вида
ГлавУзел = ПланыОбмена.ПоМагазину.НайтиПоКоду(«КодГлавнойБазы»);
планыобмена.УстановитьГлавныйУзел(ГлавУзел );
Бодрый день, подскажите пжалста если требуется обмен по организациям. что нужно изменить? ведь данный способ подходит только для полного обмена?
(16) Конь_Богатырский, при обмене «по организации» копия базы не подойдет, поэтому видимо выгружать придется стандартно..
либо как здесь указано, а потом в периферийной другие организации удалять… (и следить, чтобы признак удаления в центральную не улетел)
(17) пасиб большое. будем искать с перломутровоми пуговицами))