|
Архивация баз 1С 8.2 с помощью .bat файла
|
Я
|
|
skupidom 18.10.16 - 13:15 | Есть sql серверная база 1С 8.2, написали скрипт в файле .bat:
chcp 1251
echo off
setlocal
set kat=C:\Program Files (x86)
set ver=1cv82
set serv=server-1c
set base=ArchBp1
"%kat%\%ver%\8.2.19.83\bin\1cv8.exe" CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB "C:\Arch1C\1c82_%date%.dt"
/N Admin /P /OUT "C:\Arch1C\Logs\ backup.log" -NoTruncate
echo %date% >> backup.log
endlocal
Цель - создание архивных копий базы 1С
Результат скрипта: 1С запускается, доходит до момента аутентификации (выбора пользователя 1С) и пароля, далее пока сам не введешь пользователя+пароль не отрабатывает и резервную копию базы 1С не делает |
Волшебник Модератор 1 - 18.10.16 - 13:17 | убери пробел после /N
|
skupidom 2 - 18.10.16 - 13:23 | убрал, запустил скрипт, не заходит, хоть Admin без пароля
|
Fish 3 - 18.10.16 - 13:26 | ( 0) Если база скульная, то и архивацию надо делать средствами скуля. Зачем батники, когда в скуле уже всё и так есть? |
ptiz 4 - 18.10.16 - 13:28 | Ну и традиционно: dt - не архив.
|
MrStomak 5 - 18.10.16 - 13:38 | ( 0) Ага. Только тебе еще скрипт по отключению всех пользователей из базы нужно написать. И вообще - много проблем может быть, если по принципиальным соображениям не использовать для бэкапов механизмы СУБД. |
skupidom 6 - 18.10.16 - 13:38 | я понимаю, это временное решение, а как все таки .bat заставить работать корректно?
|
MrStomak 7 - 18.10.16 - 13:42 | ( 6) Ну попробуй /P убрать |
Fish 8 - 18.10.16 - 13:43 | ( 6) Попробуй введи пароль. Может, там надо указать пустой пароль кавычками. Как-то никогда не практиковал учётку админа без пароля. |
cons74 9 - 18.10.16 - 13:44 | по bat есть специальная ветка на профильном форуме
|
skupidom 10 - 18.10.16 - 14:05 | как обойти ввод пароля?
|
mistеr 11 - 18.10.16 - 14:09 | ( 10) Да поставь уже Effector-Saver. |
newbling 12 - 18.10.16 - 14:37 | А база файловая или скульная?
|
Fish 13 - 18.10.16 - 14:38 | ( 12) в ( 0) написано. В первой же фразе :) |
newbling 14 - 18.10.16 - 14:49 | ( 13) как-то упустил из виду. Тогда вообще некорректно так делать архивы. Надо средствами скуля. Например, я недавно делал в ветке pg_dump + текущая дата на windows server 2012
Там вообще больше про время, но я привёл полностью рабочий код батника для копирования базы средствами скуля.
Есть, правда, момент с настройкой пользователей, но до этог оещё дойти надо. |
pessimist 15 - 18.10.16 - 17:32 | ( 0) Проблему с паролем можно решить используя учётную запись с паролем и необходимыми правами.
Можно попробовать что-то типа
"%path_to_1c%"\1cv8.exe DESIGNER /N %login% /p %password%
оно у меня работает из скрипта, правда платформа 8.3
Если всё-таки делать бэкап в dt то нужно как минимум анализировать %ERRORLEVEL% в скрипте, перезапуская бэкап в случае неудачного завершения и писать в лог не только %date% но и %ERRORLEVEL% и по возможности полностью выдачу команды для последующего разбора полётов. Лучше пытаться выгнать пользователей и запретить регламентные задания. Костыль конечно, но шансов больше.
При наличии выбора не нужно делать бэкап в dt. Даже если пытаться скриптом выгнать пользователей, запретить регламентные задания и анализировать %ERRORLEVEL% есть шанс что этот зоопарк не сработает. Бэкап средствами SQL сервера надёжнее. |
Fedor-1971 16 - 18.10.16 - 18:34 | ( 0)
set serv=server-1c
set base=ArchBp1
.... /S %serv%\%base% ... = /S server-1c\ArchBp1 - как бы \\ не хватает, что-бы получился корректный путь |
Fedor-1971 17 - 18.10.16 - 18:35 | 16+ в CMD запусти и посмотри как раскрываются твои строки, может ещё чего упустил
|
Мойдодыр 18 - 18.10.16 - 18:37 | ( 15) Главное сделать. Прверять не обязательно ))) |
Alexor 19 - 18.10.16 - 20:40 | У меня такой cmd файл архив делает дополнительно к скульному
set folder=%DATE%
"C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe" config /sServSQL\Trade /nUser /pPassword /DumpIB "E:\ARHIV\trade_%folder%.dt" |
NorthWind 20 - 18.10.16 - 21:44 | (0) Делал когда-то примерно так, правда, на VBS
Const kpgDumpPath = """C:\Program Files (x86)\1cv82\common\1cestart.exe"""
Const kDatabaseServer = "srv-02\server"
Const kDestPath = "E:\1C_ArcDT"
Sub Main
Set Cmd = CreateObject("WScript.Shell")
FileName = kDestPath & "\arc" & Day (Date ())
BakFileName = FileName & ".dt"
Set FS = CreateObject ("Scripting.FileSystemObject")
if FS.FileExists (BakFileName) then
FS.DeleteFile BakFileName
end if
rem делаем резервную копию базы
StrCmd = kpgDumpPath &_
" CONFIG /S" + kDatabaseServer + " /DumpIB" & BakFileName & " /NЛогинДляСервиса /Psrvc1234"
Cmd.Run StrCmd, 1, true
End Sub
'-------------------------------------------------------------------
Main |