|
19.06.2006, 15:09 | #1 |
Участник
|
Почему не заполнено в Активных пользователях поле SPID?
Почему не заполнено в Активных пользователях поле SPID? Как настроить? У нас пользователи работают в терминале и мы не можем идентифицировать их при блокировках из за того, что нет привязки терминальной сесии и процесса в SQL. Если бы в Активных пользователях было заполнено поле SPID, можно было бы однозначно определить кто их пользователей в терминале под какой SQL сессией работает.
|
|
19.06.2006, 15:40 | #2 |
Участник
|
А ваши терминальные клиенты подключены к AOS или ч/з двухзвенку?
__________________
Axapta v.3.0 sp5 kr2 |
|
19.06.2006, 16:06 | #3 |
Участник
|
Цитата:
Сообщение от AndyD
А ваши терминальные клиенты подключены к AOS или ч/з двухзвенку?
|
|
19.06.2006, 16:38 | #4 |
Участник
|
В двухзвенке не передается информация об открытых сессиях в сервере б/д от клиента к клиенту.
__________________
Axapta v.3.0 sp5 kr2 |
|
19.06.2006, 16:57 | #5 |
Участник
|
Цитата:
Сообщение от AndyD
В двухзвенке не передается информация об открытых сессиях в сервере б/д от клиента к клиенту.
|
|
19.06.2006, 17:15 | #6 |
Участник
|
Для текущего пользователя
X++: xSession session;
;
session = new xSession();
info(session.databaseSpid());
__________________
Axapta v.3.0 sp5 kr2 |
|
19.06.2006, 18:50 | #7 |
Участник
|
Цитата:
Сообщение от AndyD
Для текущего пользователя
X++: xSession session;
;
session = new xSession();
info(session.databaseSpid()); А как же определять? В любом случае, есть же связь текущего пользователя и сесcии на SQL. Может тогда какой нить запрос прямо к таблицам SQL делать? |
|
19.06.2006, 23:29 | #8 |
Участник
|
А вы попробуйте, например, так
X++: xSession session; InventTable inventTable; ; session = new xSession(); while select inventTable { info(session.databaseSpid()); break; } По умолчанию Axapta держит подключение для MS SQL в течение 1 мин с момента последнего обращения к б/д (для Oracle - 30 мин). Эти параметры можно регулировать с помощью конфигурационной утилиты. При повторном подключении, возможно, будет получен новый SPID Функция databaseSpid() возвращает значение в том случае, если в момент ее вызова есть открытые курсоры на сервере. Кроме того, если есть дополнительные открытые сессии (с помощью класса Connection), то будут возвращены так же SPID для этих сессий
__________________
Axapta v.3.0 sp5 kr2 |
|
20.06.2006, 09:19 | #9 |
Участник
|
Такое предложение - в конфигурационной утилите для терминальных клиентов включить параметр "Leave connection running when idle" на закладке Database. В этом случае Axapta не будет отключить соединение с б/д по таймауту.
При старте Axapta сохранять в таблицу на сервере необходимые вам параметры - SPID, время подключения, имя пользователя и т.д. При штатном выходе - удалять эту запись. При вылете - останутся висеть записи, но можно при повторном подключении и получении того же SPID для другой сессии удалять эти записи. Ну и периодические разборки полетов
__________________
Axapta v.3.0 sp5 kr2 |
|
20.06.2006, 12:20 | #10 |
Участник
|
Цитата:
Сообщение от AndyD
Такое предложение - в конфигурационной утилите для терминальных клиентов включить параметр "Leave connection running when idle" на закладке Database. В этом случае Axapta не будет отключить соединение с б/д по таймауту.
При старте Axapta сохранять в таблицу на сервере необходимые вам параметры - SPID, время подключения, имя пользователя и т.д. При штатном выходе - удалять эту запись. При вылете - останутся висеть записи, но можно при повторном подключении и получении того же SPID для другой сессии удалять эти записи. Ну и периодические разборки полетов |
|
|
|