權限 (資料庫引擎)

每個 SQL Server 保護物件都有可授與主體的相關許可權。 本主題提供下列資訊:

權限命名慣例

下列描述命名權限所遵循的一般慣例:

  • 控制

    授與承受人類似所有權的能力。 獲授權者在安全性實體上擁有所有已定義的權限。 已被授與CONTROL權限的主體也可以授與可控資源的許可權。 因為 SQL Server 安全性模型是階層式的,因此特定範圍的 CONTROL 會隱含地包含該範圍下所有安全物件的 CONTROL。 例如,資料庫的 CONTROL 表示資料庫的所有許可權、資料庫中所有元件的所有許可權、資料庫中所有架構的所有許可權,以及資料庫內所有架構內物件的所有許可權。

  • 改變

    授予變更特定可被保護物屬性(不包括擁有權)的能力。 在某範圍內授予時,ALTER 也會賦予修改、建立或刪除該範圍所含任何安全性物件的能力。 例如,架構的 ALTER 許可權包括從架構建立、改變和卸載物件的能力。

  • ALTER ANY <伺服器可安全化>,其中伺服器可安全化可以是任何伺服器可安全化。

    賦予建立、修改或刪除伺服器安全物件單一實體的能力。 例如,ALTER ANY LOGIN 賦予在實例中建立、更改或丟棄任何登入資料的能力。

  • ALTER ANY <>可以是資料庫層級的任何可保護物件。

    授予建立、修改或刪除資料庫安全性實體各個實例的能力。 例如,ALTER ANY SCHEMA 可授權建立、修改或丟棄資料庫中的任何結構結構。

  • 掌握主控權

    可讓受讓人取得其被授予的可授予對象的擁有權。

  • IMPERSONATE <登入>

    允許被授權者模擬登入。

  • 冒充 <使用者>

    可讓授權者冒充使用者。

  • CREATE <Server 安全性實體>

    授予受讓人建立 伺服器可控資源 的能力。

  • CREATE <Database 可授權物件>

    授予被授權者建立 資料庫可保護物件的能力。

  • CREATE <結構描述內含的可保護實體>

    賦予建立架構內可保護物件的能力。 不過,需要架構的 ALTER 許可權,才能在特定架構中建立安全性實體。

  • VIEW 定義

    可讓授權者存取元數據。

  • 參考文獻

    需要資料表的 REFERENCES 權限,才能建立參考該資料表的外鍵約束。

    若要建立含有參考該物件之 FUNCTION 子句的 VIEW 或 WITH SCHEMABINDING,則需要具備該物件的 REFERENCES 權限。

SQL Server 許可權圖表

如需 PDF 格式之所有 資料庫引擎 權限的海報大小圖表,請參閱 https://github.com/microsoft/sql-server-samples/blob/master/samples/features/security/permissions-posters/Microsoft_SQL_Server_2017_and_Azure_SQL_Database_permissions_infographic.pdf。

適用於特定安全性實體的權限

下表列出了許可權的主要類別以及可套用的安全對象類型。

權限 適用對象
SELECT 同義詞

表格和欄

數據表值函式、Transact-SQL 和 Common Language Runtime (CLR) 和數據行

檢視和欄位
VIEW 變更追蹤 資料表

模式
UPDATE 同義詞

表格和欄

檢視和欄位

序列物件
參考文獻 純量和聚合函數(Transact-SQL 和 CLR)

Service Broker 佇列

表格和欄

表格值函數(Transact-SQL 和 CLR),以及欄位

型別

檢視和欄位

序列物件
INSERT 同義詞

表格和欄

檢視和欄位
DELETE 同義詞

表格和欄

檢視和欄位
執行指令 程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

同義詞

CLR 類型
RECEIVE Service Broker 佇列
VIEW 定義 可用性群組

程序(Transact-SQL 和 CLR)

Service Broker 佇列

純量和聚合函數(Transact-SQL 和 CLR)

登入、使用者和角色

同義詞

資料表

