Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выгрузка клиент-серверной информационной базы по расписанию bat-файлом

Выгрузка клиент-серверной информационной базы по расписанию bat-файлом
Я
   Svetlana_Kazan
 
03.02.21 - 15:25
Написан скрипт:

echo on
set mydate=%date:~,10%
Set NameServer=192.168.218.99
Set NameBase=pro
Set Login=Admin
Set Password=12345
Set KodRazr=123456

"C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" ENTERPRISE /S%NameServer%\%NameBase% /N%Login% /P%Password% /DisableStartupMessages /C ЗавершитьРаботуПользователей
"C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" CONFIG /S%NameServer%\%NameBase% /N%Login% /P%Password% /DisableStartupMessages /UC %KodRazr% /DumpIB C:\BackUp\%mydate%_%NameBase%_copy.dt /OUT C:\BackUp\%mydate%_%NameBase%_log.txt
"C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" ENTERPRISE /S%NameServer%\%NameBase% /N%Login% /P%Password% /DisableStartupMessages /C РазрешитьРаботуПользователей /UC %KodRazr%

Но почему-то не завершается работа пользователей. Подскажите, пожалуйста, чего не хватает или где ошибка?
   acht
 
1 - 03.02.21 - 15:38
(0)
Во-первых. В клиент-серверной информационной базе бэкап по раписанию необходимо производить средствами СУБД
Во-вторых. Работа пользователей завершается не мгновенно, а с таймаутом, ЕМНИП, 60 секунд.
   Svetlana_Kazan
 
2 - 03.02.21 - 15:42
(1) , Спасибо за ответ! Завершение работы пользователей ждала 5 минут. Подожду еще подольше.
   dmpl
 
3 - 03.02.21 - 15:49
(1) Если у пользователя что-то делается - он может вообще никогда не завершиться. А спящие сеансы только по таймауту отвалятся.
   acht
 
4 - 03.02.21 - 16:03
(3) > Если у пользователя что-то делается - он может вообще никогда не завершиться

А если он в этот момент ожидает выполнения запроса в СУБД, так он вообще может быть бессмертным =)
   acht
 
5 - 03.02.21 - 16:05
(2) А что вообще за база-то? БСП-то хоть есть?
   Serg_1960
 
6 - 03.02.21 - 16:14
(2) "Завершение работы пользователей ждала 5 минут. Подожду еще подольше."... лучше уж вот как-то вот так:

"C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" ENTERPRISE /S%NameServer%\%NameBase% /N%Login% /P%Password% /DisableStartupMessages /C ЗавершитьРаботуПользователей
TimeOut /T ХХХ
Start "Stop" /Wait "C:\Program Files (x86)\1cv8\8.3.9.1850\bin\ragent.exe" -stop
...
Start "Start" /Wait "C:\Program Files (x86)\1cv8\8.3.9.1850\bin\ragent.exe" -start
   Mikhail Volkov
 
7 - 03.02.21 - 17:10
(0) А "C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" ENTERPRISE... /C ЗавершитьРаботуПользователей закрывает конфигуратор? Может конфигуратор не закрыт.
   Dmitrii
 
8 - 03.02.21 - 17:16
(0) Не занимайтесь ерундой.
Выгрузку надо делать средствами СУБД, а не через выгрузку конфигуратором.
Выгрузка в dt не является архивом.
   Mikhail Volkov
 
9 - 03.02.21 - 18:41
(8) Ну, например, SQL-сервер может выйти из строя. На этот случай dt-выгрузка позволит создать файловую базу.
Есть ли методы программно определить, есть ли пользователи в базе? Как для версии 7.7 как из одной базы 1С проверить есть ли кто в другой. По временным файлам Что-то мешает сделать dt-выгрузку базы. Что?? Что-то у себя их не нашел... правда у нас отдельный SQL-сервер, может не там искал?
   acht
 
10 - 03.02.21 - 21:35
(9) > На этот случай dt-выгрузка позволит создать файловую базу
В которую данные из SQL тупо не влезут из за ограничения размеров страниц, ага.

Закопайте уже стюардессу.
   Mikhail Volkov
 
11 - 04.02.21 - 07:49
(10) У (0) в bat-файле прописан параметр: /OUT C:\BackUp\%mydate%_%NameBase%_log.txt, в этом случае наверное в лог-файле была бы зарегистрирована ошибка!?
   acht
 
