sys.database_permissions (Transact-SQL)
为数据库中的每个权限或列异常权限返回一行。 对于列,每个权限有与相应的对象级别权限不同的一行。 如果列权限与相应的对象权限相同,则此处无该列权限行,实际使用的权限将是对象权限。
重要提示 |
---|
列级别权限的优先级高于同一实体的对象级别权限。 |
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
列名 |
数据类型 |
说明 |
||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
类 |
tinyint |
标识权限所在的类。
|
||||||||||||||||||||||||||||||||
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_KEY CERTIFICATE ASYMMETRIC_KEY |
||||||||||||||||||||||||||||||||
major_id |
int |
存在权限的对象的 ID,根据类解释。 通常情况下,这只是应用于类所表示的内容的 ID 类型。 非标准解释如下: 0 = 始终为 0 1 = 对象 ID 为系统对象分配负值 ID。 |
||||||||||||||||||||||||||||||||
minor_id |
int |
存在权限的对象的辅助 ID,根据类解释。 多数情况下,该值为零。 否则,将是如下值: 1 = 列 ID(如果是列)。 否则,如果是对象,则为 0。 |
||||||||||||||||||||||||||||||||
grantee_principal_id |
int |
向其授予权限的数据库主体 ID。 |
||||||||||||||||||||||||||||||||
grantor_principal_id |
int |
这些权限的授权者的数据库主体 ID。 |
||||||||||||||||||||||||||||||||
类型 |
char(4) |
数据库权限类型。 有关权限类型的列表,请参阅下一个表。 |
||||||||||||||||||||||||||||||||
permission_name |
nvarchar(128) |
权限名称。 |
||||||||||||||||||||||||||||||||
state |
char(1) |
权限状态: D = 拒绝 R = 撤消 G = 授予 W = 带授权选项的授权 |
||||||||||||||||||||||||||||||||
state_desc |
nvarchar(60) |
权限状态的说明: DENY REVOKE GRANT GRANT_WITH_GRANT_OPTION |
权限类型 |
权限名称 |
适用于安全对象 |
|
---|---|---|---|
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 |
CREATE SEQUENCE
|
DATABASE |
|
CRSV |
CREATE SERVICE |
DATABASE |
|
CRTB |
CREATE TABLE |
DATABASE |
|
CRTY |
CREATE TYPE |
DATABASE |
|
CRVW |
CREATE VIEW |
DATABASE |
|
CRXS |
CREATE XML SCHEMA COLLECTION
|
DATABASE |
|
DL |
DELETE |
DATABASE、OBJECT、SCHEMA |
|
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 |
|
VWCT |
VIEW CHANGE TRACKING |
TABLE、SCHEMA |
|
VWDS |
VIEW DATABASE STATE |
DATABASE |
权限
任何用户都可以查看自己的权限。 要查看其他用户的权限,需要获取 VIEW DEFINITION、ALTER ANY USER 或任何相关的用户权限。 要查看用户定义的角色,需要获取 ALTER ANY ROLE 或相关的角色(如公共)成员身份。
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。有关详细信息,请参阅元数据可见性配置。
示例
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
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
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;