資料表值函數 (Transact-SQL 和 CLR)

瀏覽次數

序列物件
改變 可用性群組

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

序列物件

登入、使用者和角色

Service Broker 佇列

資料表

資料表值函數 (Transact-SQL 和 CLR)

瀏覽次數
掌握主控權 可用性群組

角色

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

伺服器角色

同義詞

資料表

資料表值函數 (Transact-SQL 和 CLR)

瀏覽次數

序列物件
控制 可用性群組

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

登入、使用者和角色

Service Broker 佇列

同義詞

資料表

資料表值函數 (Transact-SQL 和 CLR)

瀏覽次數

序列物件
冒充 登入和使用者

謹慎

在安裝時授與系統對象的默認許可權會根據可能的威脅仔細評估,而且不需要在強化 SQL Server 安裝時加以改變。 系統物件上許可權的任何變更都可以限制或中斷功能,而且可能會讓SQL Server 安裝處於不支援的狀態。

SQL Server 和 SQL Database 許可權

下表提供 SQL Server 許可權的完整清單。 SQL Database 許可權僅適用於支援的基礎安全性物件。 SQL Database 中無法授與伺服器層級許可權,但在某些情況下,資料庫許可權是可用的。

基礎可保護對象 基礎安全控制項上的細微許可權 權限類型代碼 可設安全性的物件包含基底安全性物件 容器安全性實體的許可權,表示基底安全性實體上的細微許可權
APPLICATION ROLE 改變 鋁 DATABASE 更改任何 APPLICATION ROLE
APPLICATION ROLE 控制 CL DATABASE 控制
APPLICATION ROLE VIEW 定義 大眾 DATABASE VIEW 定義
ASSEMBLY 改變 鋁 DATABASE 更改任何 ASSEMBLY
ASSEMBLY 控制 CL DATABASE 控制
ASSEMBLY 參考文獻 射頻 DATABASE 參考文獻
ASSEMBLY 掌握主控權 到 DATABASE 控制
ASSEMBLY VIEW 定義 大眾 DATABASE VIEW 定義
ASYMMETRIC KEY 改變 鋁 DATABASE 更改任何 ASYMMETRIC KEY
ASYMMETRIC KEY 控制 CL DATABASE 控制
ASYMMETRIC KEY 參考文獻 射頻 DATABASE 參考文獻
ASYMMETRIC KEY 掌握主控權 到 DATABASE 控制
ASYMMETRIC KEY VIEW 定義 大眾 DATABASE VIEW 定義
AVAILABILITY GROUP 改變 鋁 伺服器 更改任何 AVAILABILITY GROUP
AVAILABILITY GROUP 控制 CL 伺服器 控制伺服器
AVAILABILITY GROUP 掌握主控權 到 伺服器 控制伺服器
AVAILABILITY GROUP VIEW 定義 大眾 伺服器 VIEW 任何定義皆可
CERTIFICATE 改變 鋁 DATABASE 更改任何 CERTIFICATE
CERTIFICATE 控制 CL DATABASE 控制
CERTIFICATE 參考文獻 射頻 DATABASE 參考文獻
CERTIFICATE 掌握主控權 到 DATABASE 控制
CERTIFICATE VIEW 定義 大眾 DATABASE VIEW 定義
CONTRACT 改變 鋁 DATABASE 更改任何 CONTRACT
CONTRACT 控制 CL DATABASE 控制
CONTRACT 參考文獻 射頻 DATABASE 參考文獻
CONTRACT 掌握主控權 到 DATABASE 控制
CONTRACT VIEW 定義 大眾 DATABASE VIEW 定義
DATABASE 改變 鋁 伺服器 更改任何 DATABASE
DATABASE 更改任何 APPLICATION ROLE 阿拉爾 伺服器 控制伺服器
DATABASE 更改任何 ASSEMBLY 唉 伺服器 控制伺服器
DATABASE 更改任何 ASYMMETRIC KEY ALAK 伺服器 控制伺服器
DATABASE 更改任何 CERTIFICATE ALCF 伺服器 控制伺服器
DATABASE 更改任何 CONTRACT ALSC 伺服器 控制伺服器
DATABASE 修改任何 DATABASE 稽核 阿爾達 伺服器 更改任何 SERVER AUDIT
DATABASE 變更任何 DATABASE DDL TRIGGER ALTG 伺服器 控制伺服器
DATABASE 修改任何 DATABASEEVENT NOTIFICATION ALED 伺服器 更改任何 EVENT NOTIFICATION
DATABASE 修改任何 DATABASEEVENT SESSION AADS