12 - 04.02.21 - 08:17
(11) Ошибка о невозможности разворота из dt появляется на при выгрузке, а при загрузке в файловую базу. Ваш К.О.
   hhhh
 
13 - 04.02.21 - 08:21
(10) в последних платформах ограничения размеров страниц ля файловых баз снято.
   ДенисЧ
 
14 - 04.02.21 - 08:22
(13) В насколько последних? В 8.3.17.1851 всё ещё есть.
   Svetlana_Kazan
 
15 - 04.02.21 - 08:45
(8) , архив средствами СУБД делается. А выгрузка нужна мне, для подстраховки и для быстрого развертывания базы для экспериментов. В рабочей базе постоянно сидят пользователи.
   Ненавижу 1С
 
16 - 04.02.21 - 08:47
(15) средствами СУБД все и так быстро делается
и пользователей выгонять не надо
   Mikhail Volkov
 
17 - 04.02.21 - 09:20
(16) Для экспериментов нужна файловая база, не ставить же на SQL-сервер.
   Builder
 
18 - 04.02.21 - 09:28
(17) Как раз на SQL ее и ставить, в чем проблема?
   acht
 
19 - 04.02.21 - 09:41
(17) Отлаживать клиент-серверное взаимодействие вообще-то надо на клиент-сервере. Ваш К.О.
   NorthWind
 
20 - 04.02.21 - 09:47
(17) для экспериментов регулярность копии особого значения не имеет, поэтому можно обойтись и без выгонялки пользователей. У меня такой скрипт работает, естественно, помимо нормального бэкапа. Сделал копию - хорошо, не сделал - ну, тоже ничего, возьмем позавчерашнюю.
   acht
 
21 - 04.02.21 - 11:01
   Garykom
 
22 - 04.02.21 - 11:04
Имхо:
Последовательно
1. Бэкап sql базы средствами субд
2. Поднятие бэкапа в другую базу sql
3. Запуск конфигуратора ТиИ скриптом
4. Выгрузка в dt
   Garykom
 
23 - 04.02.21 - 11:07
(19) Попробуй отладку МП или МК на sql базе, удивишься
   Garykom
 
24 - 04.02.21 - 11:08
(23)+ Точнее можно если отлаживатель всего один на весь сервер 1С, если их несколько то упс
   hhhh
 
25 - 04.02.21 - 11:09
(14) Начиная с версии платформы "1С:Предприятие" 8.3.8 появилась поддержка нового формата файловых баз данных, который позволяет настраивать размер внутренней страницы файла данных. Это размер порции данных, в которых хранится информация и которыми обменивается программа с файловой системой. Предыдущий формат файловой базы данных поддерживал единственный размер внутренней страницы файла – 4Кб. Новый формат по умолчанию использует размер страницы 8192 байта (8Кб), но позволяет его менять в диапазоне от 4Кб до 64Кб (размер страницы может принимать одно из значений: 4096, 8192, 16384, 32768, или 65536 байт).

Обратите внимание, что данная утилита позволяет увеличить или уменьшить размер страницы файла данных, но не снимает ограничение на размер самого внутреннего файла. Теоретически размер внутреннего файла может уменьшится за счет увеличения или уменьшения размера страниц и конвертации данных в новый формат, но результат не гарантирован и может вызвать обратный эффект.

В платформе 1С:Предприятие начиная с версии 8.3.8 увеличение размера страниц до 8192, 16384, 32768 и 65536 байт позволяет увеличить максимальный размер внутреннего файла до 6Гб. При использовании размера страниц 4096 байт максимальный размер внутреннего файла по прежнему не может превышать 4 Гбайта для любой версии платформы.

то есть с 8.3.8 уже 6 гигабайт. И дальше будет увеличиваться.
   acht
 
26 - 04.02.21 - 11:15
(25) > И дальше будет увеличиваться
А вот это уже фантазии.
   acht
 
27 - 04.02.21 - 11:17
(23) Что там, опять микросервис на GO писать надо?
   Mikhail Volkov
 
28 - 05.02.21 - 04:50
(0) Попробуйте CONFIG заменить на DESIGNER как в Параметры командной строки 1С:Предприятие http://catalog.mista.ru/public/104654/, может дело в синтаксисе? В лог-файл что-то пишется?
Эх с (10) поста ветка в сторону свернула...
   Гений 1С
 
