0
- 25.06.2014 - 05:39
|
Может, кому надо... Поставили мне задачу - сделать копию базы SQL с автоматическим обновлением по ночам. Просто загрузить базу - в принципе достаточно, но придётся вносить обновления конфигурации вручную, что не очень приятно. Тогда я решил разобраться, как полностью скопировать каталог рабочей базы и настроить его на копию. Выяснилось, что для этого надо подменить файл 1Cv7.DBA, т.к. в нём хранятся сервер, логин и пароль к базе. Но, там-же хранится и чексумма файла users.usr(нашёл где-то в инете, но как оказалось - не важно). При подмене файла, чексумма расходится и строка теряется. Тогда я решил сделать следующее - подменить чексумму в файле базы копии на чексумму из базы рабочей. Нашёл, как расшифровать этот файл и сделал скрипт vbs. Скопировал файл из копии в отдельный каталог. Создал батник, который копирует рабочую базу. Запустил скрипт. Он расшифровывает 2 файл - отдельный из копии и из рабочей базы, подменяет чексумму и сохраняет файл в копию. Всё работает. Вот скрипт, вдруг пригодится кому либо.. Dim SQLKeyCode(36) Dim ConnectCode(200) SET FSO = CreateObject("Scripting.FileSystemObject") SET F = FSO.OpenTextFile("\--\---1Cv7.DBA", 1) - скопированный в отдельный каталог файл из копии ConnectLen = 0 Do While F.AtEndOfStream = 0 ConnectLen = ConnectLen + 1 ConnectCode(ConnectLen) = asc(F.Read(1)) Loop F.Close SQLKey = "19465912879oiuxc ensdfaiuo3i73798kjl" For k=1 To 36 SQLKeyCode(k) = asc(Mid(SQLKey, k, 1)) Next Connect = "" For k=1 to ConnectLen Connect = Connect + chr(ConnectCode(k) xor SQLKeyCode(((k - 1) mod 36)+1)) next SET F = FSO.OpenTextFile("---\--\1Cv7.DBA", 1) файл из рабочей базы, но можно брать из копии, т.к. туда скопирован файл из рабочей ConnectLen = 0 Do While F.AtEndOfStream = 0 ConnectLen = ConnectLen + 1 ConnectCode(ConnectLen) = asc(F.Read(1)) Loop F.Close Connect1 = "" For k=1 to ConnectLen Connect1 = Connect1 + chr(ConnectCode(k) xor SQLKeyCode(((k - 1) mod 36)+1)) next Connect=Left(Connect,InStr(Connect,"Chec")-1)+Mid(Connect1,InStr(Connect1,"Chec")) - вот тут надо быть осторожнее, чтоб имя сервера или пользователя или парля не содержало эти символы, можно написать полное слово ConnectLen=Len(Connect) set F=FSO.OpenTextFile("путь к копии\1Cv7.DBA",2,1) For k=1 to ConnectLen A = chr(asc(Mid(Connect, k, 1)) xor SQLKeyCode(((k - 1) mod 36)+1)) F.Write(A) next F.Close | |
1
- 25.06.2014 - 08:11
| Если вопрос идёт о v7, может использовать штатные средства? пакетный режим конфигуратора | |
2
- 25.06.2014 - 09:54
|
Да, 7.7 Как в пакетном режиме можно в базе прописать новый сервер, логин и пароль? Выгрузка-загрузка базы не рассматривается, она сейчас примерно 97 гиг. | |
| Интернет-форум Краснодарского края и Краснодара |