gifts2017

Быстрый метод создания периферийной базы УРБД (скрипт SQL)

Опубликовал Maxim k (maxis33) в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

Быстрый метод создания периферийной базы  УРБД (скрипт SQL)

Америку не открою, просто расскажу как быстро создаю новую периферийную базу для 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. Радуемся, база готова к работе! идем крутить константы и др ;)

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Alexandr (xklos) 20.12.11 08:50
Доброго времени суток! Решение хорошее применена хитрость :) в принципе толково но есть несколько ньюансов если кому будет интересно поднимайте ветку расскажу да и умных комментариев люблю почитать буду рад пообщатся :)
2. Александр Чебаненко (alexchebanenko) 13.01.12 09:30
Может идиотский вопрос (просто собираюсь попробовать), а как потом автообмен будет? Т.е. выгрузка из основной базы (она около 60 гиг весит) будет только изменений?
3. Maxim k (maxis33) 13.01.12 09:39
(2) alexchebanenko, да, когда мы создадим новую базу через конфигуратор и активируем ее (_1SBDSET для новой базы меняем DBSTATUS c "N" на "C") то для новой периферийной базы количество объектов для выгрузки будет - 0. Соответственно при обмене из основной базы выгружаться будут только изменения произошедшие с момента клонирования базы.
4. Александр Чебаненко (alexchebanenko) 13.01.12 09:44
(3) maxis33, Спасибо! На выходные попробую. А то на неделе поставили задачу создать 3 переферийки, а на тестах одна только выгрузка из основной занимает около 5 часов. Благодаря Вашему скрипту время уменьшится до 30-40 минут для создания одной полноценной переферийки.
5. Maxim k (maxis33) 13.01.12 09:52
(4) alexchebanenko, еще перед этим действом есть смысл "зашинковать" базу чтобы уменьшить размер файлов базы и лога.
Я обычно перевожу "Recovery model" на "simple" и запускаю команду

DBCC SHRINKDATABASE(ИМЯБАЗЫ,10)

и потом при создании периф. баз основное время (97%) занимает простое копирование файлов..
alexchebanenko; +1 Ответить 1
6. Александр Чебаненко (alexchebanenko) 13.01.12 10:44
Не удержался - попробовал. Все великолепно сработало! Взял архивную ночную копию. Только один нюанс - в созданной переферийки отключен автообмен... В основной все ок.
7. Александр Чебаненко (alexchebanenko) 13.01.12 10:46
(5) maxis33, У меня перед бэкапом все это происходит. Бэкаплю средствами SQL.
8. Александр Чебаненко (alexchebanenko) 13.01.12 12:43
Извините, разобрался с (6). Т.к. я взял ночную копию - в таблице _1SBDSET в поле DBFMODE стояла "1". Исправил на "3" и все пошло. Итог - за менее чем 2 часа создал 3 переферийки при том что ни выгонял пользователей! Жаль нет возможности поставить еще пару крестиков. Еще раз спасибо!
9. Maxim k (maxis33) 13.01.12 12:48
(8) alexchebanenko, Пожалуйста! Мне тоже этот способ часто помогает..
alexchebanenko; +1 Ответить 1
10. nanik nanik (nanik) 23.05.12 00:08
(9) maxis33, указанным способом пользовался не один раз, только без скрипта.
11. Maxim k (maxis33) 23.05.12 11:57
Вот я и сначала тоже без скрипта все делал, но баз мноооого, так гораздо стало проще..
12. nanik nanik (nanik) 23.05.12 12:51
(11) maxis33, да, баз стало очень много и размер файла выгрузки более 2Гб, поэтому типовые средства полностью отпадают. Со скриптом даже очень удобно, от меня спасибо большое. Есть еще какие-либо наработки?
13. sae74 (sae74) 21.06.12 18:28
14. Илья Низамов (Region102) 12.12.12 05:19
Подскажите, а есть подобный способ для создания РИБ на 1С:8.2? И Enterprice Manager, после SQL 2000, начала называться Management Studio.
15. Maxim k (maxis33) 13.12.12 17:36
(14) Region102, в 8.2 можно проделать тоже самое, даже еще проще (если обмен по РИБ полный).
в 8.2 так же копируем базу, в главном узле заводим новый узел нужного плана обмена,
а в копии для текущего узла устанавливаем тот же код, который завели в центральной базе, а для записи центральной базы (с кодом центральной базы) устанавливаем признал "главной базы" запустив код вида

ГлавУзел = ПланыОбмена.ПоМагазину.НайтиПоКоду("КодГлавнойБазы");
планыобмена.УстановитьГлавныйУзел(ГлавУзел );
16. Анатолий (Конь_Богатырский) 13.07.15 08:13
Бодрый день, подскажите пжалста если требуется обмен по организациям. что нужно изменить? ведь данный способ подходит только для полного обмена?
17. Maxim k (maxis33) 13.07.15 12:24
(16) Конь_Богатырский, при обмене "по организации" копия базы не подойдет, поэтому видимо выгружать придется стандартно..
либо как здесь указано, а потом в периферийной другие организации удалять... (и следить, чтобы признак удаления в центральную не улетел)
18. Анатолий (Конь_Богатырский) 13.07.15 20:08
(17) maxis33, пасиб большое. будем искать с перломутровоми пуговицами))
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа