|
|
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Добрый день. Помогите пожалуйста разобраться в одном маленьком вопросике. Есть база 1С 8.1 на SQL, создан батник для создания резервных копий, но к сожалению он работает только когда завершены все сеансы работы с базой, по-этому возникла задача - как принудительно завершить сеансы всех пользователей данной БД. Я создал задание, которе выполняет следующие команды: ALTER DATABASE имяБД SET SINGLE_USER WITH ROLLBACK IMMEDIATE пользователи отрубаются, но сеансы работы платформы 1С НЕТ, они отрубаются только после нажатия пользователем на сообщении кнопки "Завершение работы". Как мне сделать так чтобы при выполнении задания отключалась 1С отключалась без вмешательства пользователя? Зарание спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 11:06 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdmin, насколько я помню, сама 1с создала 1с:сервер как раз для управления, там есть возможность настроить чтоб сервер отрубал всех пользователей (блокировал базу), в определенное время, была просто необходимость раньше работать в конфигураторе живой базы, и надо было переодически всех выкидывать дабы обновить базу... попробуйте покапаться в самом 1с:сервере п.с. сейчас нет под рукой скуля чтоб проверить то что предлагаю сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 11:13 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdmin, Выбросьте свой батник в помойку. Настройте для бэкапа жоб с расписанием в SQL Server. И всё, не надо никого выгонять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 12:52 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
SQL-копии, это не вариант. Из личного опыта: быкапилась SQL-ка в оджной конторе, все хорошо ни одной ошибки не выдавала, потом накрылась база, хотели востановить, а там болт, "не сходится контрольная сумма", востановили только базу с 3 месяцами потери данных, и ни один спец не ответил нам на этот вопрос, от чего она не востанавливалась из SQL-ной копии. Второй вариант: накрылась SQL, все работа встала!!!SQL-копии не годны, а из ДТ-шника я востановлю файловый вариант. И вообще бекапы 1C средствами SQL не рекамендуются)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 13:49 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdmin И вообще бекапы 1C средствами SQL не рекамендуются)) Это не так. Наоборот, настоятельно рекомендуются 1с, особенно для больших баз. Причем вероятность сбоя при попытке восстановления из .dt значительно выше (о причинах пока распространяться не стану, но в практике случалось неоднократно). По существу вопроса. Нужно написать регламентное задание 1С, используя методы раздела Администрирование кластера серверов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 14:21 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
СисойПо существу вопроса. Нужно написать регламентное задание 1С, используя методы раздела Администрирование кластера серверов Да. Разобрался с этим вариантом все работает, всех выкидывает, но база полностью блокируется, и бекап сделать не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 14:47 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Может у кого есть свои варианты , как делать автоматом бекапы баз 1С? Буду презнателен если поделитесь))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 14:58 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdminSQL-копии, это не вариант. Из личного опыта: быкапилась SQL-ка в оджной конторе, все хорошо ни одной ошибки не выдавала, потом накрылась база, хотели востановить, а там болт, "не сходится контрольная сумма", востановили только базу с 3 месяцами потери данных, и ни один спец не ответил нам на этот вопрос, от чего она не востанавливалась из SQL-ной копии. Второй вариант: накрылась SQL, все работа встала!!!SQL-копии не годны, а из ДТ-шника я востановлю файловый вариант. И вообще бекапы 1C средствами SQL не рекамендуются)) Вы совершенно не правы. Если у Вас база крутится в клиент-серверном варианте, то единственный разумный вариант - это бэкапы ср-ми SQL Server'a. Читайте документацию 1С. dt-выгрузки 1С делать категорически не рекомендует из-за того, что при наличии в базе некоторых логических ошибок они попросту теряются при упаковке в .dt, что грозит непредсказуемыми последствиями в дальнейшем, т.к. в этом случае исправить их в базе уже будет невозможно, в отличие от варианта со стандартным бэкапом ср-ми SQL server. А чтобы не пришлось столкнуться с ошибками при распаковке из SQL-бэкапа, возмите себе за правило периодически проверять работоспособность бэкапов. Но повторяю Вам ещё раз, это совершенно надежный вариант, который безопасен и для "горячей" базы. Я не знаю про ваш личный опыт, могу сказать, что у меня опыт работы с 1С свыше 10 лет. За это время многократно приходилось разворачивать базы с SQL-бэкапа и ни разу с этим не возникало никаких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 15:29 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
От dt-шников нельзя отказываться, если накроется SQL, то работа встанет. Спорить по поводу лучшего способа создания бекапов смысла нет, т.к. надо делать и SQL-бекап, и выгружать .dt-шник,дабы избежать беды. Как настроить автоматом бекап SQL у меня получилось, и настроить авто-бекап в .dt-шник тоже получилось, но бывают случаи(частые), когда работники поздно уходят дамой и не завершают работу программы и бекап не делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 15:45 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
в чем проблема то... пишешь vbs, в нем ломишься как сайгак по кластеру и срубаешь все коннекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 15:54 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
пользователю будет мессага - "принудительно разорвал соединение, целую". Зайдет утром по-новой... чтоб ыне обламать кого-то работающего - можно щупать объем данных по коннекту за последние 5 мин. Трафика нет - на выход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 15:57 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdmin, В типовых конфах (за все не поручусь, в Бухгалтерии точно есть) есть обработка БлокировкаСоединенийСИнформационнойБазой. Посмотрите как она работает, сделайте регламентное задание в 1С и вызывайте её, когда Вам нужно делать выгрузки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 15:59 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
nicktchertssAdmin, В типовых конфах (за все не поручусь, в Бухгалтерии точно есть) есть обработка БлокировкаСоединенийСИнформационнойБазой. Посмотрите как она работает, сделайте регламентное задание в 1С и вызывайте её, когда Вам нужно делать выгрузки Есть такая штука, но она предусматривает ручную работу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 16:08 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Господин ПЖв чем проблема то... пишешь vbs, в нем ломишься как сайгак по кластеру и срубаешь все коннекты Вариант хороший. Скинь пример пожалуйста, если есть, а то я не пойму как ломиться по кластеру, если скриптом отрубать все конекты SQL, то можно отрубить лишнее, а это не желательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 16:11 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Там не коннекты SQL а коннекты с серверу предприятия рубятся, можно по приложению проверить, что рубить что нет, где-то на мисте был пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 16:52 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
tssAdmin Есть такая штука, но она предусматривает ручную работу Да что ж такое, всё разжевывать надо, как в детском саду(( Я же говорю, сделать регламентное задание, в нем прописать вызов нужного механизма. Вот его основная часть. Процедура ЗавершитьРаботуПользователей() Экспорт Соединения = ПолучитьСоединенияИнформационнойБазы(); Если Соединения.Количество() = 1 Тогда // Отключены все пользователи, кроме текущего сеанса // В последнюю очередь завершается сеанс, запущенный с параметром "ЗавершитьРаботуПользователей". // Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; // Получим текущее значение параметров блокировки ТекущийРежим = ПолучитьБлокировкуУстановкиСоединений(); БлокировкаУстановлена = ТекущийРежим.Установлена; ВремяНачалаБлокировки = ТекущийРежим.Начало; ИнтервалОтключения = - УправлениеСоединениямиИБ.ИнтервалОжиданияЗавершенияРаботыПользователей(); ТекущийМомент = ТекущаяДата(); Если БлокировкаУстановлена И (НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки) ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалОтключения) Тогда // после начала блокировки сеансы всех пользователей должны быть отключены // если этого не произошло пробуем принудительно прервать соединения ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей"); // Невозможно принудительно отсоединить подключения в файловом режиме работы Если ОпределитьЭтаИнформационнаяБазаФайловая() Тогда УправлениеСоединениямиИБ.РазрешитьРаботуПользователей(); Сообщение = УправлениеСоединениямиИБ.ПолучитьНазванияСоединенийИБ("Не удалось завершить работу пользователей:"); ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Предупреждение, , , Сообщение); ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; ПараметрыАдминистрированияИБ = УправлениеСоединениямиИБ.ПолучитьПараметрыАдминистрированияИБ(); ПараметрыЗапуска = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";"); Если ПараметрыЗапуска.Количество() > 1 Тогда ПараметрыАдминистрированияИБ.ИмяАдминистратораИБ = Врег(ПараметрыЗапуска[1]); КонецЕсли; Если ПараметрыЗапуска.Количество() > 2 Тогда ПараметрыАдминистрированияИБ.ПарольАдминистратораИБ = Врег(ПараметрыЗапуска[2]); КонецЕсли; Результат = УправлениеСоединениямиИБ.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ); Если Результат Тогда Сообщить("Завершение работы пользователей выполнено успешно.", СтатусСообщения.Информация); ЗавершитьРаботуСистемы(Ложь); Иначе Сообщение = УправлениеСоединениямиИБ.ПолучитьНазванияСоединенийИБ("Не удалось завершить работу пользователей:"); Сообщить(Сообщение, СтатусСообщения.Внимание); ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Предупреждение, , , Сообщение); КонецЕсли; КонецЕсли; КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 17:08 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Процедура ПриНачалеРаботыСистемы() ... ЗавершениеРаботыПользователей(); ПодключитьОбработчикОжидания("ЗавершениеРаботыПользователей",10); ... // РегистрСведений АктивныеПользователи МенеджерЗаписи=РегистрыСведений.АктивныеПользователи.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Пользователь=ПараметрыСеанса.Пользователь; МенеджерЗаписи.Компьютер=ИмяКомпьютера(); МенеджерЗаписи.ВремяВхода=ТекущаяДата(); МенеджерЗаписи.Время=60; МенеджерЗаписи.Записать(); КонецПроцедуры // ПриНачалеРаботыСистемы() Процедура ЗавершениеРаботыПользователей()Экспорт Если ПараметрыСеанса.Пользователь=Справочники.Пользователи.Администратор Тогда Возврат; КонецЕсли; Если Час(ТекущаяДата())<Час(Константы.НачалоРаботы.Получить()) ИЛИ Час(ТекущаяДата())>Час(Константы.КонецРаботы.Получить()) Тогда МенеджерЗаписи=РегистрыСведений.АктивныеПользователи.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Пользователь=ПараметрыСеанса.Пользователь; МенеджерЗаписи.Компьютер=ИмяКомпьютера(); МенеджерЗаписи.Прочитать(); Тики=МенеджерЗаписи.Время-10; Предупреждение("Система прекратит функционирование через "+МенеджерЗаписи.Время+" секунд",2,"Предупреждение"); Если Тики<0 Тогда Предупреждение("В систме 1С проводятся профилактические работы",2,"Forbidden"); ПрекратитьРаботуСистемы(); Иначе МенеджерЗаписи.Время=Тики; МенеджерЗаписи.Записать(); КонецЕсли; КонецЕсли; КонецПроцедуры В константах прописано разрешенное время работы пользователей. При запуске системы проверяется текущее время и разпешенный интервал Обработчик ожидания каждые 10 секунд проверяет не надо ли выгонять пользователя. Если время вышло то каждые 10 секунд ему вываливается на экран предупреждение что скоро система завершит работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 13:16 |
|
||
|
Завершени сеансов пользователей
|
|||
|---|---|---|---|
|
#18+
Ещё можно скриптом задать рестарт сервера 1С Предприятие - тогда коннекты надёжно отваливаются. У нас так настроен ежедневный ночной бэкап, а потом сразу же восстановление dt-файла на тестовый сервер. Ещё вроде есть и Postgres-ные бэкапы, но в деталях я не в курсе, что и как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2009, 16:05 |
|
||
|
|

start [/forum/topic.php?fid=28&fpage=132&tid=1523329]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 312ms |

| 0 / 0 |
