1

Sql Server 中是否有默认报告将输出给定用户或登录名的权限/安全性历史记录?如果没有,有谁知道如何制作这样的查询?我们最近发生了一个事件,用户神秘地失去了对表的插入权限,我们想找出导致它的确切原因。

4

2 回答 2

1

解决这个问题的唯一方法是读取存储每个事务详细信息的事务日志。如果您的数据库处于完全恢复模式,那么信息就在那里。

不幸的是,您不能使用标准工具执行此操作,因为 MS 不支持此操作。

你可以让自己成为一个商业日志阅读器,或者尝试使用 fn_dblog 等未记录的命令来破解它。

查看这些以获取更多详细信息

在 sql server 2008 中读取日志文件 (*.LDF)

SQL Server 事务日志浏览器/分析器

sql server 2008如何查看事务日志

于 2013-10-01T09:19:00.477 回答
0

这是用于查找数据库权限的查询。我们一直在使用此查询的变体将权限从一个表复制到另一个表。

select *
   FROM sys.database_permissions AS dp
   INNER JOIN sys.objects AS o ON dp.major_id=o.object_id
   INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
   INNER JOIN sys.database_principals AS dpr ON dp.grantee_principal_id=dpr.principal_id
于 2013-09-30T17:21:34.480 回答