2011-02-07 4 views
1

Я использую Sybase Advantage, у меня есть 2 таблицы:базы данных Advantage как retieve имя соединения

  • Первая таблица имеет записи данных
  • Вторая таблица хранит историю первого

В первой таблице есть триггеры для заполнения записей во второй таблице в зависимости от того, какие поля будут изменены.

Я хотел был бы сохранить имя соединения (ПК, который сделал запрос), имя, которое отображается на странице активных запросов (диалоговое окно Server Info), а не имя пользователя. Кто-нибудь знает возможно ли это?

Благодаря

+0

Связанный: http://stackoverflow.com/questions/2803747/how-to-define-a-current-user –

ответ

2

Следующая SQL заявление может быть использовано для извлечения имени компьютера вместо имени пользователя.

SELECT * FROM (EXECUTE PROCEDURE sp_mgGetConnectedUsers()) ConnUsers WHERE ConnUsers.DictionaryUser = USER();

хранимая процедура sp_mgGetConnectedUsers документально here.

+0

Спасибо за ответ, но этот запрос не работает, я использую Advantage версии 9. Execute процедура возвращает информацию в подключенных пользователях, но запрос возвращает недостающую ошибку таблицы. Также это не работает, если несколько пользователей имеют одинаковые сведения о подключении. Я мог бы узнать, какое OSUserLoginName использует триггер (обновление таблицы). –

+0

Если ваши словарные входы не уникальны, все становится немного сложнее. Лучше всего установить идентификатор приложения, содержащий уникальный идентификатор GUID. Идентификация строки, а затем поиск по ней. – LanceSc

+0

Мы используем версию 9, которая не имеет свойства ApplicationID в компоненте соединения. Я не знаю, как это будет работать либо в триггере. Я думал, что вместо того, чтобы включить его в триггер, чтобы добавить запись в таблицу истории (после триггера), может существовать другой тип триггера до того, как он обновит поле в таблице с пользователем, а затем после второго триггера может набрать этот стоимость. –

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