среда, 11 декабря 2013 г.

1С v7.7 Быстрый метод создания периферийной базы УРБД SQL

Имеем сабж)

Рухнула как то периферийная БД. Соответственно возникла необходимость создания новой. База относительно не маленькая (22 Gb). Выгрузить периферийку штатными средствами не представляется возможным (ибо ограничение на выгрузку 2 Gb в 7.7 так и не пофиксили). Через сторонние выгрузки (плагин Romix`a) - долго. Задача стояла восстановить работу предприятия в кратчайшие сроки.

Итак, приступим:

1. Через конфигуратор в центральной базе создаем новую периферийную БД.

2. Через Enterprice Manager (SQL сервер 2000), в таблице _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'                       - и если база поключилась с другим владельцем, сменим на нужного



Периыерийная и центральная БД готовы к работе! Done!  © maxis33