sys.database_permissions(Transact-SQL)
적용 대상: Microsoft Fabric의 Microsoft Fabric SQL 데이터베이스에 있는 Microsoft Fabric Warehouse의 SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) SQL 분석 엔드포인트
데이터베이스의 모든 권한 또는 열 예외 권한에 대한 행을 반환합니다. 열의 경우 해당 개체 수준 사용 권한과 다른 모든 권한에 대한 행이 있습니다. 열 사용 권한이 해당 개체 사용 권한과 같으면 열에 대한 행이 없고 적용된 사용 권한은 개체의 사용 권한입니다.
Important
열 수준 권한은 동일한 엔터티에 대한 개체 수준 권한을 재정의합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
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 인증서 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 = Grant W = Grant With Grant 옵션 |
state_desc | nvarchar(60) | 사용 권한 상태에 대한 설명: DENY REVOKE GRANT GRANT_WITH_GRANT_OPTION |
데이터베이스 권한
다음과 같은 유형의 사용 권한이 가능합니다.
권한 유형 | 권한 이름 | 보안 개체에 적용되는 항목 |
---|---|---|
AADS | ALTER ANY DATABASE EVENT SESSION | DATABASE |
AAMK | ALTER ANY MASK | DATABASE |
AEDS | ALTER ANY EXTERNAL DATA SOURCE | DATABASE |
AEFF | ALTER ANY EXTERNAL FILE FORMAT | DATABASE |
AL | 변경 | 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 사용자, XML 스키마 컬렉션 |
ALAK | ALTER ANY ASYMMETRIC KEY | DATABASE |
ALAR | ALTER ANY APPLICATION ROLE | DATABASE |
ALAS | ALTER ANY ASSEMBLY | DATABASE |
ALCF | ALTER ANY CERTIFICATE | DATABASE |
ALDS | ALTER ANY DATASPACE | DATABASE |
ALED | ALTER ANY DATABASE EVENT NOTIFICATION | DATABASE |
ALFT | ALTER ANY FULLTEXT CATALOG | DATABASE |
ALMT | ALTER ANY MESSAGE TYPE | DATABASE |
ALRL | ALTER ANY ROLE | DATABASE |
ALRT | ALTER ANY ROUTE | DATABASE |
ALSB | ALTER ANY REMOTE SERVICE BINDING | DATABASE |
ALSC | ALTER ANY CONTRACT | DATABASE |
ALSK | ALTER ANY SYMMETRIC KEY | DATABASE |
ALSM | ALTER ANY SCHEMA | DATABASE |
ALSV | ALTER ANY SERVICE | DATABASE |
ALTG | ALTER ANY DATABASE DDL TRIGGER | DATABASE |
ALUS | 모든 사용자 변경 | DATABASE |
인증 | AUTHENTICATE | DATABASE |
BADB | BACKUP DATABASE | DATABASE |
BALO | BACKUP LOG | DATABASE |
CL | CONTROL | 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 유형, 사용자, XML 스키마 컬렉션 |
CO | CONNECT | DATABASE |
CORP | CONNECT REPLICATION | 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 | 절차 만들기 | 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 | 테이블 만들기 | DATABASE |
CRTY | 유형 만들기 | DATABASE |
CRVW | 보기 만들기 | DATABASE |
CRXS | 적용 대상: SQL Server 2008(10.0.x) 이상 버전 CREATE XML SCHEMA COLLECTION |
DATABASE |
DABO | ADMINISTER DATABASE BULK OPERATIONS | DATABASE |
DL | DELETE | DATABASE, OBJECT, SCHEMA |
EAES | EXECUTE ANY EXTERNAL SCRIPT | DATABASE |
EX | 실행 | ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION |
IM | IMPERSONATE | USER |
IN | 삽입 | DATABASE, OBJECT, SCHEMA |
RC | RECEIVE | OBJECT |
RF | REFERENCES | 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 스키마, 대칭 키, 형식, XML 스키마 컬렉션 |
SL | SELECT | DATABASE, OBJECT, SCHEMA |
SN | SEND | SERVICE |
SPLN | SHOWPLAN | DATABASE |
SUQN | SUBSCRIBE QUERY NOTIFICATIONS | DATABASE |
TO | TAKE OWNERSHIP | 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, FULLTEXT 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 형식, XML 스키마 컬렉션 |
UP | UPDATE | DATABASE, OBJECT, SCHEMA |
VW | VIEW DEFINITION | 애플리케이션 역할, 어셈블리, 비대칭 키, 인증서, 계약, 데이터베이스, 전체 텍스트 카탈로그, 메시지 유형, 개체, 원격 서비스 바인딩, 역할, 경로, 스키마, 서비스, 대칭 키, 유형, 사용자, XML 스키마 컬렉션 |
VWCK | VIEW ANY COLUMN ENCRYPTION KEY DEFINITION | DATABASE |
VWCM | VIEW ANY COLUMN MASTER KEY DEFINITION | DATABASE |
VWCT | VIEW CHANGE TRACKING | TABLE, SCHEMA |
VWDS | 데이터베이스 상태 보기 | DATABASE |
사용 권한
모든 사용자는 자신의 권한을 볼 수 있습니다. 다른 사용자에 대한 사용 권한을 보려면 VIEW DEFINITION, ALTER ANY USER 또는 사용자에 대한 모든 권한이 필요합니다. 사용자 정의 역할을 보려면 ALTER ANY ROLE 또는 역할(예: 공용)의 멤버 자격이 필요합니다.
사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.
예제
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
sys.objects 및 sys.schemas에 조인하여 특정 스키마 개체에 부여되거나 거부된 권한을 나열합니다.
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;
C. 특정 개체에 대한 사용 권한 나열
이전 예제를 사용하여 단일 데이터베이스 개체와 관련된 권한을 쿼리할 수 있습니다.
예를 들어 샘플 데이터베이스AdventureWorksDW2022
의 데이터베이스 사용자에게 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 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