Postgresql эквивалент SQL Server sysprocesses логин и имя_программы - PullRequest
3 голосов
/ 02 июля 2010

Я мигрирую в Postgresql, но столкнулся с проблемой.

«Уловка», которую я использую с SQL Server, заключается в том, чтобы всегда входить в систему с использованием одного пользователя (обычно sa), и я пишу имя_программы в соединении с базой данных, чтобы проверить количество зарегистрированных пользователей в приложении. Каждый раз, когда я делаю соединение БД для 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.

Ответы [ 2 ]

3 голосов
/ 02 июля 2010

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

1 голос
/ 04 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...