В версии 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 регулярно выполняющий этот запрос и записывающий его в файл или специальную таблицу, то можно собрать статистику для анализа.
Добрый день. Постоянно возникает ситуация, что кол-во пользователей в одно время, полученных запросом и утилитой SASessionSrvInfo.exe отличается. В чем может быть причина? Спасибо
Наталья, думаю для получения ответа на этот вопрос надо просто сравнить результаты SASessionSrvInfo и прямого запроса. Не видя результатов, ответить будет затруднительно. Возможных причин для расхождения достаточно достаточно много.
Например, вероятно, кто-то использует БД минуя клиентскую часть IS-Builder - он будет виден в SQL-запросе, но не будет на сервере сеансов. Это могут быть например соединения от заданий админинистрирования на SQL-сервере, или администратор, работающий с БД через SQL Server Management Studio - по логинам и машинам должно быть примерно понятно кто это.
Если Вы используете SQL-запрос, приведенный в материале, то я вижу в нем недостаток - он выводит уникальные логины. Между тем, под одним логином могут быть соединения к системе с разных машин - и на сервере сеансов они вероятно отображаются как разные подключения.
В общем, думаю, различия в результатах - это нормально и вполне объяснимо. Если действительно хотите до конца разобраться - берите свои конкретные результаты, и сравнивайте их. Дополнительные сведения можно получать дополнительными SQL-запросами.
Спасибо.
Добрый день. В Directum 4.8 (возможно и раньше) есть более интересный способ получения списка пользователей.
Для этого запустите:
Данная строка выдает те же данные, что и графический интерфейс, но в формате xml. Поэтому там не может быть каких-то "мертвых душ" и служебных пользователей.
Для запроса возможных параметров и их пояснения запустите:
Думаю, следует дополнить статью, т.к. гугл ее выдает первой при запросе "Directum количество сеансов", но не все читают комментарии.
Авторизуйтесь, чтобы написать комментарий