2010-07-02 2 views
3

Я перехожу к Postgresql, но перед вами стоит проблема.postgresql эквивалент SQL Server sysprocesses loginname и имя_программы

«Трюк», который я использую с SQL Server, заключается в постоянном входе в систему с использованием одного пользователя (типично sa), и я пишу имя_программы в подключении к базе данных, чтобы проверить количество зарегистрированных в настоящее время пользователей в приложении. Каждый раз, когда я подключаю db для UserX, я устанавливаю имя_компьютера в соединении как «MyApp_UserX». Таким образом, используя следующий запрос, я могу подсчитать, сколько пользователей подключено к моему приложению. Я использую это для проверки лицензии, и он очень надежен в sql-сервере.

select count(sp.loginame) as CNT 
from Master.dbo.sysprocesses sp 
join Master.dbo.sysdatabases sd on sp.dbid = sd.dbid 
where sd.name = MYDATABASE and sp.program_name like 'MyApp%' 

В настоящее время Postgresql не позволяет мне указывать строку типа program_name. Что вы можете предложить?

Для пользователей Delphi: Примечание. Я использую unidac, переходя из SDAC. в SDAC у меня было TMSConnection.ApplicationName, но нет эквивалента Postgresql.

ответ

3

Вы можете либо подождать 9.0, либо сделать несколько предположений и подсчитать (почти все) соединения с соответствующей базой данных.

+0

Спасибо за ценную информацию, на самом деле 9,0 содержит ту же самую функцию, и было бы здорово иметь его. – LaBracca

1

Если вы входите в систему с разных клиентских компьютеров, вы можете использовать IP-адрес, указанный в системном представлении pg_stat_activity. Для каждого подключения, которое делается на сервере, отображается IP-адрес клиента. Если разные пользователи используют разные компьютеры, это может сработать для вас (пока не закончится 9.0), до тех пор это может быть обходным путем.

http://www.postgresql.org/docs/current/static/monitoring-stats.html

+0

благодарит за информацию. Это божественное предложение, но в моем случае я не могу подать заявку, потому что не IP-адрес недостаточно по крайней мере по двум причинам: можно использовать pgadmin и «использовать соединение», или 2 пользователя могут использовать один и тот же компьютер (в сервер терминалов). – LaBracca

Смежные вопросы