Журнал аудита базы данных с использованием триггеров - информация о пользователе - PullRequest
1 голос
/ 29 июня 2011

Я собираюсь использовать AFTER INSERT, DELETE, UPDATE Триггеры для записи изменений в одну из моих баз данных.Одна вещь, которую я хочу, это захватить имя пользователя, который внес изменение.

Поскольку я использую выделенную учетную запись SQL для подключения к базе данных (из ASP.NET MVC), я не верю SUSER_SNAME() предоставит мне точную информацию.

Можно ли как-нибудь передать имя пользователя со стороны ASP.NET MVC на триггер?

Сторона ASP.NET настроена для проверки подлинности Windows по Active Directory.

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Взгляните на Установить Context_Info .Я успешно использовал это в прошлом при проверке и использовании SQL-аутентификации.Идея состоит в том, что вы устанавливаете в контексте пользователя, вошедшего в систему, затем в триггере БД вы извлекаете эту информацию из контекста и сохраняете ее в БД.Если вы забыли установить пользователя в контексте, вы всегда можете вернуться к suser_name (хотя и не очень полезно для аудита, но может быть полезно при внесении изменений непосредственно в SSMS).Google "Audit Trail Set Context_Info", и вы найдете несколько примеров.

Вот так один и этот другой

0 голосов
/ 29 июня 2011

Вы можете использовать Thread.CurrentPrincipal, чтобы получить учетную запись Windows и передать ее в качестве параметра в свои запросы, и, следовательно, она будет доступна для триггеров.

 var userName = Thread.CurrentPrincipal.Identity.Name;
...