sys.database_permissions (Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

데이터베이스의 모든 권한 또는 열 예외 권한에 대한 행을 반환합니다. 열의 경우 해당 개체 수준 사용 권한과 다른 모든 권한에 대한 행이 있습니다. 열 사용 권한이 해당 개체 사용 권한과 같으면 열에 대한 행이 없고 적용된 사용 권한은 개체의 사용 권한입니다.

Important

열 수준 권한은 동일한 엔터티에 대한 개체 수준 권한을 재정의합니다.

열 이름 데이터 형식 Description
class tinyint 사용 권한이 있는 클래스를 식별합니다. 자세한 내용은 sys.securable_classes(Transact-SQL)를 참조하세요.

0 = 데이터베이스
1 = 개체 또는 열
3 = 스키마
4 = 데이터베이스 보안 주체
5 = 어셈블리 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
6 = 형식
10 = XML 스키마 컬렉션 -
적용 대상: SQL Server 2008(10.0.x) 이상 버전
15 = 메시지 유형 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
16 = 서비스 계약 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
17 = 서비스 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
18 = 원격 서비스 바인딩 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
19 = 경로 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
23 =전체 텍스트 카탈로그 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
24 = 대칭 키 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
25 = 인증서 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
26 = 비대칭 키 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
29 = 전체 텍스트 중지 목록 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
31 = 검색 속성 목록 - 적용 대상: SQL Server 2008(10.0.x) 이상 버전.
32 = 데이터베이스 범위 자격 증명 - 적용 대상: SQL Server 2016(13.x) 이상 버전.
34 = 외부 언어 - 적용 대상: SQL Server 2019(15.x) 이상 버전.
class_desc nvarchar(60) 사용 권한이 있는 클래스에 대한 설명입니다.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int 클래스에 따라 해석되는 사용 권한이 있는 항목의 ID입니다. 일반적으로 클래스가 major_id 나타내는 항목에 적용되는 ID의 종류일 뿐입니다.

0 = 데이터베이스 자체

>0 = 사용자 개체의 개체 ID

<0 = 시스템 개체의 개체 ID
minor_id int 클래스에 따라 해석되는 사용 권한이 있는 항목의 보조 ID입니다. 개체 클래스에 minor_id 사용할 수 있는 하위 범주가 없으므로 이 값은 0인 경우가 많습니다. 그렇지 않으면 테이블의 열 ID입니다.
grantee_principal_id int 사용 권한이 부여된 데이터베이스 보안 주체 ID입니다.
grantor_principal_id int 이러한 사용 권한 부여자의 데이터베이스 보안 주체 ID입니다.
type char(4) 데이터베이스 사용 권한의 유형입니다. 사용 권한 유형 목록은 다음 표를 참조하세요.
permission_name nvarchar(128) 퍼밋 이름.
state char(1) 허가 상태:

D = 거부

R = 해지

G = 그랜트

W = Grant With Grant 옵션
state_desc nvarchar(60) 사용 권한 상태에 대한 설명:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

데이터베이스 사용 권한

다음과 같은 유형의 사용 권한이 가능합니다.

사용 권한 유형 사용 권한 이름 보안 개체에 적용되는 항목
AADS ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT SESSION DATABASE
AAMK 모든 마스크 변경 DATABASE
AEDS 모든 EXTERNAL DATA SOURCE 수정 DATABASE
AEFF 모든 EXTERNAL FILE FORMAT 수정 DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, DATABASEFULLTEXT CATALOGMESSAGE TYPECONTRACT목적어, , ROUTEUSERROLESCHEMASERVICESYMMETRIC KEYREMOTE SERVICE BINDINGXML SCHEMA COLLECTION
ALAK 모든 ASYMMETRIC KEY 수정 DATABASE
ALAR 모든 APPLICATION ROLE 수정 DATABASE
ALAS 모든 ASSEMBLY 수정 DATABASE
ALCF 모든 CERTIFICATE 수정 DATABASE
ALDS 모든 DATASPACE 변경 DATABASE
ALED ALTER ANY(아무 일도 하지 마세요) DATABASEEVENT NOTIFICATION DATABASE
ALFT 모든 FULLTEXT CATALOG 수정 DATABASE
ALMT 모든 MESSAGE TYPE 수정 DATABASE
ALRL 모든 ROLE 수정 DATABASE
ALRT 모든 ROUTE 수정 DATABASE
ALSB 모든 REMOTE SERVICE BINDING 수정 DATABASE
ALSC 모든 CONTRACT 수정 DATABASE
ALSK 모든 SYMMETRIC KEY 수정 DATABASE
ALSM 모든 SCHEMA 수정 DATABASE
ALSV 모든 SERVICE 수정 DATABASE
ALTG 어떤 DDL이든 DATABASE 수정하세요 TRIGGER DATABASE
ALUS 모든 USER 수정 DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP 로그 DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACTMESSAGE TYPEFULLTEXT CATALOGDATABASE, , 객체, , ROLESCHEMAUSERROUTESERVICESYMMETRIC KEYTYPEREMOTE SERVICE BINDINGXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP 복제 연결 DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO 적용 대상: SQL Server 2012(11.x) 이상 버전.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS 적용 대상: SQL Server 2008(10.0.x) 이상 버전

CREATE XML SCHEMA COLLECTION
DATABASE
DABO 대량 작업 관리 DATABASE DATABASE
DL DELETE DATABASE, 목적, SCHEMA
EAES 모든 외부 스크립트 실행 DATABASE
EX EXECUTE ASSEMBLY, DATABASE, 목적어, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, 목적, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, MESSAGE TYPEFULLTEXT CATALOGDATABASE객체, SCHEMASYMMETRIC KEYTYPEXML SCHEMA COLLECTION
SL SELECT DATABASE, 목적, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN 쿼리 알림 구독 DATABASE
TO 소유권 ASSEMBLY, ASYMMETRIC KEY, , CERTIFICATECONTRACT, FULLTEXT CATALOGDATABASE, , MESSAGE TYPE, , 목적어, REMOTE SERVICE BINDING, ROLEROUTESCHEMASERVICESYMMETRIC KEYTYPEXML SCHEMA COLLECTION
UP UPDATE DATABASE, 목적, SCHEMA
VW VIEW 정의(DEFINITION) APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACTMESSAGE TYPEFULLTEXT CATALOGDATABASE, , 객체, , ROLESCHEMAUSERROUTESERVICESYMMETRIC KEYTYPEREMOTE SERVICE BINDINGXML SCHEMA COLLECTION
VWCK VIEW 어떤 COLUMN ENCRYPTION KEY 정의든 DATABASE
VWCM VIEW 어떤 COLUMN MASTER KEY 정의든 DATABASE
VWCT VIEW 변경 추적 TABLE, SCHEMA
VWDS VIEW DATABASE 국가 DATABASE

REVOKE 그리고 열-예외 권한

대부분의 경우, 명령어는 REVOKE sys.database_permissions에서 OR DENY 항목을 제거합니다GRANT.

하지만 객체에 대한 권한 또는 GRANTDENY 권한 설정과 REVOKE 열에 대한 권한 설정 방식이 가능합니다. 이 열-예외 권한은 sys.database_permissions과 마찬가지로 REVOKE 표시됩니다. 다음 예제를 고려하세요.

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

이 권한들은 sys.database_permissions에서 테이블 위와 열에 각각 GRANT 1 REVOKE 으로 표시됩니다.

Important

REVOKE 는 와 다르 DENY며, 주체가 Sales 다른 권한을 통해 여전히 열에 접근할 수 있습니다. 만약 권한을 취소하지 않고 거부했다면, Sales 항상 를 초과GRANT하기 때문에 DENY 열의 내용을 볼 수 없었을 것입니다.

Permissions

모든 사용자는 자신의 권한을 볼 수 있습니다. 다른 사용자의 권한을 보려면, DEFINITION, USERCHANGE ANY , 또는 사용자에 대한 모든 권한이 필요합니다VIEW. 사용자 정의 역할을 보려면 ALTER ANY ROLE또는 역할(예: public) 멤버십이 필요합니다.

사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

Examples

A. 데이터베이스 보안 주체의 모든 권한 나열

다음 쿼리는 데이터베이스 보안 주체에 대해 명시적으로 부여되거나 거부된 사용 권한을 나열합니다.

Important

고정 데이터베이스 역할의 사용 권한은 에 sys.database_permissions표시되지 않습니다. 따라서 데이터베이스 보안 주체에는 여기에 나열되지 않은 추가 권한이 있을 수 있습니다.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name  
FROM sys.database_principals AS pr  
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;  

B. 데이터베이스 내의 스키마 개체에 대한 사용 권한 나열

다음 쿼리는 sys.database_principals sys.database_permissions에 조인하여 특정 스키마 개체에 부여되거나 거부된 권한을 나열합니다.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1;

C. 특정 개체에 대한 사용 권한 나열

이전 예제를 사용하여 단일 데이터베이스 개체와 관련된 권한을 쿼리할 수 있습니다.

예를 들어 샘플 데이터베이스test부여된 다음 세분화된 사용 권한을 고려합니다.

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

할당된 세분화된 사용 권한을 찾습니다.dbo.vAssocSeqOrders

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1
    AND o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

출력을 반환합니다.

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

참고하십시오

다음 단계