Есть ли простой способ увидеть те события в SQL Server 2008, для которых в запросе было отказано в разрешении (вместе с текстом запроса и конкретным объектом, в котором было отказано в разрешении)?

У меня есть приложение, которое выполняет много операций с базой данных, одна из которых имеет отказано в разрешении. Мне нужно выяснить, какой именно запрос отклоняется, чтобы я мог точно определить минимальный набор дополнительных разрешений, которые мне нужно дать для рассматриваемой роли базы данных, чтобы все операции были успешными.

Я попытался использовать SQL Profiler и выбрать для записи только события Аудит безопасности / Аудит события доступа к объекту схемы, который выглядит так, как будто он почти справился с этой задачей. Тем не менее, в журналах регистрируются как успешные, так и неудачные события, и, насколько я вижу, в пользовательском интерфейсе ничего не видно, чтобы их можно было различить - поэтому я не могу сказать, какое из сотен событий, которые он генерирует, это то, что я увлекающийся. Есть ли какой-нибудь другой способ перехвата только неудачных операторов SQL?

Спасибо

1 ответ1

0

Чтобы ответить на мой собственный вопрос :-) После еще нескольких экспериментов оказалось, что в SQL Profiler, когда вы настраиваете события в профиль, есть возможность выбрать столбцы, и один из столбцов, который вы можете добавить, - это «Успех». столбец, который - в случае события доступа к объекту схемы аудита - указывает, было ли предоставлено разрешение или нет. Поэтому добавление этого столбца, а затем поиск «0» в этом столбце в зарегистрированных событиях решило проблему для меня.

Я не уверен, есть ли лучшее решение, но я исправлен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .