|
Выгрузка клиент-серверной информационной базы по расписанию bat-файлом | ☑ | ||
---|---|---|---|---|
0
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% Но почему-то не завершается работа пользователей. Подскажите, пожалуйста, чего не хватает или где ошибка? |
|||
1
acht
03.02.21
✎
15:38
|
(0)
Во-первых. В клиент-серверной информационной базе бэкап по раписанию необходимо производить средствами СУБД Во-вторых. Работа пользователей завершается не мгновенно, а с таймаутом, ЕМНИП, 60 секунд. |
|||
2
Svetlana_Kazan
03.02.21
✎
15:42
|
(1) , Спасибо за ответ! Завершение работы пользователей ждала 5 минут. Подожду еще подольше.
|
|||
3
dmpl
03.02.21
✎
15:49
|
(1) Если у пользователя что-то делается - он может вообще никогда не завершиться. А спящие сеансы только по таймауту отвалятся.
|
|||
4
acht
03.02.21
✎
16:03
|
(3) > Если у пользователя что-то делается - он может вообще никогда не завершиться
А если он в этот момент ожидает выполнения запроса в СУБД, так он вообще может быть бессмертным =) |
|||
5
acht
03.02.21
✎
16:05
|
(2) А что вообще за база-то? БСП-то хоть есть?
|
|||
6
Serg_1960
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 |
|||
7
Mikhail Volkov
03.02.21
✎
17:10
|
(0) А "C:\Program Files (x86)\1cv8\8.3.9.1850\bin\1cv8.exe" ENTERPRISE... /C ЗавершитьРаботуПользователей закрывает конфигуратор? Может конфигуратор не закрыт.
|
|||
8
Dmitrii
гуру
03.02.21
✎
17:16
|
(0) Не занимайтесь ерундой.
Выгрузку надо делать средствами СУБД, а не через выгрузку конфигуратором. Выгрузка в dt не является архивом. |
|||
9
Mikhail Volkov
03.02.21
✎
18:41
|
(8) Ну, например, SQL-сервер может выйти из строя. На этот случай dt-выгрузка позволит создать файловую базу.
Есть ли методы программно определить, есть ли пользователи в базе? Как для версии 7.7 как из одной базы 1С проверить есть ли кто в другой. По временным файлам Что-то мешает сделать dt-выгрузку базы. Что?? Что-то у себя их не нашел... правда у нас отдельный SQL-сервер, может не там искал? |
|||
10
acht
03.02.21
✎
21:35
|
(9) > На этот случай dt-выгрузка позволит создать файловую базу
В которую данные из SQL тупо не влезут из за ограничения размеров страниц, ага. Закопайте уже стюардессу. |
|||
11
Mikhail Volkov
04.02.21
✎
07:49
|
(10) У (0) в bat-файле прописан параметр: /OUT C:\BackUp\%mydate%_%NameBase%_log.txt, в этом случае наверное в лог-файле была бы зарегистрирована ошибка!?
|
|||
12
acht
04.02.21
✎
08:17
|
(11) Ошибка о невозможности разворота из dt появляется на при выгрузке, а при загрузке в файловую базу. Ваш К.О.
|
|||
13
hhhh
04.02.21
✎
08:21
|
(10) в последних платформах ограничения размеров страниц ля файловых баз снято.
|
|||
14
ДенисЧ
04.02.21
✎
08:22
|
(13) В насколько последних? В 8.3.17.1851 всё ещё есть.
|
|||
15
Svetlana_Kazan
04.02.21
✎
08:45
|
(8) , архив средствами СУБД делается. А выгрузка нужна мне, для подстраховки и для быстрого развертывания базы для экспериментов. В рабочей базе постоянно сидят пользователи.
|
|||
16
Ненавижу 1С
гуру
04.02.21
✎
08:47
|
(15) средствами СУБД все и так быстро делается
и пользователей выгонять не надо |
|||
17
Mikhail Volkov
04.02.21
✎
09:20
|
(16) Для экспериментов нужна файловая база, не ставить же на SQL-сервер.
|
|||
18
Builder
04.02.21
✎
09:28
|
(17) Как раз на SQL ее и ставить, в чем проблема?
|
|||
19
acht
04.02.21
✎
09:41
|
(17) Отлаживать клиент-серверное взаимодействие вообще-то надо на клиент-сервере. Ваш К.О.
|
|||
20
NorthWind
04.02.21
✎
09:47
|
(17) для экспериментов регулярность копии особого значения не имеет, поэтому можно обойтись и без выгонялки пользователей. У меня такой скрипт работает, естественно, помимо нормального бэкапа. Сделал копию - хорошо, не сделал - ну, тоже ничего, возьмем позавчерашнюю.
|
|||
21
acht
04.02.21
✎
11:01
|
В тему, кстати: Ошибка формата потока при загрузке из DT
|
|||
22
Garykom
гуру
04.02.21
✎
11:04
|
Имхо:
Последовательно 1. Бэкап sql базы средствами субд 2. Поднятие бэкапа в другую базу sql 3. Запуск конфигуратора ТиИ скриптом 4. Выгрузка в dt |
|||
23
Garykom
гуру
04.02.21
✎
11:07
|
(19) Попробуй отладку МП или МК на sql базе, удивишься
|
|||
24
Garykom
гуру
04.02.21
✎
11:08
|
(23)+ Точнее можно если отлаживатель всего один на весь сервер 1С, если их несколько то упс
|
|||
25
hhhh
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 гигабайт. И дальше будет увеличиваться. |
|||
26
acht
04.02.21
✎
11:15
|
(25) > И дальше будет увеличиваться
А вот это уже фантазии. |
|||
27
acht
04.02.21
✎
11:17
|
(23) Что там, опять микросервис на GO писать надо?
|
|||
28
Mikhail Volkov
05.02.21
✎
04:50
|
(0) Попробуйте CONFIG заменить на DESIGNER как в Параметры командной строки 1С:Предприятие http://catalog.mista.ru/public/104654/, может дело в синтаксисе? В лог-файл что-то пишется?
Эх с (10) поста ветка в сторону свернула... |
|||
29
Гений 1С
гуру
05.02.21
✎
06:33
|
(0) поставь любую выгонялку с инфостарта. Так будет надежнее. Хотя от подвисших на сервере сеансов не спасет.
или напиши VBS(JS)-скрипт, который будет средствами консоли 1С убивать лишние сеансы. Но опять же, фоновых это не касается, надо менять расписание фоновых тогда. Увы. |
|||
30
Mikhail Volkov
05.02.21
✎
07:11
|
(29) > который будет средствами консоли 1С убивать лишние сеансы.
Автоматом (не вручную)? Пример бы... |
|||
31
ДенисЧ
05.02.21
✎
07:53
|
(25) Ставил 65536 все равно не влезло.
|
|||
32
Mikhail Volkov
05.02.21
✎
16:29
|
(30)+ Тоже планирую делать dt-выгрузку автоматом, но не по расписанию, а по завершению последнего пользователя в базе. Для этого если конфигуратор открыт, то закрываю его Отключить сеанс. Если эту процедуру доработать:
Если ТекСеанс.AppID = "1CV8" И ТекСеанс.userName = ПараметрыСеанса.Пользователь.Наименование Тогда Продолжить; КонецЕсли; То думаю будут отключаться и зависшие сеансы, и фоновые (не проверял). |
|||
33
Ёпрст
05.02.21
✎
19:35
|
Клуб наркоманов.. имея нормальную субд делать выгрузку в dt - это п...ц
|
|||
34
Ёпрст
05.02.21
✎
19:36
|
Ну ничего, это лечится, когда в дт будут ошибки
|
|||
35
Aleksey
05.02.21
✎
19:38
|
Подкину травы, делайте уриб и делайте бекап уриба. Обмен можно делать онлайн, а в копии гарантированно никого не будет
|
|||
36
sitex
naïve
05.02.21
✎
23:33
|
(22) осилишь 400 гб в bak а потом в dt ?
|
|||
37
sitex
naïve
05.02.21
✎
23:35
|
(22) Да, до какого то объема в sql и потом в dt -> это работает. А потом аншлаг....
|
|||
38
Mikhail Volkov
09.02.21
✎
08:26
|
(37) До таких объемов нам еще далеко...
(33) dt-выгрузка делается не для архивов (не только), а чтобы иметь возможность создать файловый вариант базы (9). Вопрос не совсем по теме: в Альфа-Авто сделаны 3 времени: ВремяЗавершенияРаботыСистемы, ВремяЖесткогоВыхода, ВремяМягкогоВыхода. После превышения 2-х последних текущего времени выполняется (должно по коду) ЗавершитьРаботуСистемы(), а после превышения - ПрекратитьРаботуСистемы(). В процессе отладки заметил, что ЗавершитьРаботуСистемы() выполняется лишь со 2-3 попытки!? Хотя факт ее запуска фиксируется в ЖР. |
|||
39
Dmitrii
гуру
09.02.21
✎
09:55
|
(25) >> И дальше будет увеличиваться.
Гхммм....гхмммм.... Я дико извиняюсь, но боюсь, что придётся Вас огорчить. Ничего уже у вас не увеличится. Что выросло, то выросло. |
|||
40
ДенисЧ
09.02.21
✎
10:02
|
||||
41
Dmitrii
гуру
09.02.21
✎
10:05
|
Извините конечно.
Но хернёй вы страдаете. Это, наверное, от скуки полнейшей или на почве короновируса... Есть простейшие инструменты СУБД, которые позволяются делать выгрузку и загрузку средствами СУБД. Причем для выгрузки не надо никого выгонять. А сам процесс работает в разы (а на больших объёмах на порядки) быстрее чем выгрузка/загрузка через dt. Нет ни одного вменяемого аргумента для использования выгрузки/загрузки через dt, кроме необходимости конвертировать базу с одной СУБД на другую СУБД (например перевод из файлового варианта в клиент-серверный или с MS-SQL на PostgreSQL). Даже копию базы для тестирования или разработки лучше держать в том же варианте, что основная рабочая база - в клиент-серверном. А если речь идёт о разработке, то для неё не нужны суперактуальные данные и вполне достаточно выгрузки, сделанной в любое ночное время хоть неделю назад. ИМХО. |
|||
42
seevkik
09.02.21
✎
10:07
|
Effector saver, не?)
|
|||
43
seevkik
09.02.21
✎
10:09
|
(41) Выгрузка в дт не произойдёт если структура метаданных поломана, а скуль сожрёт что угодно)
|
|||
44
Kassern
09.02.21
✎
10:10
|
(41) у них лишь один "вменяемый" аргумент - а если скуль упадет, что мы будем делать? Прав нет на доступ к скулю, а работать надо и т.д. в том же духе)
|
|||
45
Serg_1960
09.02.21
✎
10:12
|
(41) Вы не внимательны :( автор темы у предупреждала: "архив средствами СУБД делается. А выгрузка нужна мне"
|
|||
46
Kassern
09.02.21
✎
10:20
|
(45) база для "подстраховки"... разверните рядом на серве тестовую базу и настройте регламент заливки в нее путем скуля. Здесь только 1 вариант более жизнеспособный в реалиях поста, ТС работает у себя дома на своей 1ске купленной без возможности использования скуля (дорого) и религия, или политика партии не позволяет работать по RDP на стороне клиента. В этом случае действительно нужна какая-нить копия дтшки, но смысл делать это регламентом выгоняя трудяг, а потом еще по инету гонять базы данных, ну это такое...
|
|||
47
acht
09.02.21
✎
10:21
|
(25) > И дальше будет увеличиваться.
Еще чуть наброшу: https://bugboard.v8.1c.ru/error/000044708 В файловом варианте информационной базы,если файл базы данных имеет формат 8.3.8 и размер страницы 8K или больше, при попытке чтения или записи таблицы, содержащей большой объем данных, имеющей размер внутреннего файла > 4 ГБайт, может происходить ошибка Файл базы данных поврежден ... и аварийное завершение работы программы. Зарегистрирована: 12.07.2018 Статус: Планируется исправление в будущих версиях Запретить вам распоряжаться вашими же данными не могу, продолжайте в том же духе. |
|||
48
Serg_1960
09.02.21
✎
10:29
|
(45),(46) Согласен, но... например, как Вы уже написали, программист 1С может не иметь доступ к серверу SQL и его архивам; в организации - РИБ (ЦБ - SQL, узлы - файловые). Я могу ещё набросать варианты. Например, проблема заключается в программисте 1С - субъективность, которая влияет на объективность :)
|
|||
49
hhhh
09.02.21
✎
10:30
|
(39) ну да, ну да.
|
|||
50
Kassern
09.02.21
✎
10:32
|
(48) у файловых баз можно просто CDшник стянуть, вопрос доступа к архивам скуля и к самому скулю тоже решаемый, было бы желание, как говорится
|
|||
51
Serg_1960
09.02.21
✎
10:38
|
(50) Предлагаю завершить прения на тему "Не рекомендуется использовать механизм выгрузки для создания резервных копий информационной базы"(ИТС) - это же баян.
Израильский форум. Сначала ты задаешь вопрос, потом тебе задают вопрос. Русский форум. Сначала ты задаешь вопрос, потом тебе долго рассказывают какой ты #####. Итальянский форум. Пока ты задаешь вопрос, остальные начинают так активно общаться, что или заканчивается место на хостинге или форум закрывают за непарламентский выражения. Северокорейский форум. Сначала ты задаешь вопрос, а потом приходят люди в форме и говорят: "Здесь вопросы задаем мы." Финский форум. Сначала ты задаешь вопрос, потом ты заканчиваешь институт, служишь, женишься, рожаешь трех детей. После этого вопрос публикуется модератором. Эстонский форум. "А что-о тако-ое Фо-о-ору-ум?" |
|||
52
acht
09.02.21
✎
10:40
|
(51) > Предлагаю завершить прения
И начать рассказывать анекдоты. Поддерживаю. |
|||
53
Новиков
09.02.21
✎
10:46
|
(0) А в базе без пользователей, скрипт работает?
|
|||
54
Serg_1960
09.02.21
✎
10:50
|
(52) Sorry. Эээ... слишком уж серьезно :) стали осуждать, пардон, - обсуждать тему недостатков выгрузки в DT. Просто замечу: за пятнадцать лет работы, лично я, всего лишь дважды или трижды встречался с битыми файлами DT (причина: выгрузка из уже битой базы).
|
|||
55
hhhh
09.02.21
✎
10:56
|
(54) просто за базами sql следит куча админов, поэтому они и более надежные, а за файловой базой присматривает бухгалтер, поэтому после 5 лет такого присмотра она иногда и не выгружается.
|
|||
56
arsik
гуру
09.02.21
✎
10:59
|
(0) Не рекламы ради.
Купите Обновлятор 1С - он это умеет из коробки. Можно и бесплатьный, но у бесплатного нет возможности выполнения заданий по расписанию. Стоит копейки. |
|||
57
Mikhail Volkov
09.02.21
✎
16:43
|
(51) > Предлагаю завершить прения...
А как вопрос (38)? |
|||
58
Serg_1960
09.02.21
✎
17:14
|
(57) Предлагаю ещё раз перечитать первое предложение в (51) целиком :) Темы ветки, обсуждения ЗавершитьРаботуПользователей и прочих связанных проблем это не касалось. Вы же сами же говорили "Эх с (10) поста ветка в сторону свернула..."
|
|||
59
Garykom
гуру
09.02.21
✎
17:19
|
(36) >осилишь 400 гб в bak а потом в dt ?
если 400 гб в бак то в dt будет раз в 10 меньше гигов |
|||
60
NorthWind
09.02.21
✎
18:48
|
(57) завершение работы тяжелого процесса происходит немоментально. Выполняются все деструкторы, освобождается память. Это все запросто может происходить секунд 10 и больше, особенно если файл подкачки страниц находится на медленном жестком диске, а не на SSD.
|
|||
61
Mikhail Volkov
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 маловато чтобы пользователь успел что-то сделать полезного между предупреждениями
|
|||
62
Mikhail Volkov
10.02.21
✎
08:17
|
Еще вопрос вдогонку: в Альфа-Авто есть фрагмент:
ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Информация, , , "Время завершения работы системы: " + СокрЛП(ВремяЗавершенияРаботыСистемы) + ", Текущий момент: " + СокрЛП(ТекущийМомент) + ", Время жесткого выхода: " + СокрЛП(ВремяЖесткогоВыхода) + ", Время мягкого выхода: " + СокрЛП(ВремяМягкогоВыхода)); Если ТекущийМомент >= ВремяЗавершенияРаботыСистемы Тогда ПрекратитьРаботуСистемы(Истина); ИначеЕсли ТекущийМомент >= ВремяЖесткогоВыхода Тогда Предупреждение("Работа системы завершается " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25); ЗавершитьРаботуСистемы(Ложь, Истина); ИначеЕсли ТекущийМомент >= ВремяМягкогоВыхода Тогда Предупреждение("Работа системы завершается " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25); ЗавершитьРаботуСистемы(Истина, Истина); Иначе Предупреждение("Работа системы будет завершена " + ВремяЖесткогоВыхода + Символы.ПС + СообщениеАдминистратора, 25); КонецЕсли; Параметры ЗавершитьРаботуСистемы(): <ЗапрашиватьВозможность> (необязательный) Значение по умолчанию: Истина. <ПерезапуститьПриЗавершении> (необязательный) Значение по умолчанию: Ложь. В своем варианте 2-й параметр ставил везде Ложь, все равно система перезапускалась!? Пока совсем не убрал параметры. |
|||
63
NorthWind
10.02.21
✎
13:41
|
(61) Запустите 1С на той машине, где все это происходит. Попарьте ее чем-нибудь тяжелым чтобы памяти подожрала.
Запустите тут же диспетчер задач, найдите процесс 1сv8s. Затем закройте окно 1С и посмотрите, через сколько времени после этого процесс исчезнет из диспетчера задач. На современных машинах с SSD это происходит буквально в течение нескольких секунд. На стареньком ноутбуке с HDD я когда-то делал такие эксперименты - по полминуты-минуте точно приходилось ждать. |
|||
64
Mikhail Volkov
10.02.21
✎
15:42
|
(63) Да, сервера старые, SQL-сервер не раз загибался. Поэтому решил дополнительно сделать dt-выгрузку автоматом. Еще в процессе завершения пользователю задается вопрос: согласен ли он. Таймаут вопроса настраивается пользователем. Поэтому 2 минуты завершения - нормально. Просто неожиданно, раньше не сталкивался.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |