SQL Server 2005中存在一个存储过程,用户声明执行权限已被删除,因为它们不能再执行存储过程。如何找出谁更改了存储过程中的权限/授权
我试图找到它的踪迹文件,但我无法找到此存储过程中的条目
我的问题是有没有找出别的办法谁以及何时允许/此存储过程的授权是改变了吗?
SQL Server 2005中存在一个存储过程,用户声明执行权限已被删除,因为它们不能再执行存储过程。如何找出谁更改了存储过程中的权限/授权
我试图找到它的踪迹文件,但我无法找到此存储过程中的条目
我的问题是有没有找出别的办法谁以及何时允许/此存储过程的授权是改变了吗?
恢复备份?
不幸的是没有。您必须审核(通过DDL触发器)实际的REVOKE或DENY语句。
但是,如果proc被删除并重新创建没有权限更改审核。你可以查询sys.objects
得到create_date
和modify_date
找出是否发生这种情况。
还有其他选项,例如登录删除,即使权限没有更改,用户也不再有资格执行代码。或者如果使用Windows身份验证,NT组更改。明确的REVOKE/DENY或DROP/CREATE可能不是明显的答案。
编辑,基于注释:
你的问题说: “..users要求执行权限已移除...”。除了显式的存储过程更改外,环境可能已经更改。也就是说,如果什么:
已存储proc权限更改,或者有用户如何访问存储proc更改?
select P.permission_name,
P.state_desc,
U.name GranteeName,
U2.name GrantorName,
T.*
from sys.database_permissions P
JOIN sys.objects T ON P.major_id = T.object_id
JOIN sysusers U ON U.uid = P.grantee_principal_id
JOIN sysusers U2 ON U2.uid = P.grantor_principal_id
ORDER by T.modify_date desc
Unfortunately, the 'who' is typically 'dbo'...