29 - 05.02.21 - 06:33
(0) поставь любую выгонялку с инфостарта. Так будет надежнее. Хотя от подвисших на сервере сеансов не спасет.
или напиши VBS(JS)-скрипт, который будет средствами консоли 1С убивать лишние сеансы. Но опять же, фоновых это не касается, надо менять расписание фоновых тогда. Увы.
   Mikhail Volkov
 
30 - 05.02.21 - 07:11
(29) > который будет средствами консоли 1С убивать лишние сеансы.
Автоматом (не вручную)? Пример бы...
 
 Рекламное место пустует
   ДенисЧ
 
31 - 05.02.21 - 07:53
(25) Ставил 65536 все равно не влезло.
   Mikhail Volkov
 
32 - 05.02.21 - 16:29
(30)+ Тоже планирую делать dt-выгрузку автоматом, но не по расписанию, а по завершению последнего пользователя в базе. Для этого если конфигуратор открыт, то закрываю его Отключить сеанс. Если эту процедуру доработать:
    Если ТекСеанс.AppID = "1CV8" И ТекСеанс.userName = ПараметрыСеанса.Пользователь.Наименование Тогда 
        Продолжить;
    КонецЕсли;
То думаю будут отключаться и зависшие сеансы, и фоновые (не проверял).
   Ёпрст
 
33 - 05.02.21 - 19:35
Клуб наркоманов.. имея нормальную субд делать выгрузку в dt - это п...ц
   Ёпрст
 
34 - 05.02.21 - 19:36
Ну ничего, это лечится, когда в дт будут ошибки
   Aleksey
 
35 - 05.02.21 - 19:38
Подкину травы, делайте уриб и делайте бекап уриба. Обмен можно делать онлайн, а в копии гарантированно никого не будет
   sitex
 
36 - 05.02.21 - 23:33
(22) осилишь 400 гб в bak а потом в dt ?
   sitex
 
37 - 05.02.21 - 23:35
(22) Да, до какого то объема в sql и потом в dt  -> это работает. А потом аншлаг....
   Mikhail Volkov
 
38 - 09.02.21 - 08:26
(37) До таких объемов нам еще далеко...
(33) dt-выгрузка делается не для архивов (не только), а чтобы иметь возможность создать файловый вариант базы (9).
Вопрос не совсем по теме: в Альфа-Авто сделаны 3 времени: ВремяЗавершенияРаботыСистемы, ВремяЖесткогоВыхода, ВремяМягкогоВыхода. После превышения 2-х последних текущего времени выполняется (должно по коду) ЗавершитьРаботуСистемы(), а после превышения - ПрекратитьРаботуСистемы(). В процессе отладки заметил, что ЗавершитьРаботуСистемы() выполняется лишь со 2-3 попытки!? Хотя факт ее запуска фиксируется в ЖР.
   Dmitrii
 
39 - 09.02.21 - 09:55
(25) >> И дальше будет увеличиваться.

Гхммм....гхмммм.... Я дико извиняюсь, но боюсь, что придётся Вас огорчить.
Ничего уже у вас не увеличится. Что выросло, то выросло.
   ДенисЧ
 
40 - 09.02.21 - 10:02
(39) Ничего уже у вас не увеличится. Что выросло, то выросло.@

Расскажи это моему животу ))))))))))
   Dmitrii
 
41 - 09.02.21 - 10:05
Извините конечно.
Но хернёй вы страдаете. Это, наверное, от скуки полнейшей или на почве короновируса...
Есть простейшие инструменты СУБД, которые позволяются делать выгрузку и загрузку средствами СУБД. Причем для выгрузки не надо никого выгонять. А сам процесс работает в разы (а на больших объёмах на порядки) быстрее чем выгрузка/загрузка через dt.
Нет ни одного вменяемого аргумента для использования выгрузки/загрузки через dt, кроме необходимости конвертировать базу с одной СУБД на другую СУБД (например перевод из файлового варианта в клиент-серверный или с MS-SQL на PostgreSQL).
Даже копию базы для тестирования или разработки лучше держать в том же варианте, что основная рабочая база - в клиент-серверном.
А если речь идёт о разработке, то для неё не нужны суперактуальные данные и вполне достаточно выгрузки, сделанной в любое ночное время хоть неделю назад.
ИМХО.
   seevkik
 
42 - 09.02.21 - 10:07
Effector saver, не?)
   seevkik
 
43 - 09.02.21 - 10:09
(41) Выгрузка в дт не произойдёт если структура метаданных поломана, а скуль сожрёт что угодно)
   Kassern
 