注意:僅適用於 SQL Database。
伺服器 更改任何 EVENT SESSION
DATABASE 修改任何資料空間 ALDS 伺服器 控制伺服器
DATABASE 更改任何 FULLTEXT CATALOG ALFT 伺服器 控制伺服器
DATABASE 更改任何 MESSAGE TYPE ALMT 伺服器 控制伺服器
DATABASE 更改任何 REMOTE SERVICE BINDING ALSB 伺服器 控制伺服器
DATABASE 更改任何 ROLE ALRL 伺服器 控制伺服器
DATABASE 更改任何 ROUTE ALRT 伺服器 控制伺服器
DATABASE 更改任何 SCHEMA ALSM 伺服器 控制伺服器
DATABASE 更改任何 SECURITY POLICY ALSP

注意:僅適用於 SQL Database。
伺服器 控制伺服器
DATABASE 更改任何 SERVICE ALSV 伺服器 控制伺服器
DATABASE 更改任何 SYMMETRIC KEY ALSK 伺服器 控制伺服器
DATABASE 更改任何 USER ALUS 伺服器 控制伺服器
DATABASE 證實 認證 伺服器 驗證伺服器
DATABASE BACKUP DATABASE BADB 伺服器 控制伺服器
DATABASE BACKUP 日誌 BALO 伺服器 控制伺服器
DATABASE 檢查站 CP 伺服器 控制伺服器
DATABASE 連接 一氧化碳 伺服器 控制伺服器
DATABASE 連接複製 公司 伺服器 控制伺服器
DATABASE 控制 CL 伺服器 控制伺服器
DATABASE CREATE AGGREGATE 峭壁 伺服器 控制伺服器
DATABASE CREATE ASSEMBLY CRAS 伺服器 控制伺服器
DATABASE CREATE ASYMMETRIC KEY CRAK 伺服器 控制伺服器
DATABASE CREATE CERTIFICATE CRCF 伺服器 控制伺服器
DATABASE CREATE CONTRACT CRSC 伺服器 控制伺服器
DATABASE CREATE DATABASE CRDB 伺服器 建立任何內容 DATABASE
DATABASE CREATE DATABASE DDL EVENT NOTIFICATION CRED 伺服器 建立 DDL EVENT NOTIFICATION
DATABASE CREATE DEFAULT CRDF 伺服器 控制伺服器
DATABASE CREATE FULLTEXT CATALOG CRFT 伺服器 控制伺服器
DATABASE CREATE FUNCTION CRFN 伺服器 控制伺服器
DATABASE CREATE MESSAGE TYPE CRMT 伺服器 控制伺服器
DATABASE CREATE PROCEDURE CRPR 伺服器 控制伺服器
DATABASE CREATE QUEUE CRQU 伺服器 控制伺服器
DATABASE CREATE REMOTE SERVICE BINDING 資源共享平台 (CRSB) 伺服器 控制伺服器
DATABASE CREATE ROLE CRRL 伺服器 控制伺服器
DATABASE CREATE ROUTE CRRT(連續性腎臟替代療法) 伺服器 控制伺服器
DATABASE CREATE RULE CRRU 伺服器 控制伺服器
DATABASE CREATE SCHEMA CRSM 伺服器 控制伺服器
DATABASE CREATE SERVICE CRSV 伺服器 控制伺服器
DATABASE CREATE SYMMETRIC KEY CRSK 伺服器 控制伺服器
DATABASE CREATE SYNONYM CRSN 伺服器 控制伺服器
DATABASE CREATE TABLE CRTB 伺服器 控制伺服器
DATABASE CREATE TYPE CRTY 伺服器 控制伺服器
DATABASE CREATE VIEW CRVW 伺服器 控制伺服器
DATABASE CREATE XML SCHEMA COLLECTION CRXS 伺服器 控制伺服器
DATABASE DELETE DL 伺服器 控制伺服器
DATABASE 執行指令 前任 伺服器 控制伺服器
DATABASE INSERT 在內 伺服器 控制伺服器
DATABASE 中斷 DATABASE 連線 KIDC

