Существует несколько способов думать о текущем пользователе. Это зависит от того, как вы используете Advantage.
Выход sp_mgGetConnectedUsers дает следующее:
UserName - Имя компьютера
словарь пользователя - User используется для входа в Словаре ADS
адрес - IP, IPX или IPC адрес
OSUserLoginName - Клиент OS регистрационное имя
TS-адрес - IP-адрес конечного пользователя адреса клиента
ApplicationID - Уникально setable ID по умолчанию = имя ехе
Если вы используете Dictiona ry, и каждый человек связывает словарь с уникальным именем, тогда пользователь словаря будет способ пойти (вы также можете получить это путем «select user() из system.iota» (или) для sql-скриптов и т. д.). Адрес и имя пользователя будут IP-адресом пользователя и имени компьютера пользователя. Это должно помочь вам однозначно идентифицировать пользователя. Если ваши пользователи подключаются через сервер терминалов, вы можете использовать адрес TS, чтобы идентифицировать их в сочетании с OSUserLoginName. Я не буду подробно разбираться в ApplicationID, так как вы специально заявили, что не нуждаетесь в этом решении. Но ... Хотя вы можете установить это на все, что вы хотите по умолчанию, это имя приложения (т. Е. ARC.exe)
Часть B вашего вопроса - как связать запрос. Процедура sp_getsqlstatements вернет текущие активные запросы (или вы можете использовать информацию удаленного сервера в ARC). Это возвращает имя подключения, которое совпадает с именем пользователя из sp_mgGetConnectedUsers. Используя комбинацию, вы можете указать имя компьютера, IP-адрес (или добавление терминалов), имя пользователя-словаря, имя входа в систему клиента и имя приложения.
sp_GetSQLStatements возвращает имя пользователя (вместе с оператором SQL) как часть его нормального вывода. Это то, что вы ищете? Кажется, вы могли бы соотнести это с UserName от sp_mgGetConnectedUsers(). –
Я вижу, что это уже то, что предложил JD. Я слепой. –