SQL Server:如何检查安全对象

SQL Server:如何检查安全对象

我想创建一个 T-SQL 查询来检查哪些登录在服务器类型安全对象中具有“查看服务器状态”权限。如何实现?

来自 mssqltips 的查询没有显示以下内容:

http://www.mssqltips.com/tip.asp?tip=1718

SELECT prin.[name] [User], sec.state_desc + ' ' + sec.permission_name [Permission]
FROM [sys].[database_permissions] sec
  JOIN [sys].[database_principals] prin
    ON sec.[grantee_principal_id] = prin.[principal_id]
WHERE sec.class = 0
ORDER BY [User], [Permission]; 

答案1

您需要检查服务器级别的权限。您的查询检查数据库级别的权限。您可以使用 sys.server_permissions 和 sys.server_principals 视图来实现这一点。例如:

SELECT  pr.*
FROM    sys.server_permissions p
    INNER JOIN sys.server_principals pr ON p.grantee_principal_id = pr.principal_id
WHERE   p.type = 'VWSS'

有关 sys.server_permissions 视图的更多信息。

相关内容