注意:僅適用於 SQL Database。 在 SQL Server 中使用 ALTER ANY CONNECTION。
伺服器 變更任何連線
DATABASE 參考文獻 射頻 伺服器 控制伺服器
DATABASE SELECT SL 伺服器 控制伺服器
DATABASE SHOWPLAN SPLN 伺服器 更改追蹤
DATABASE 訂閱查詢通知 SUQN 伺服器 控制伺服器
DATABASE 掌握主控權 到 伺服器 控制伺服器
DATABASE UPDATE 向上 伺服器 控制伺服器
DATABASE VIEW DATABASE 州 VWDS 伺服器 VIEW 伺服器狀態
DATABASE VIEW 定義 大眾 伺服器 VIEW 任何定義皆可
ENDPOINT 改變 鋁 伺服器 更改任何 ENDPOINT
ENDPOINT 連接 一氧化碳 伺服器 控制伺服器
ENDPOINT 控制 CL 伺服器 控制伺服器
ENDPOINT 掌握主控權 到 伺服器 控制伺服器
ENDPOINT VIEW 定義 大眾 伺服器 VIEW 任何定義皆可
FULLTEXT CATALOG 改變 鋁 DATABASE 更改任何 FULLTEXT CATALOG
FULLTEXT CATALOG 控制 CL DATABASE 控制
FULLTEXT CATALOG 參考文獻 射頻 DATABASE 參考文獻
FULLTEXT CATALOG 掌握主控權 到 DATABASE 控制
FULLTEXT CATALOG VIEW 定義 大眾 DATABASE VIEW 定義
FULLTEXT STOPLIST 改變 鋁 DATABASE 更改任何 FULLTEXT CATALOG
FULLTEXT STOPLIST 控制 CL DATABASE 控制
FULLTEXT STOPLIST 參考文獻 射頻 DATABASE 參考文獻
FULLTEXT STOPLIST 掌握主控權 到 DATABASE 控制
FULLTEXT STOPLIST VIEW 定義 大眾 DATABASE VIEW 定義
LOGIN 改變 鋁 伺服器 更改任何 LOGIN
LOGIN 控制 CL 伺服器 控制伺服器
LOGIN 冒充 即時通信 伺服器 控制伺服器
LOGIN VIEW 定義 大眾 伺服器 VIEW 任何定義皆可
MESSAGE TYPE 改變 鋁 DATABASE 更改任何 MESSAGE TYPE
MESSAGE TYPE 控制 CL DATABASE 控制
MESSAGE TYPE 參考文獻 射頻 DATABASE 參考文獻
MESSAGE TYPE 掌握主控權 到 DATABASE 控制
MESSAGE TYPE VIEW 定義 大眾 DATABASE VIEW 定義
物件 改變 鋁 SCHEMA 改變
物件 控制 CL SCHEMA 控制
物件 DELETE DL SCHEMA DELETE
物件 執行指令 前任 SCHEMA 執行指令
物件 INSERT 在內 SCHEMA INSERT
物件 RECEIVE RC SCHEMA 控制
物件 參考文獻 射頻 SCHEMA 參考文獻
物件 SELECT SL SCHEMA SELECT
物件 掌握主控權 到 SCHEMA 控制
物件 UPDATE 向上 SCHEMA UPDATE
物件 VIEW 變更追蹤 VWCT SCHEMA VIEW 變更追蹤
物件 VIEW 定義 大眾 SCHEMA VIEW 定義
REMOTE SERVICE BINDING 改變 鋁 DATABASE 更改任何 REMOTE SERVICE BINDING
REMOTE SERVICE BINDING 控制 CL DATABASE 控制
REMOTE SERVICE BINDING 掌握主控權 到 DATABASE 控制
REMOTE SERVICE BINDING VIEW 定義 大眾 DATABASE VIEW 定義
ROLE 改變 鋁 DATABASE 更改任何 ROLE
ROLE 控制 CL DATABASE 控制
ROLE 掌握主控權 到 DATABASE 控制
ROLE VIEW 定義 大眾 DATABASE VIEW 定義
ROUTE 改變 鋁 DATABASE 更改任何 ROUTE
ROUTE 控制 CL DATABASE 控制
ROUTE 掌握主控權 到 DATABASE 控制
ROUTE VIEW 定義 大眾 DATABASE VIEW 定義
SEARCH PROPERTY LIST 改變 鋁 伺服器 更改任何 FULLTEXT CATALOG
SEARCH PROPERTY LIST 控制 CL 伺服器 控制
SEARCH PROPERTY LIST 參考文獻 射頻 伺服器 參考文獻
SEARCH PROPERTY LIST 掌握主控權 到 伺服器 控制
SEARCH PROPERTY LIST VIEW 定義 大眾 伺服器 VIEW 定義
SCHEMA 改變 鋁 DATABASE 更改任何 SCHEMA
SCHEMA 控制 CL DATABASE 控制
SCHEMA CREATE SEQUENCE CRSO DATABASE 控制
SCHEMA DELETE DL DATABASE DELETE
SCHEMA 執行指令 前任 DATABASE 執行指令
SCHEMA INSERT 在內 DATABASE INSERT
SCHEMA 參考文獻 射頻 DATABASE 參考文獻
SCHEMA SELECT SL DATABASE SELECT
SCHEMA 掌握主控權 到 DATABASE 控制
SCHEMA UPDATE 向上 DATABASE UPDATE
SCHEMA VIEW 變更追蹤 VWCT DATABASE VIEW 變更追蹤
SCHEMA VIEW 定義 大眾 DATABASE VIEW 定義
伺服器 管理批量操作 ADBO 不適用 不適用
伺服器 變更任何連線 ALCO 不適用 不適用
伺服器 更改任何 CREDENTIAL ALCD 不適用 不適用
伺服器 更改任何 DATABASE ALDB 不適用 不適用
伺服器 更改任何 ENDPOINT ALHE 不適用 不適用
伺服器 更改任何 EVENT NOTIFICATION 艾爾啤酒 不適用 不適用
伺服器 更改任何 EVENT SESSION AAES 不適用 不適用
伺服器 更改任何連接的伺服器 ALLS 不適用 不適用
伺服器 更改任何 LOGIN ALLG 不適用 不適用
伺服器 更改任何 SERVER AUDIT ALAA 不適用 不適用
伺服器 更改任何 SERVER ROLE ALSR 不適用 不適用
伺服器 ALTER AVAILABILITY GROUP ALAG 不適用 不適用
伺服器 更改資源 ALRS 不適用 不適用
伺服器 更改伺服器狀態 ALSS 不適用 不適用
伺服器 修改設定 ALST 不適用 不適用
伺服器 更改追蹤 ALTR 不適用 不適用
伺服器 驗證伺服器 認證 不適用 不適用
伺服器 連接任何 DATABASE CADB 不適用 不適用
伺服器 連接 SQL COSQ 不適用 不適用
伺服器 控制伺服器 CL 不適用 不適用
伺服器 建立任何內容 DATABASE CRDB 不適用 不適用
伺服器 建立可用性群組 CRAC 不適用 不適用
伺服器 建立 DDL EVENT NOTIFICATION CRDE 不適用 不適用
伺服器 CREATE ENDPOINT CRHE 不適用 不適用
伺服器 CREATE SERVER ROLE CRSR 不適用 不適用
伺服器 建立追蹤記錄 EVENT NOTIFICATION CRTE 不適用 不適用
伺服器 外部存取 ASSEMBLY XA 不適用 不適用
伺服器 冒充任何一個 LOGIN IAL 不適用 不適用
伺服器 選擇所有 USER 擔保資產 SUS 不適用 不適用
伺服器 關機 SHDN 不適用 不適用
伺服器 不安全 ASSEMBLY 徐 不適用 不適用
伺服器 VIEW 任意 DATABASE VWDB 不適用 不適用
伺服器 VIEW 任何定義皆可 VWAD 不適用 不適用
伺服器 VIEW 伺服器狀態 VWSS 不適用 不適用
SERVER ROLE 改變 鋁 伺服器 更改任何 SERVER ROLE
SERVER ROLE 控制 CL 伺服器 控制伺服器
SERVER ROLE 掌握主控權 到 伺服器 控制伺服器
SERVER ROLE VIEW 定義 大眾 伺服器 VIEW 任何定義皆可
SERVICE 改變 鋁 DATABASE 更改任何 SERVICE
SERVICE 控制 CL DATABASE 控制
SERVICE SEND 序號 DATABASE 控制
SERVICE 掌握主控權 到 DATABASE 控制
SERVICE VIEW 定義 大眾 DATABASE VIEW 定義
SYMMETRIC KEY 改變 鋁 DATABASE 更改任何 SYMMETRIC KEY
SYMMETRIC KEY 控制 CL DATABASE 控制
SYMMETRIC KEY 參考文獻 射頻 DATABASE 參考文獻
SYMMETRIC KEY 掌握主控權 到 DATABASE 控制
SYMMETRIC KEY VIEW 定義 大眾 DATABASE VIEW 定義
TYPE 控制 CL SCHEMA 控制
TYPE 執行指令 前任 SCHEMA 執行指令
TYPE 參考文獻 射頻 SCHEMA 參考文獻
TYPE 掌握主控權 到 SCHEMA 控制
TYPE VIEW 定義 大眾 SCHEMA VIEW 定義
USER 改變 鋁 DATABASE 更改任何 USER
USER 控制 CL DATABASE 控制
USER 冒充 即時通信 DATABASE 控制
USER VIEW 定義 大眾 DATABASE VIEW 定義
XML SCHEMA COLLECTION 改變 鋁 SCHEMA 改變
XML SCHEMA COLLECTION 控制 CL SCHEMA 控制
XML SCHEMA COLLECTION 執行指令 前任 SCHEMA 執行指令
XML SCHEMA COLLECTION 參考文獻 射頻 SCHEMA 參考文獻
XML SCHEMA COLLECTION 掌握主控權 到 SCHEMA 控制
XML SCHEMA COLLECTION VIEW 定義 大眾 SCHEMA VIEW 定義

