#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() и т. Д. Приводят пользователя для входа в систему, который не является «реальным» пользователем.