Аудит данных SQL в ASP.NET Web App с использованием аутентификации SQL - PullRequest
2 голосов
/ 02 апреля 2012

Мое веб-приложение ASP.NET использует проверку подлинности SQL для подключения к базе данных. Я знаком с использованием триггеров для аудита изменений данных, однако есть одна ключевая часть данных, которую я просто не знаю, как получить ...

Поскольку соединение использует аутентификацию SQL, все изменения будут принадлежать этой учетной записи пользователя SQL, а не моим пользователям ...

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

Это пример аудита на основе триггера, о котором я говорю. http://weblogs.asp.net/jgalloway/archive/2008/01/27/adding-simple-trigger-based-auditing-to-your-sql-server-database.aspx

1 Ответ

2 голосов
/ 02 апреля 2012

Я знаю, что в статье SO Как получить имя пользователя домена при подключении с помощью аутентификации SQL уже упоминалось, но это не значит, что вы не можете делать то, что хотите.Это просто означает, что все становится немного сложнее.

То, что я делал в прошлом, включает в себя поле «Последнее изменение» или что-то в этом роде.Я сделал его стандартным полем (как обычно DateCreated и DateModified).Затем я включил его в каждый хранимый процесс (единственный способ записи данных в SQL).Таким образом, веб-приложение (или что-то еще) может передать фактическое лицо, вошедшее в систему, когда они пишут данные.Затем мой триггер может захватить это поле и поместить его в таблицу аудита.Теперь я знаю, кто внес каждое изменение.

Однако следует учитывать, что вы полагаетесь на то, что вызывающий абонент должным образом информирует вас о том, кто пишет в базу данных.Хранимая процедура не будет знать, «выдаваете ли вы себя» за кого-то другого.Однако, если вы контролируете места, которые вызывают этот процесс, у вас все в порядке.

...