列出现有的SQL Server登录名和用户


14

我知道我们可以使用SQL Server中的GUI来检查登录名和定义的用户,但是想知道如何使用脚本来执行此检查。

我在下面运行查询,但显示了Principal_id,我不确定该如何映射以获取权限级别。

SELECT * FROM Sys.login_token 

那么,是否有任何内置存储的proc可以列出登录名和用户及其权限级别

谢谢。


定义“权限级别”。对象权限,数据库角色成员资格,服务器角色成员资格?
mrdenny

如有疑问,请针对Management Studio打开Profiler并查看其功能。
乔恩·塞格尔

Answers:


14

不确定是否有内置方法,但是可以尝试使用以下查询获取服务器主体:

;with ServerPermsAndRoles as
(
    select
        spr.name as principal_name,
        spr.type_desc as principal_type,
        spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity,
        'permission' as security_type,
        spm.state_desc
    from sys.server_principals spr
    inner join sys.server_permissions spm
    on spr.principal_id = spm.grantee_principal_id
    where spr.type in ('s', 'u')

    union all

    select
        sp.name as principal_name,
        sp.type_desc as principal_type,
        spr.name as security_entity,
        'role membership' as security_type,
        null as state_desc
    from sys.server_principals sp
    inner join sys.server_role_members srm
    on sp.principal_id = srm.member_principal_id
    inner join sys.server_principals spr
    on srm.role_principal_id = spr.principal_id
    where sp.type in ('s', 'u')
)
select *
from ServerPermsAndRoles
order by principal_name

基本上,它所做的是获取授予和拒绝的权限,并将其与角色成员身份合并。它应该使您简要了解服务器登录的安全性。让我知道您是否在找。


这非常有用!我添加了一个字符串连接来“向我显示授予/撤消列出的每个登录名的权限的命令”,就像这样- CAST([srvperm].[state_desc] AS VARCHAR(MAX)) + ' ' + CAST(srvperm.[permission_name] AS VARCHAR(MAX)) + ' TO [' + CAST(srvprin.name AS VARCHAR(MAX)) + '];' as GrantQuery如果您要迁移服务器,这有助于复制那些权限:)
NateJ

8

试试这个-这将列出用户,对象以及他们对这些对象的权限:

SELECT p.name, o.name, d.*
FROM sys.database_principals AS p
JOIN sys.database_permissions AS d ON d.grantee_principal_id = p.principal_id
JOIN sys.objects AS o ON o.object_id = d.major_id

您还应该检查sys.fn_my_permissions函数:

http://msdn.microsoft.com/en-us/library/ms188367.aspx

这里有一些链接也应为您提供帮助:

权限: http //msdn.microsoft.com/en-us/library/ms191291.aspx

SYS.DATABASE_PERMISSIONS: http : //msdn.microsoft.com/zh-cn/library/ms188367.aspx

我希望这可以帮助你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.