sys.database_permissions (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 中的 SQL 终结点 Microsoft Fabric 中的仓库 Microsoft Fabric SQL 数据库

为数据库中的每个权限或列异常权限返回一行。 对于列,每个权限有与相应的对象级别权限不同的一行。 如果列权限与相应的对象权限相同,则此处无该列权限行,所应用的权限将是对象权限。

重要

列级别权限的优先级高于同一实体的对象级别权限。

列名称 数据类型 说明
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

外部语言
major_id int 存在权限的对象的 ID,根据类解释。 通常, major_id 仅适用于类所表示的 ID 类型。

0 = 数据库本身

>0 = 用户对象的对象 ID

<0 = 系统对象的 Object-ID
minor_id int 存在权限的对象的辅助 ID,根据类解释。 通常为 minor_id 零,因为没有可用于对象类的子类别。 否则,它是表的 Column-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 = 带授权选项的授权
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 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 适用于: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 ADMINISTER DATABASE BULK OPERATIONS DATABASE
DL 删除 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

权限

任何用户都可以查看自己的权限。 要查看其他用户的权限,需要获取 VIEW DEFINITION、ALTER ANY USER 或任何相关的用户权限。 要查看用户定义的角色,需要获取 ALTER ANY ROLE 或相关的角色(如公共)成员身份。

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration

示例

A. 列出数据库主体的所有权限

以下查询将列出明确对数据库主体授予或拒绝的权限。

重要

固定数据库角色的权限不会出现在 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_principalssys.database_permissions和 sys.objectssys.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

另请参阅

后续步骤