Профилировщик SQL Server - следите за отказом в доступе к объектам?

Я использую SQL Profiler для наблюдения за некоторыми действиями в базе данных, и мне интересно наблюдать за «отказом в доступе» для различных объектов в базе данных. В категории «Аудит безопасности» около 50 различных элементов, но ни один из них не отображает «Отказано в доступе» для объекта. Я вижу Ошибка входа в систему и несколько других ошибок, но ничего на уровне объекта.

Пример: у пользователя есть разрешение на доступ к базе данных, но не к конкретной таблице. Когда они попытаются выбрать из этой таблицы, они получат сообщение об ошибке. Могу ли я заставить профилировщик следить за этими ошибками?


person SqlRyan    schedule 26.06.2009    source источник


Ответы (2)


Вы хотите зафиксировать событие «Сообщение об ошибке пользователя» в разделе «Ошибки и предупреждения». Вы можете отфильтровать столбец Error по своему усмотрению. Ошибка 229 — отказано в доступе

person Mike Forman    schedule 26.06.2009
comment
Это впечатляюще. Мне пришлось отфильтровать наши события 5701 и 5703, которые кажутся просто информационными сообщениями о настройке языка. После того, как я их отфильтровал, это стало именно то, что я искал! - person SqlRyan; 26.06.2009

Это может привести к тому же:

Еще в SQL 2000 вы могли изменить сообщение об ошибке 229 так, чтобы в журнал ошибок SQL записывалось «отказано в доступе».

EXEC dbo.sp_altermessage 229, 'WITH_LOG', 'true'

Я не знаю, как это работает для SQL 2005+ вероятно, нет , говорит Connect, но может быть, теперь мы можем, говорит Тибор Караси. Я не могу проверить себя, извините.

Изменить: это имеет то преимущество, что вам не нужен профилировщик или работающий трассировщик...

person gbn    schedule 26.06.2009
comment
Хотя это было не совсем то, что я искал, я рад узнать это сейчас - спасибо! - person SqlRyan; 26.06.2009