44 - 09.02.21 - 10:10
(41) у них лишь один "вменяемый" аргумент - а если скуль упадет, что мы будем делать? Прав нет на доступ к скулю, а работать надо и т.д. в том же духе)
   Serg_1960
 
45 - 09.02.21 - 10:12
(41) Вы не внимательны :( автор темы у предупреждала: "архив средствами СУБД делается. А выгрузка нужна мне"
   Kassern
 
46 - 09.02.21 - 10:20
(45) база для "подстраховки"... разверните рядом на серве тестовую базу и настройте регламент заливки в нее путем скуля. Здесь только 1 вариант более жизнеспособный в реалиях поста, ТС работает у себя дома на своей 1ске купленной без возможности использования скуля (дорого) и религия, или политика партии не позволяет работать по RDP на стороне клиента. В этом случае действительно нужна какая-нить копия дтшки, но смысл делать это регламентом выгоняя трудяг, а потом еще по инету гонять базы данных, ну это такое...
   acht
 
47 - 09.02.21 - 10:21
(25) > И дальше будет увеличиваться.
Еще чуть наброшу:

https://bugboard.v8.1c.ru/error/000044708
    В файловом варианте информационной базы,если файл базы данных имеет формат 8.3.8
    и размер страницы 8K или больше, при попытке чтения или записи таблицы, содержащей
    большой объем данных, имеющей размер внутреннего файла > 4 ГБайт, может происходить
    ошибка

    Файл базы данных поврежден ...

    и аварийное завершение работы программы.

    Зарегистрирована: 12.07.2018
    Статус: Планируется исправление в будущих версиях


Запретить вам распоряжаться вашими же данными не могу, продолжайте в том же духе.
   Serg_1960
 
48 - 09.02.21 - 10:29
(45),(46) Согласен, но... например, как Вы уже написали, программист 1С может не иметь доступ к серверу SQL и его архивам; в организации - РИБ (ЦБ - SQL, узлы - файловые). Я могу ещё набросать варианты. Например, проблема заключается в программисте 1С - субъективность, которая влияет на объективность :)
   hhhh
 
49 - 09.02.21 - 10:30
(39) ну да, ну да.
   Kassern
 
50 - 09.02.21 - 10:32
(48) у файловых баз можно просто CDшник стянуть, вопрос доступа к архивам скуля и к самому скулю тоже решаемый, было бы желание, как говорится
   Serg_1960
 
51 - 09.02.21 - 10:38
(50) Предлагаю завершить прения на тему "Не рекомендуется использовать механизм выгрузки для создания резервных копий информационной базы"(ИТС) - это же баян.

Израильский форум. Сначала ты задаешь вопрос, потом тебе задают вопрос.
Русский форум. Сначала ты задаешь вопрос, потом тебе долго рассказывают какой ты #####.
Итальянский форум. Пока ты задаешь вопрос, остальные начинают так активно общаться, что или заканчивается место на хостинге или форум закрывают за непарламентский выражения.
Северокорейский форум. Сначала ты задаешь вопрос, а потом приходят люди в форме и говорят: "Здесь вопросы задаем мы."
Финский форум. Сначала ты задаешь вопрос, потом ты заканчиваешь институт, служишь, женишься, рожаешь трех детей. После этого вопрос публикуется модератором.
Эстонский форум. "А что-о тако-ое Фо-о-ору-ум?"
   acht
 
52 - 09.02.21 - 10:40
(51) > Предлагаю завершить прения
И начать рассказывать анекдоты. Поддерживаю.
   Новиков
 
53 - 09.02.21 - 10:46
(0) А в базе без пользователей, скрипт работает?
   Serg_1960
 
54 - 09.02.21 - 10:50
(52) Sorry. Эээ... слишком уж серьезно :) стали осуждать, пардон, - обсуждать тему недостатков выгрузки в DT. Просто замечу: за пятнадцать лет работы, лично я, всего лишь дважды или трижды встречался с битыми файлами DT (причина: выгрузка из уже битой базы).
   hhhh
 
55 - 09.02.21 - 10:56
(54) просто за базами sql следит куча админов, поэтому они и более надежные, а за файловой базой присматривает бухгалтер, поэтому после 5 лет такого присмотра она иногда и не выгружается.
   arsik
 
56 - 09.02.21 - 10:59
(0) Не рекламы ради.
Купите Обновлятор 1С - он это умеет из коробки. Можно и бесплатьный, но у бесплатного нет возможности выполнения заданий по расписанию. Стоит копейки.
   Mikhail Volkov
 
