我正在使用 SQL Profiler 来观察一些数据库活动,并且我对观察数据库中各种对象的“Permission Denied”很感兴趣。“安全审计”类别中有大约 50 个不同的项目,但似乎没有一个项目显示对象的“权限被拒绝”。我可以看到 Login Failed 和其他一些失败,但在对象级别上什么也没有。
示例:用户对数据库具有权限,但对特定表没有权限。当他们尝试从该表中进行选择时,他们会收到一个错误 - 我可以让分析器监视这些错误吗?
我正在使用 SQL Profiler 来观察一些数据库活动,并且我对观察数据库中各种对象的“Permission Denied”很感兴趣。“安全审计”类别中有大约 50 个不同的项目,但似乎没有一个项目显示对象的“权限被拒绝”。我可以看到 Login Failed 和其他一些失败,但在对象级别上什么也没有。
示例:用户对数据库具有权限,但对特定表没有权限。当他们尝试从该表中进行选择时,他们会收到一个错误 - 我可以让分析器监视这些错误吗?
您想在“错误和警告”部分捕获“用户错误消息”事件。您可以根据需要过滤错误列。错误 229 是权限被拒绝
这可能会达到相同的效果:
回到 SQL 2000,您可以修改错误消息 229,以便将“权限被拒绝”写入 SQL 错误日志。
EXEC dbo.sp_altermessage 229, 'WITH_LOG', 'true'
我不知道这是否/如何适用于 SQL 2005+可能不是,Connect 说,但也许我们现在可以说 Tibor Karaszi。我无法测试自己,对不起。
编辑:这样做的好处是您不需要运行探查器或跟踪器...