Получение пользователя Windows из строки подключения

#sql-server #vba #ms-access

#sql-сервер #vba #ms-access

Вопрос:

Для запуска в SQL Server 2008R2 мне нужно знать пользователя, который вставил, обновил или удалил запись.

Поскольку разные пользователи входят в систему с одной и той же строкой подключения, я не знаю, кто действительно зарегистрировался на сервере (я использую аутентификацию SQL с тем же UID и предоставляю доступ через базу данных Access !!).

Я хотел бы, если возможно, добавить переменную в строку подключения, например, Application Name=myrealusername но, похоже, из Access VBA я не могу добавить этот параметр.

Кто-нибудь знает, как получить реальное имя пользователя, вошедшего в систему, чтобы передать имя пользователя триггеру?

Комментарии:

1. Если вам нужно РЕАЛЬНОЕ имя пользователя, используйте проверку подлинности Windows.

2. Если все ваши sql-соединения выполняются с одним и тем же пользователем, то sql не имеет возможности узнать. Если вы переключитесь на проверку подлинности Windows, вы можете сказать, но с текущим способом работы вашего приложения вы застряли.

Ответ №1:

Вы можете попробовать записать HOST_NAME() , чтобы захватить экземпляр, из которого был выполнен запрос. Если у каждого пользователя есть собственный компьютер, это, вероятно, одно из ваших лучших предположений, если вы не планируете использовать проверку подлинности Windows.

Более подробная информация: HOST_NAME() Документация MSDN

Очевидно, что единственным реальным решением было бы использовать проверку подлинности Windows.

Комментарии:

1. Спасибо, вместе с таблицей, расшифровывающей HOST_NAME в User, я получаю нужную мне информацию!

Ответ №2:

Вы можете использовать проверку подлинности Windows и попробовать использовать

 select suser_name()
  

Комментарии:

1. Нет, все мои попытки с CURRENT_User, suser_Name() и т. Д. Приводят пользователя для входа в систему, который не является «реальным» пользователем.