許可權檢查演算法的摘要

檢查權限可能相當複雜。 許可權檢查演算法包含重疊的群組成員資格和擁有鏈,涉及明確和隱含的許可權,並且可能受到包含安全性實體的可保護類別的許可權影響。 演算法的一般程式是收集所有相關許可權。 若未發現造成阻塞的 DENY,該演算法會搜尋可提供足夠存取權限的 GRANT。 演算法包含三個基本元素: 安全性內容、 許可權空間和 必要許可權。

備註

您無法授與、拒絕或撤銷sa、dbo、實體擁有者、information_schema、sys 或您自己的許可權。

  • 安全性內容

    這是參與存取檢查許可權的主體群組。 這些權限與目前的登入或使用者相關,除非使用該 EXECUTE AS 語句將安全情境變更為另一個登入或使用者。 安全性內容包含下列主體:

    • 登入

    • 使用者

    • 角色成員資格

    • Windows 群組成員資格

    • 如果使用模組簽署,則用於簽署使用者目前執行之模組之憑證的任何登入或用戶帳戶,以及該主體的相關角色成員資格。

  • 許可權空間

    這是可保護的實體以及所有包含該實體的可保護類別。 例如,數據表(安全性實體)是由架構安全性實體類別和資料庫安全性實體類別所包含。 存取可能會受到數據表、架構、資料庫和伺服器層級許可權的影響。 如需詳細資訊,請參閱 許可權階層 (資料庫引擎)。

  • 必要許可權

    所需的許可權種類。 例如,INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL 等等。

    存取可能需要多個許可權,如下列範例所示:

    • 預存程序可能同時需要對該預存程序具有 EXECUTE 權限,以及對該預存程序所參照的多個資料表具有 INSERT 權限。

    • 動態管理檢視可能需要同時具備 VIEW SERVER STATE 權限以及該檢視上的 SELECT 權限。

