#sql-server #wcf #sql-server-2008 #audit
#sql-сервер #wcf #sql-server-2008 #аудит
Вопрос:
Я хочу сохранять любые журналы / таблицы с каждым запросом, выполняемым моим приложением.
Я знаю, что мог бы сделать это, закодировав его (прежде чем я выполняю какой-либо запрос, я вставляю новую строку в таблицу журнала с запросом и пользователем, который его выполняет.
Я читал, что это может быть сделано автоматически, но я не уверен, как это может работать со службами WCF. Я имею в виду, что каждый запрос будет выполняться одним и тем же пользователем SQL, и это было бы не очень полезно для операций аудита (мне нужно знать, КТО делал каждый запрос, и пользователи будут проверены по моим собственным таблицам users).
У вас когда-нибудь был подобный сценарий? Заранее спасибо!
Ответ №1:
В качестве отправной точки, возможно, стоит рассмотреть возможность выполнения этого с помощью профилировщика SQL Server. Обычно вы можете найти это в меню Tools в Management Studio.
Вы можете настроить трассировку для захвата всех SQL, выполняемых на сервере. Что еще более важно, у вас есть множество параметров фильтрации, которые могут быть применены, чтобы вы фиксировали только те данные, которые вас интересуют (например, DatabaseName, UserName).
Эта информация может храниться непосредственно в таблице SQL, что должно дать вам возможность присоединиться к ней. Конечно, выполнение чего-либо подобного приведет к некоторым накладным расходам на SQL box.
Ответ №2:
Вы можете попробовать функцию аудита SQL Server. Он проверяет отдельные события или группы событий как на уровне сервера, так и на уровне базы данных. Однако имейте в виду, что аудит на уровне базы данных доступен только в версиях SQL Server Enterprise и Developer