Как получить список пользователей, подключенных к системе DIRECTUM?

3 4

В версии DIRECTUM 4.6 появилась утилита SASessionSrvInfo.exe, позволяющая сделать это. Запустить ее можно из папки с установленной клиентской частью DIRECTUM 4.6.
Для версий ниже 4.6 список пользователей можно получить тремя способами:

1. С помощью сервера сеансов.
Для этого необходимо в параметрах "Имя файла протоколирования регистрации пользователей", "Признак протоколирования регистрации пользователей" и "Период протоколирования регистрации пользователей" файла SBSessionSrvSettings.xml установить значения для ведения файла статистики. Анализируя полученный файл можно узнать сколько пользователей подключено к системе.

Cтруктура файла настроек сервера сеансов SBSessionSrvSettings.xml описана в руководстве администратора системы DIRECTUM, в разделе "Файловый состав DIRECTUM \ Файлы сервисных служб \ Описание файлов сервисных служб \ Файл SBSessionSrvSettings.xml".

Примечание. Изменения файла SBSessionSrvSettings.xml вступят в силу только после перезапуска сервера сеансов.  Сервер сеансов рекомендуется перезапускать в нерабочее время, т.к. в процессе перезапуска происходит разрыв соединения с клиентскими компьютерами.

2. С помощью SQL-сервера.
Чтобы определить, кто в настоящий момент использует базу данных необходимо выполнить запрос:
select distinct
loginame
from
master..sysprocesses
where
dbid = DB_ID('<имя БД>') and
spid <> @@SPID — исключить текущего пользователя
order by
loginame
где <имя БД> - имя базы данных.

3. Воспользоваться хранимой процедурой sp_who.
Если настроить SQL-JOB регулярно выполняющий этот запрос и записывающий его в файл или специальную таблицу, то можно собрать статистику для анализа.

3
Авторизуйтесь, чтобы оценить материал.
1
Наталья Евшина

Добрый день. Постоянно возникает ситуация, что кол-во пользователей в одно время, полученных запросом и утилитой SASessionSrvInfo.exe отличается. В чем может быть причина? Спасибо

Степан Мурашов

Наталья, думаю для получения ответа на этот вопрос надо просто сравнить результаты SASessionSrvInfo и прямого запроса. Не видя результатов, ответить будет затруднительно. Возможных причин для расхождения достаточно достаточно много.

Например, вероятно, кто-то использует БД минуя клиентскую часть IS-Builder - он будет виден в SQL-запросе, но не будет на сервере сеансов. Это могут быть например соединения от заданий админинистрирования на SQL-сервере, или администратор, работающий с БД через SQL Server Management Studio - по логинам и машинам должно быть примерно понятно кто это.

Если Вы используете SQL-запрос, приведенный в материале, то я вижу в нем недостаток - он выводит уникальные логины. Между тем, под одним логином могут быть соединения к системе с разных машин - и на сервере сеансов они вероятно отображаются как разные подключения.

В общем, думаю, различия в результатах - это нормально и вполне объяснимо. Если действительно хотите до конца разобраться - берите свои конкретные результаты, и сравнивайте их. Дополнительные сведения можно получать дополнительными SQL-запросами.

Наталья Евшина

Спасибо.

Алексей Буров

Добрый день. В Directum 4.8 (возможно и раньше) есть более интересный способ получения списка пользователей. 

Для этого запустите:

"C:\Program Files (x86)\DIRECTUM Company\DIRECTUM 4.8\SASessionSrvInfo.exe" -S=DirServ -D=DirBase -N=Administrator -W=MyMegaPassw -F=C:\DirectumUser.xml

Данная строка выдает те же данные, что и графический интерфейс, но в формате xml. Поэтому там не может быть каких-то "мертвых душ" и служебных пользователей.

Для запроса возможных параметров и их пояснения запустите:

SASessionSrvInfo.exe /?

Думаю, следует дополнить статью, т.к. гугл ее выдает первой при запросе "Directum количество сеансов", но не все читают комментарии.

Авторизуйтесь, чтобы написать комментарий