Я застрял в этом вопросе на несколько дней - любая помощь очень ценится.
У меня есть триггер SQL, который вызывает DLL, написанную на C #. В этой функции мне требуется имя входа в Windows человека, который создал команду SQL, которая запустила триггер. Неважно, получаю ли я эту информацию из C # или SQL.
К сожалению, большинство нормальных маршрутов не помогло мне.
Встроенная функция SQL NT_CLIENT () работает, только если для входа в SQL используется проверка подлинности Windows.
DLL работает на сервере, и поэтому Environment.UserName не имеет значения, а WindowsIdentity.GetCurrent (). Name возвращает пустую строку, если пользователь базы данных (создатель потока) не использовал аутентификацию Windows.
Я знаю имя домена, IP-адрес и имя рабочей станции. Из этого я понял, как получить SID в C # - могу ли я в любом случае получить имя для входа в Windows из этих битов информации с помощью C # или есть встроенная функция SQL, которую я пропустил?
EDIT:
Спасибо, что сообщили мне, что SQL был неудачным решением этой проблемы. У нас есть клиент, который регистрирует всех в БД как один пользователь. В итоге мне пришлось сделать небезопасную сборку, которая вызывает функцию командной строки WMIC. Дрянное решение, но оно сделало свою работу. Еще раз спасибо за советы. :)