기존 SQL Server 로그인 및 사용자 나열


14

SQL Server의 GUI를 사용하여 정의 된 로그인 및 사용자를 확인할 수 있지만 스크립트를 사용하여이 확인을 수행하는 방법이 궁금합니다.

아래 쿼리를 실행했지만 권한 수준을 얻기 위해 매핑하는 방법을 잘 모르는 Principal_id가 표시됩니다.

SELECT * FROM Sys.login_token 

따라서 로그인과 사용자 를 권한 수준으로 나열 할 수있는 내장 저장 프로 시저가 있습니까?

감사합니다.


"허가 수준"을 정의하십시오. 개체 권한, 데이터베이스 역할 구성원, 서버 역할 구성원?
mrdenny

확실하지 않은 경우 Management Studio에 대해 프로파일 러를 켜고 그 기능을 확인하십시오.
Jon Seigel 2012 년

답변:


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/en-us/library/ms188367.aspx

이것이 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.