Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Добрый день, подскажите грамотное решение. Требуется прописать задание для отключение неактивных пользователей. Грубо - 10 минут бездействуешь, вышел из базы.
6 авг 14, 12:53    [16406003]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Glory
Member

Откуда:
Сообщений: 104760
А что такое "бездействуешь" ?
6 авг 14, 12:55    [16406015]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sys.sysprocesses + last_batch + spid + kill
6 авг 14, 12:56    [16406016]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
А они чем-то мешают?
6 авг 14, 12:57    [16406026]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Glory
Member

Откуда:
Сообщений: 104760
MedBrat
вышел из базы.

Из базы нельзя "выйти". Можно прервать все соединение.
6 авг 14, 12:58    [16406039]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Jovanny
А они чем-то мешают?

Софт на ограниченное кол-во лицензий. Покуда коннект есть, другие не могут работать.
6 авг 14, 13:58    [16406521]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory
А что такое "бездействуешь" ?

SLEEP - минут в районе 10...
6 авг 14, 14:00    [16406533]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Glory
Member

Откуда:
Сообщений: 104760
MedBrat
Glory
А что такое "бездействуешь" ?

SLEEP - минут в районе 10...

В терминах MSSQL, а не в ваших
6 авг 14, 14:03    [16406562]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory
MedBrat
пропущено...

SLEEP - минут в районе 10...

В терминах MSSQL, а не в ваших


Есть sp_who. В нем отображается статус. Статус sleeping означает, что юзверь бездействует и CMD - AWAITING COMMAND.
Может быть я не достаточно понятно изложил чего хочу?

Все просто. Висит соединение - занята лицензия. Хочу контролировать процесс присутствия по времени. Ничего не делаешь 10 минут - соизволь отключиться.
6 авг 14, 14:08    [16406594]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Glory
Member

Откуда:
Сообщений: 104760
MedBrat
Есть sp_who. В нем отображается статус. Статус sleeping означает, что юзверь бездействует и CMD - AWAITING COMMAND.
Может быть я не достаточно понятно изложил чего хочу?

И чтов вам мешает тогда использовать sp_who для получения нужного вам статуса соединения ?
6 авг 14, 14:09    [16406606]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
CMD - AWAITING COMMAND.

с чего вы взяли, что клиент не работает? скорее всего так клиентское приложение написано, что не дофетчивает например весь rowset в грид на форме.
6 авг 14, 14:10    [16406612]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory
MedBrat
Есть sp_who. В нем отображается статус. Статус sleeping означает, что юзверь бездействует и CMD - AWAITING COMMAND.
Может быть я не достаточно понятно изложил чего хочу?

И чтов вам мешает тогда использовать sp_who для получения нужного вам статуса соединения ?


1. нет тайминга простоя.
2. Так это не работает. SELECT * from sp_who WHERE status='sleeping'. А значит надо придумывать другие способы.
6 авг 14, 14:11    [16406618]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Konst_One
CMD - AWAITING COMMAND.

с чего вы взяли, что клиент не работает? скорее всего так клиентское приложение написано, что не дофетчивает например весь rowset в грид на форме.


Т.е. sleeping + AWAITING COMMAND не гарантирует бездействие? Каким образом можно определить в таком случае?
6 авг 14, 14:12    [16406631]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
мне кажется , что решение о простое клиентов должны выдавать сами клиенты (я про ПО). т.е. это не забота сервера.
6 авг 14, 14:13    [16406637]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Glory
Member

Откуда:
Сообщений: 104760
MedBrat
1. нет тайминга простоя.
2. Так это не работает. SELECT * from sp_who WHERE status='sleeping'. А значит надо придумывать другие способы.

1. Так его нигде нет. Самому придется "вычислять".
2. Ага. Придумайте exec
6 авг 14, 14:15    [16406662]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Konst_One
мне кажется , что решение о простое клиентов должны выдавать сами клиенты (я про ПО). т.е. это не забота сервера.



Честно говоря, начинаю склоняться, что решение самое разумное. Надо в клиенте прописываться...
6 авг 14, 14:20    [16406701]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Konst_One
мне кажется , что решение о простое клиентов должны выдавать сами клиенты (я про ПО). т.е. это не забота сервера.

Ну, если вы разработчик клиентской части.
6 авг 14, 14:34    [16406825]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
А так
SELECT        session_id
FROM            sys.dm_exec_sessions
WHERE        (is_user_process = 1) AND (last_request_end_time < DATEADD(MINUTE, - 10, GETDATE())) AND (status = 'sleeping')

И можно добавить условия по program_name, host_name и т.д.
6 авг 14, 14:37    [16406834]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Если лицензия по пользователям - клиент однозначно должен отключаться сам после запроса.
Но надо иметь в виду, что спам подключений не очень хорошая вещь.
6 авг 14, 14:48    [16406919]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
mrGuest
Guest
Jovanny
А так
SELECT        session_id
FROM            sys.dm_exec_sessions
WHERE        (is_user_process = 1) AND (last_request_end_time < DATEADD(MINUTE, - 10, GETDATE())) AND (status = 'sleeping')

И можно добавить условия по program_name, host_name и т.д.


и потом в цикле массовый KILL обсуждаемый в соседнем топике )
https://www.sql.ru/forum/1109219/execute
6 авг 14, 16:26    [16407668]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Ну как-то так.:)
6 авг 14, 18:28    [16408283]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
Jovanny
А так
SELECT        session_id
FROM            sys.dm_exec_sessions
WHERE        (is_user_process = 1) AND (last_request_end_time < DATEADD(MINUTE, - 10, GETDATE())) AND (status = 'sleeping')

И можно добавить условия по program_name, host_name и т.д.


Делал себе такую штуку). Только записывал в отдельную табличку результаты, и если не происходило за указанный период прироста по цпу и диску - тогда килл.
6 авг 14, 18:38    [16408314]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
mrGuest
Guest
А нет ли риска, что между проверкой и KILL у пользователя-таки появится активность? :)
Приложение пытается дернуть какую-то процедурку, а в этот момент попадает под санкции и его отключают от сервера.
7 авг 14, 08:34    [16409773]     Ответить | Цитировать Сообщить модератору
 Re: Отключение неактивных пользователей  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
mrGuest,

Ну, тут нужно выбирать - либо лицензию на большее число пользователей, либо неудобства в виде внезапных отключений от базы.
7 авг 14, 12:36    [16411083]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить