从SQL Server数据库

时间:2017-10-02 23:10:47

标签: sql sql-server sql-server-2014

我是SQL的新手,想知道是否有人可以帮我解决所有非DBA用户的问题,这些用户来自当前数据库,也可能是整个服务器(所有数据库)。

非常感谢你!

1 个答案:

答案 0 :(得分:0)

考虑到所有DBA都是Sysadmin角色的成员,您可以执行以下操作来检查不是Sysadmin角色成员的成员。

SELECT DISTINCT 
            s.name AS principal_name
FROM    sys.server_principals s
INNER JOIN sys.server_permissions p ON s.principal_id = p.grantee_principal_id
WHERE   s.type IN ( 's', 'u' )
AND NOT EXISTS ( SELECT 1
                FROM   sys.server_role_members m
                INNER JOIN sys.server_principals sp 
                ON m.role_principal_id = sp.principal_id
                WHERE  s.principal_id = m.member_principal_id
                AND sp.name = 'sysadmin' );