Получение имени входа Windows с сервера

Я застрял в этой проблеме в течение нескольких дней – любая помощь очень ценится.

У меня есть триггер SQL, который вызывает DLL, написанную на C #. В этой функции мне требуется имя входа в систему для лица, которое инициировало команду SQL, которая запускала триггер. Неважно, получаю ли я эту информацию с C # или SQL.

К сожалению, большинство нормальных маршрутов мне не удалось.

Встроенная функция SQL NT_CLIENT () работает только в том случае, если для входа в SQL используется проверка подлинности Windows.

DLL запускается на сервере, поэтому Environment.UserName не имеет значения и WindowsIdentity.GetCurrent (). Имя возвращает пустую строку, если только пользователь базы данных (создатель потока) не использовал проверку подлинности Windows.

Я знаю доменное имя, IP-адрес и имя рабочей станции. Из этого я выяснил, как получить SID в C # – есть ли в любом случае я могу получить имя входа Windows из этих битов информации с помощью C # или есть ли встроенная функция SQL, которую я пропустил?

EDIT: Спасибо, что сообщили мне, что SQL – это проблема для этой проблемы. У нас есть клиент, который регистрирует всех в БД как один пользователь. То, что мне пришлось сделать, это сделать небезопасную сборку, которая вызывает функцию командной строки WMIC. Yucky, но он выполнил свою работу. Еще раз спасибо за совет. 🙂

Вы должны передать имя пользователя из кода клиента в качестве параметра. Мы делаем это каждый вызов из нашего клиентского кода (веб-сайты и службы).

Однако даже тогда он недоступен в триггере, поэтому я использую CONTEXT_INFO.

Ни магии, ни серебряной пули. Извините.

Еще один вариант – посмотреть делегирование / прохождение учетной записи безопасности. Поиск Google … есть много хорошего материала, вероятно, лучше, чем одна конкретная ссылка.

Если это невозможно, и вы говорите, что не можете изменить код клиента, тогда это невозможно. Данные просто недоступны: и преднамеренно – архитектурой приложения.

вы используете SQL-аутентификацию? если да, я думаю, что это невозможно, потому что вход в Windows не связан с регистрацией сервера.