演算法的一般步驟

當演算法判斷是否允許存取安全性實體時,所使用的精確步驟可能會因主體和所涉及的安全性實體而有所不同。 不過,演算法會執行下列一般步驟:

  1. 略過許可權檢查,當登入是 sysadmin 固定伺服器角色的成員,或使用者是目前資料庫中的 dbo 使用者時。

  2. 如果擁有權鏈結適用,且鏈結中較早的對象已通過安全性檢查,則允許存取。

  3. 匯總與呼叫端相關聯的伺服器層級、資料庫層級和已簽署模組身分識別,以建立 安全性內容。

  4. 針對該安全性內容,收集在權限範圍內授予或拒絕的所有權限。 權限可明確表述為 GRANT、GRANT 搭配 GRANT,或 DENY;或者,該權限也可以是默示或涵蓋性權限 GRANT 或 DENY。 例如,對架構的 CONTROL 權限意味著擁有對資料表的 CONTROL 權限。 數據表上的 CONTROL 表示 SELECT。 因此,如果授予架構上的 CONTROL,則會授予資料表上的 SELECT。 如果數據表上的 CONTROL 遭到拒絕,則會拒絕數據表上的 SELECT。

    備註

    欄位層級權限的 A GRANT 會覆蓋物件層級的 A DENY 。

  5. 識別 必要的許可權。

  6. 如果物件的許可權空間中的安全性內容的任何身分識別直接或隱含被拒絕必要許可權,則許可權檢查失敗。

  7. 若所需權限未被拒絕,且該權限直接或隱含GRANTGRANTGRANT對安全情境中任一身份的權限,則通過權限檢查。

