Sql server 用于获取用户的tsql';没有模拟的用户权限

Sql server 用于获取用户的tsql';没有模拟的用户权限,sql-server,tsql,audit,Sql Server,Tsql,Audit,我是否可以检查用户是否拥有对服务器上任何对象的修改权限,而不以该用户的身份运行查询 我需要创建一个登录审核报告,列出对服务器(即服务器上的任何数据库)上的内容具有插入/更新访问权限的帐户的登录时间 这也需要不影响性能(如果可能)或影响最小。来自: 您可能希望按用户名进行筛选。请记住,这只显示显式定义的权限(和拒绝规则),而不是有效权限。有没有办法获取有效权限?这将是这些权限以及通过组、架构等授予的任何权限的组合。我不知道有什么现成的东西能提供这一点。希望这对你来说是一个不错的起点。 select

我是否可以检查用户是否拥有对服务器上任何对象的修改权限,而不以该用户的身份运行查询

我需要创建一个登录审核报告,列出对服务器(即服务器上的任何数据库)上的内容具有插入/更新访问权限的帐户的登录时间

这也需要不影响性能(如果可能)或影响最小。

来自:


您可能希望按
用户名
进行筛选。请记住,这只显示显式定义的权限(和拒绝规则),而不是有效权限。

有没有办法获取有效权限?这将是这些权限以及通过组、架构等授予的任何权限的组合。我不知道有什么现成的东西能提供这一点。希望这对你来说是一个不错的起点。
select sys.schemas.name 'Schema', sys.objects.name Object, sys.database_principals.name username, sys.database_permissions.type permissions_type,
     sys.database_permissions.permission_name, 
     sys.database_permissions.state permission_state,
     sys.database_permissions.state_desc,
     state_desc + ' ' + permission_name + ' on ['+ sys.schemas.name + '].[' + sys.objects.name + '] to [' + sys.database_principals.name + ']' COLLATE LATIN1_General_CI_AS
 from sys.database_permissions
 join sys.objects on sys.database_permissions.major_id = 
     sys.objects.object_id
 join sys.schemas on sys.objects.schema_id = sys.schemas.schema_id
 join sys.database_principals on sys.database_permissions.grantee_principal_id = 
     sys.database_principals.principal_id
 order by 1, 2, 3, 5