MSSQL 사용자 계정 권한 보기

반응형

1. 해당 데이터베이스에 등록 되어있는 로그인 계정 목록

SELECT name AS [Name]            -- 로그인 계정
, type_desc AS [TypeDesc]          -- 로그인 타입
, is_disabled AS [IsDisabled]        -- 1이면 사용할수 없음
, create_date AS [CreateDate]      -- 생성일
FROM sys.server_principals
WHERE type IN('U', 'G', 'S', 'C', 'K')
AND principal_id NOT BETWEEN 101 AND 255
AND name <> N'##MS_AgentSigningCertificate##'
ORDER BY name ASC

 

2. 해당 데이터베이스에 대한 서버 권한 목록

SELECT sp.name        -- 계정 이름
, sp2.name               -- 계정에 부여된 권한
FROM sys.server_role_members AS srm 
INNER JOIN sys.server_principals AS sp
ON srm.member_principal_id = sp.principal_id 
INNER JOIN sys.server_principals AS sp2
ON srm.role_principal_id = sp2.principal_id

 

3. 각 데이터베이스에 대한 로그인 계정 정보

EXEC sp_MSforeachdb 
'SELECT ''?'' AS database_name   -- 데이터베이스 이름
, dp.name                            -- 계정 이름
, dp2.name                           -- 계정 역활
, dp.type                              -- S/U/G/R : SQL 로그인/Windows 로그인/Windows 그룹/서버역활
, dp.type_desc                       -- 로그인 타입 
, dp.default_schema_name         -- 기본스키마
, dp.create_date                     -- 생성일
, dp.modify_date                    -- 수정일
FROM [?].sys.database_role_members AS drm 
RIGHT JOIN 
(
    SELECT * FROM [?].sys.database_principals WHERE type IN (''S'', ''U'', ''G'')

AS dp 
ON drm.member_principal_id = dp.principal_id 
LEFT JOIN [?].sys.database_principals AS dp2 
ON drm.role_principal_id = dp2.principal_id'

 

4. 데이터베이스 개체 권한

EXEC sp_MSforeachdb 
'SELECT ''?'' AS database_name   -- 데이터베이스 이름
, dp.name                            -- 계정
, dp.type                             -- S/U/G/R : SQL 로그인/Windows 로그인/Windows 그룹/서버역활
, dp.type_desc                      -- 로그인 타입
, dp.create_date                    -- 계정 생성일
, dp.modify_date                   -- 계정 수정일
, ds.type                            -- 데이터베이스 사용권한 유형
, ds.permission_name             -- 데이터베이스 사용권한 이름
, ds.state                           -- 사용 상태(D/R/G : 거부/취소/허용)
, ds.state_desc                    -- 상태 설명
, ao.name                          -- 개체 이름
, ao.type                           -- 개체 형식
, ao.type_desc                    -- 개체 형식에 대한 설명
, ao.create_date                  -- 개체 생성일
, ao.modify_date                 -- 개체 수정일
FROM 
(
    SELECT * FROM [?].sys.database_principals WHERE type = ''U'' or type=''S''
) AS dp
INNER JOIN [?].sys.database_permissions AS ds
ON dp.principal_id = ds.grantee_principal_id
LEFT JOIN [?].sys.all_objects AS ao
ON ds.major_id = ao.object_id'
 
 
반응형