sys.database_permissions (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點Microsoft網狀架構倉儲中的 Microsoft Fabric SQL 資料庫Microsoft網狀架構
傳回資料庫中每個許可權或數據行例外狀況許可權的數據列。 針對數據行,每個許可權的數據列都與對應的物件層級許可權不同。 如果數據行許可權與對應的物件許可權相同,則沒有任何數據列,而且套用的許可權就是對象的數據列。
重要
數據行層級許可權會覆寫相同實體上的物件層級許可權。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
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 = Route - 適用於: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 | 存在許可權的標識碼,根據類別解譯。 通常, major_id 只會套用至 類別所代表的標識符類型。 0 = 資料庫本身 >0 = 使用者物件的物件識別碼 <0 = 系統對象的物件識別碼 |
minor_id | int | 存在許可權之專案的次要標識符,根據類別解譯。 通常, minor_id 是零,因為對象類別沒有子類別可用。 否則,它是數據表的數據行標識符。 |
grantee_principal_id | int | 授與許可權的資料庫主體標識碼。 |
grantor_principal_id | int | 這些許可權授與者的資料庫主體標識碼。 |
type | char(4) | 資料庫許可權類型。 如需許可權類型清單,請參閱下表。 |
permission_name | nvarchar(128) | 許可權名稱。 |
state | char(1) | 權限狀態: D = 拒絕 R = 撤銷 G = 授與 W = 授與授與選項 |
state_desc | nvarchar(60) | 權限狀態的描述: 拒絕 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 | 應用程式角色、元件、非對稱密鑰、憑證、合約、資料庫、全文檢索目錄、訊息類型、對象、遠端服務系結、角色、路由、架構、服務、對稱密鑰、使用者、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 |
AUTH | 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 | 執行 CREATE 陳述式之前,請先執行 | 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 |
收件人 | 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 | 應用程式角色、元件、非對稱密鑰、憑證、合約、資料庫、全文檢索目錄、訊息類型、對象、遠端服務系結、角色、路由、架構、服務、對稱密鑰、類型、使用者、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,或角色的成員資格(例如 public)。
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 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_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