---
title: "sys.database_permissions (Transact-SQL)"
description: sys.database_permissions (Transact-SQL)
author: VanMSFT
ms.author: vanto
ms.date: "08/11/2017"
ms.prod: sql
ms.prod_service: "database-engine, sql-database, synapse-analytics, pdw"
ms.technology: system-objects
ms.topic: "reference"
f1_keywords:
- "database_permissions"
- "sys.database_permissions_TSQL"
- "database_permissions_TSQL"
- "sys.database_permissions"
helpviewer_keywords:
- "sys.database_permissions catalog view"
dev_langs:
- "TSQL"
ms.assetid: c1e261f8-6cb0-4759-b5f1-5ec233602655
monikerRange: ">=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-server-2016||>=sql-server-linux-2017||=azuresqldb-mi-current"
---
# sys.database_permissions (Transact-SQL)
[!INCLUDE [sql-asdb-asdbmi-asa-pdw](../../includes/applies-to-version/sql-asdb-asdbmi-asa-pdw.md)]
Returns a row for every permission or column-exception permission in the database. For columns, there is a row for every permission that is different from the corresponding object-level permission. If the column permission is the same as the corresponding object permission, there is no row for it and the permission applied is that of the object.
> [!IMPORTANT]
> Column-level permissions override object-level permissions on the same entity.
|Column name|Data type|Description|
|-----------------|---------------|-----------------|
|**class**|**tinyint**|Identifies class on which permission exists. For more information, see [sys.securable_classes (Transact-SQL)](sys-securable-classes-transact-sql.md).
0 = Database
1 = Object or Column
3 = Schema
4 = Database Principal
5 = Assembly - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
6 = Type
10 = XML Schema Collection -
**Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
15 = Message Type - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
16 = Service Contract - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
17 = Service - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
18 = Remote Service Binding - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
19 = Route - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
23 =Full-Text Catalog - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
24 = Symmetric Key - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
25 = Certificate - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
26 = Asymmetric Key - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
29 = Fulltext Stoplist - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
31 = Search Property List - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
32 = Database Scoped Credential - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
34 = External Language - **Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.|
|**class_desc**|**nvarchar(60)**|Description of class on which permission exists.
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 of thing on which permission exists, interpreted according to class. Usually, the **major_id** is simply the kind of ID that applies to what the class represents.
0 = The database itself
>0 = Object-IDs for user objects
\<0 = Object-IDs for system objects |
|**minor_id**|**int**|Secondary-ID of thing on which permission exists, interpreted according to class. Often, the **minor_id** is zero, because there is no subcategory available for the class of object. Otherwise, it is the Column-ID of a table.|
|**grantee_principal_id**|**int**|Database principal ID to which the permissions are granted.|
|**grantor_principal_id**|**int**|Database principal ID of the grantor of these permissions.|
|**type**|**char(4)**|Database permission type. For a list of permission types, see the next table.|
|**permission_name**|**nvarchar(128)**|Permission name.|
|**state**|**char(1)**|Permission state:
D = Deny
R = Revoke
G = Grant
W = Grant With Grant Option|
|**state_desc**|**nvarchar(60)**|Description of permission state:
DENY
REVOKE
GRANT
GRANT_WITH_GRANT_OPTION|
## Database Permissions
The following types of permissions are possible.
|Permission type|Permission name|Applies to securable|
|---------------------|---------------------|--------------------------|
|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|ALTER|APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION|
|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|ALTER ANY USER|DATABASE|
|AUTH|AUTHENTICATE|DATABASE|
|BADB|BACKUP DATABASE|DATABASE|
|BALO|BACKUP LOG|DATABASE|
|CL|CONTROL|APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION|
|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|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|**Applies to**: [!INCLUDE[ssSQL11](../../includes/sssql11-md.md)] and later.
CREATE SEQUENCE|DATABASE|
|CRSV|CREATE SERVICE|DATABASE|
|CRTB|CREATE TABLE|DATABASE|
|CRTY|CREATE TYPE|DATABASE|
|CRVW|CREATE VIEW|DATABASE|
|CRXS|**Applies to**: [!INCLUDE[ssKatmai](../../includes/sskatmai-md.md)] and later.
CREATE XML SCHEMA COLLECTION|DATABASE|
|DABO |ADMINISTER DATABASE BULK OPERATIONS | DATABASE |
|DL|DELETE|DATABASE, OBJECT, SCHEMA|
|EAES |EXECUTE ANY EXTERNAL SCRIPT |DATABASE |
|EX|EXECUTE|ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION|
|IM|IMPERSONATE|USER|
|IN|INSERT|DATABASE, OBJECT, SCHEMA|
|RC|RECEIVE|OBJECT|
|RF|REFERENCES|ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION|
|SL|SELECT|DATABASE, OBJECT, SCHEMA|
|SN|SEND|SERVICE|
|SPLN|SHOWPLAN|DATABASE|
|SUQN|SUBSCRIBE QUERY NOTIFICATIONS|DATABASE|
|TO|TAKE OWNERSHIP|ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION|
|UP|UPDATE|DATABASE, OBJECT, SCHEMA|
|VW|VIEW DEFINITION|APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION|
|VWCK |VIEW ANY COLUMN ENCRYPTION KEY DEFINITION|DATABASE |
|VWCM |VIEW ANY COLUMN MASTER KEY DEFINITION|DATABASE |
|VWCT|VIEW CHANGE TRACKING|TABLE, SCHEMA|
|VWDS|VIEW DATABASE STATE|DATABASE|
## Permissions
Any user can see their own permissions. To see permissions for other users, requires VIEW DEFINITION, ALTER ANY USER, or any permission on a user. To see user-defined roles, requires ALTER ANY ROLE, or membership in the role (such as public).
[!INCLUDE[ssCatViewPerm](../../includes/sscatviewperm-md.md)] For more information, see [Metadata Visibility Configuration](../../relational-databases/security/metadata-visibility-configuration.md).
## Examples
### A: Listing all the permissions of database principals
The following query lists the permissions explicitly granted or denied to database principals.
> [!IMPORTANT]
> The permissions of fixed database roles do not appear in sys.database_permissions. Therefore, database principals may have additional permissions not listed here.
```
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
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
```
### B: Listing permissions on schema objects within a database
The following query joins sys.database_principals and sys.database_permissions to sys.objects and sys.schemas to list permissions granted or denied to specific schema objects.
```
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
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id;
```
## See Also
[Securables](../../relational-databases/security/securables.md)
[Permissions Hierarchy (Database Engine)](../../relational-databases/security/permissions-hierarchy-database-engine.md)
[Security Catalog Views (Transact-SQL)](../../relational-databases/system-catalog-views/security-catalog-views-transact-sql.md)
[Catalog Views (Transact-SQL)](../../relational-databases/system-catalog-views/catalog-views-transact-sql.md)