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.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