57 - 09.02.21 - 16:43
(51) > Предлагаю завершить прения...
А как вопрос (38)?
   Serg_1960
 
58 - 09.02.21 - 17:14
(57) Предлагаю ещё раз перечитать первое предложение в (51) целиком :) Темы ветки, обсуждения ЗавершитьРаботуПользователей и прочих связанных проблем это не касалось. Вы же сами же говорили "Эх с (10) поста ветка в сторону свернула..."
   Garykom
 
59 - 09.02.21 - 17:19
(36) >осилишь 400 гб в bak а потом в dt ?

если 400 гб в бак то в dt будет раз в 10 меньше гигов
   NorthWind
 
60 - 09.02.21 - 18:48
(57) завершение работы тяжелого процесса происходит немоментально. Выполняются все деструкторы, освобождается память. Это все запросто может происходить секунд 10 и больше, особенно если файл подкачки страниц находится на медленном жестком диске, а не на SSD.
 
 Рекламное место пустует
   Mikhail Volkov
 
61 - 10.02.21 - 08:03
(60) Сколько больше не моментально? Вчера в ЖР 1-я запись типа "Время завершения работы системы: 09.02.2021 21:00:00,  Текущий момент: 09.02.2021 20:58:44,  Время жесткого выхода: 09.02.2021 20:58:48,  Время мягкого выхода: 09.02.2021 20:58:12" для последнего пользователя появилась в 20:58:44. А запись "Сеанс. Завершение" этого же пользователя - в 21:00:34. Выходит он завершался 02 минуты 10 секунд? На столько надо увеличить период опроса для завершения: ПодключитьОбработчикОжидания("сфКонтрольРежимаЗавершенияРаботыПользователей", 45); // 60 много ждать приходиться, а 30 маловато чтобы пользователь успел что-то сделать полезного между предупреждениями
   Mikhail Volkov
 
62 - 10.02.21 - 08:17
Еще вопрос вдогонку: в Альфа-Авто есть фрагмент:
    ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Информация, , ,
    "Время завершения работы системы: " + СокрЛП(ВремяЗавершенияРаботыСистемы)
    + ",  Текущий момент: " + СокрЛП(ТекущийМомент)
    + ",  Время жесткого выхода: " + СокрЛП(ВремяЖесткогоВыхода)
    + ",  Время мягкого выхода: " + СокрЛП(ВремяМягкогоВыхода));
    
    Если ТекущийМомент >= ВремяЗавершенияРаботыСистемы Тогда
        ПрекратитьРаботуСистемы(Истина);
    ИначеЕсли ТекущийМомент >= ВремяЖесткогоВыхода Тогда
        Предупреждение("Работа системы завершается " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25);
        ЗавершитьРаботуСистемы(Ложь, Истина);
    ИначеЕсли ТекущийМомент >= ВремяМягкогоВыхода Тогда
        Предупреждение("Работа системы завершается " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25);
        ЗавершитьРаботуСистемы(Истина, Истина);
    Иначе
        Предупреждение("Работа системы будет завершена " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25);
    КонецЕсли;
Параметры ЗавершитьРаботуСистемы():
<ЗапрашиватьВозможность> (необязательный) Значение по умолчанию: Истина. 
<ПерезапуститьПриЗавершении> (необязательный) Значение по умолчанию: Ложь.
В своем варианте 2-й параметр ставил везде Ложь, все равно система перезапускалась!? Пока совсем не убрал параметры.
   NorthWind
 
63 - 10.02.21 - 13:41
(61) Запустите 1С на той машине, где все это происходит. Попарьте ее чем-нибудь тяжелым чтобы памяти подожрала.
Запустите тут же диспетчер задач, найдите процесс 1сv8s.
Затем закройте окно 1С и посмотрите, через сколько времени после этого процесс исчезнет из диспетчера задач.
На современных машинах с SSD это происходит буквально в течение нескольких секунд.
На стареньком ноутбуке с HDD я когда-то делал такие эксперименты - по полминуты-минуте точно приходилось ждать.
   Mikhail Volkov
 
64 - 10.02.21 - 15:42
(63) Да, сервера старые, SQL-сервер не раз загибался. Поэтому решил дополнительно сделать dt-выгрузку автоматом. Еще в процессе завершения пользователю задается вопрос: согласен ли он. Таймаут вопроса настраивается пользователем. Поэтому 2 минуты завершения - нормально. Просто неожиданно, раньше не сталкивался.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.