Sql Server中是否有默认报告会输出给定用户或登录的权限/安全性历史记录?如果没有,有谁知道如何制作这样的查询?我们最近发生了一个事件,用户神秘地丢失了对表的插入权限,我们想知道究竟是什么导致了它。
答案 0 :(得分:1)
解决这个问题的唯一方法是读取存储每个事务详细信息的事务日志。如果您的数据库处于完全恢复模式,那么信息就在那里。
不幸的是,您无法使用标准工具执行此操作,因为MS不支持此功能。
您可以使用未记录的命令(例如fn_dblog)来获取商业日志阅读器或尝试破解它。
查看这些以获取更多详细信息
Read the log file (*.LDF) in sql server 2008
答案 1 :(得分: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