範例

本節中的範例示範如何擷取許可權資訊。

A。 傳回可授與許可權的完整清單

下列語句會使用 fn_builtin_permissions 函式傳回所有 資料庫引擎 許可權。 如需詳細資訊,請參閱 sys.fn_builtin_permissions (Transact-SQL) 。

SELECT * FROM fn_builtin_permissions(default);  
GO  

B. 傳回特定物件類別的許可權

下列範例會使用 fn_builtin_permissions 來檢視某一類別的安全物件可用的所有許可權。 此範例會傳回元件的許可權。

SELECT * FROM fn_builtin_permissions('assembly');  
GO    

C. 傳回執行主體在某個物件上被授予的權限

下列範例會使用 fn_my_permissions 傳回由呼叫主體在指定安全性實體上持有的有效許可權清單。 此範例會傳回名為 Orders55的物件許可權。 如需詳細資訊,請參閱 sys.fn_my_permissions (Transact-SQL) 。

SELECT * FROM fn_my_permissions('Orders55', 'object');  
GO  

D. 傳回適用於指定物件的許可權

下列範例會傳回適用於稱為 Yttrium之物件的許可權。 請注意,內建函式 OBJECT_ID 是用來擷取 對象的 Yttrium標識碼。

SELECT * FROM sys.database_permissions   
    WHERE major_id = OBJECT_ID('Yttrium');  
GO  

另請參閱

權限階層 (資料庫引擎)
sys.database_permissions (Transact-SQL)