GRANT (Transact-SQL)

適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure SynapseAnalytics Analytics Platform System (PDW)SQL 分析端點

將安全性實體的權限授與某個主體。 一般概念是 GRANT <some permission> ON <some object> TO <some user, login, or group>。 如需權限的一般說明,請參閱權限 (資料庫引擎)

Transact-SQL 語法慣例

Syntax

SQL Server 和 Azure SQL Database 的語法。

-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Azure Synapse Analytics 和平行處理數據倉儲和 Microsoft Fabric 的語法。

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

ALL

這個選項已被取代,只保留回溯相容性。 它不會授與所有可能的許可權。 授 ALL 與相當於授與下列許可權。

安全性實體 權限
Database BACKUP DATABASEBACKUP LOGCREATE DATABASE、、CREATE DEFAULTCREATE FUNCTIONCREATE RULECREATE PROCEDURECREATE TABLE、 和CREATE VIEW
純量函式 EXECUTEREFERENCES
數據表值函式 DELETEINSERTREFERENCESSELECTUPDATE
預存程序 EXECUTE
Table DELETEINSERTREFERENCESSELECTUPDATE
檢視 DELETEINSERTREFERENCESSELECTUPDATE

PRIVILEGES

為符合 ISO 而包含這個項目。 不會變更 的行為 ALL

permission

許可權的名稱。 下列各節將說明許可權與安全性實體的有效對應。

column

指定正在授與權限的資料表中資料行的名稱。 (括弧和 ) 是必要的。

class

指定正在授與權限之安全性實體的類別。 需要範圍限定符 ::

securable

指定要授與其權限的安全性實體。

TO principal

主體的名稱。 可以被授與安全性實體權限的主體,隨著安全性實體而不同。 如需有效的組合,請參閱下列各節。

GRANT OPTION

指出也會提供被授與者授與指定權限給其他主體的能力。

AS principal

AS <principal>使用 子句來表示記錄為許可權授出席者的主體應該是執行語句的人員以外的主體。 例如,假設使用者 Mary 具有 principal_id12,而使用者 Raul 是主體 15。 Mary 會執行 GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now 數據表sys.database_permissions,表示 grantor_prinicpal_id15Raul即使語句實際上是由使用者12執行 ()。Mary

AS除非您需要明確定義許可權鏈結,否則通常不建議使用 子句。 如需詳細資訊,請參閱 許可權檢查演算法的摘要。

AS在此語句中使用 並不表示能夠模擬另一個使用者。

備註

語句的完整語法 GRANT 很複雜。 先前的語法圖表已簡化,以引起人們對其結構的注意。 本文稍後所列的文章會說明授與特定安全性實體許可權的完整語法。

REVOKE語句可用來移除授與的許可權,而 DENY 語句可用來防止主體透過 GRANT取得特定許可權。

授與許可權會移除 DENY 指定安全性實體的許可權或 REVOKE 該許可權。 如果在包含安全性實體的較高範圍中拒絕相同的許可權, DENY 則優先使用 。 但撤銷較高範圍中授與的許可權並不優先。

資料庫層級權限是在指定資料庫的範圍內授與。 如果使用者必須具有其他資料庫中的物件權限,應在其他資料庫中建立使用者帳戶,或將使用者帳戶存取權授與其他資料庫和目前的資料庫。

警告

資料表層權 DENY 不會優先於資料行層級 GRANT。 保留權限階層中這項不一致的目的,是為了與舊版相容。 未來的版本將予以移除。

系統 sp_helprotect 預存程式會報告資料庫層級安全性實體的許可權。

在 Microsoft Fabric 中, CREATE USER 目前無法明確執行。 執行 或 DENYGRANT,會自動建立使用者。

WITH GRANT OPTION

GRANT ... WITH GRANT OPTION指定接收許可權的安全性主體能夠將指定的許可權授與其他安全性帳戶。 當接收許可權的主體是角色或 Windows 群組時,當物件許可權需要進一步授與群組或角色成員的使用者時, AS 必須使用 子句。 因為只有使用者,而不是群組或角色,才能執行 GRANT 語句,因此群組或角色的特定成員必須在授與許可權時使用 子句來明確叫用 AS 角色或群組成員資格。 下列範例示範如何 WITH GRANT OPTION 授與角色或 Windows 群組時使用 。

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

SQL Server 權限的圖表

如需 PDF 格式所有 資料庫引擎 權限的海報大小圖表,請參閱 https://aka.ms/sql-permissions-poster

權限

被授出席者(或以 選項指定的 AS 主體)必須具有 GRANT OPTION的許可權本身,或表示授與許可權的更高許可權。 如果使用 AS 選項,則會套用其他需求。 如需詳細資料,請參閱安全性實體的特定文章。

物件擁有者可以授與他們所擁有之物件的權限。 具有 CONTROL 安全性實體許可權的主體可以授與該安全性實體的許可權。

許可權的被授出席者CONTROL SERVER,例如系統管理員固定伺服器角色的成員,可以授與伺服器中任何安全性實體的任何許可權。 資料庫的許可權被授出席者CONTROL,例如db_owner固定資料庫角色的成員,可以授與資料庫中任何安全性實體的任何許可權。 架構的許可權被授出席者 CONTROL 可以授與架構內任何物件的任何許可權。

範例

下表列出安全性實體和描述安全性實體特定語法的文章。

安全性實體 GRANT 語法
應用程式角色 GRANT 資料庫主體權限 (Transact-SQL)
組件 GRANT 組件權限 (Transact-SQL)
非對稱金鑰 GRANT 非對稱金鑰權限 (Transact-SQL)
可用性群組 授與可用性群組權限 (Transact-SQL)
憑證 GRANT 憑證權限 (Transact-SQL)
合約 GRANT Service Broker 權限 (Transact-SQL)
資料庫 GRANT 資料庫權限 (Transact-SQL)
資料庫範圍認證 GRANT 資料庫範圍認證 (Transact-SQL)
端點 GRANT 端點權限 (Transact-SQL)
全文檢索目錄 GRANT 全文檢索權限 (Transact-SQL)
全文檢索停用字詞表 GRANT 全文檢索權限 (Transact-SQL)
函式 GRANT 物件權限 (Transact-SQL)
登入 GRANT 伺服器主體權限 (Transact-SQL)
訊息類型 GRANT Service Broker 權限 (Transact-SQL)
物件 GRANT 物件權限 (Transact-SQL)
佇列 GRANT 物件權限 (Transact-SQL)
遠端服務繫結 GRANT Service Broker 權限 (Transact-SQL)
角色 GRANT 資料庫主體權限 (Transact-SQL)
路由 GRANT Service Broker 權限 (Transact-SQL)
結構描述 GRANT 結構描述權限 (Transact-SQL)
搜尋屬性清單 GRANT 搜尋屬性清單權限 (Transact-SQL)
伺服器 GRANT 伺服器權限 (Transact-SQL)
服務 GRANT Service Broker 權限 (Transact-SQL)
預存程序 GRANT 物件權限 (Transact-SQL)
對稱金鑰 GRANT 對稱金鑰權限 (Transact-SQL)
同義字 GRANT 物件權限 (Transact-SQL)
系統物件 GRANT 系統物件權限 (Transact-SQL)
資料表 GRANT 物件權限 (Transact-SQL)
類型 GRANT 類型權限 (Transact-SQL)
User GRANT 資料庫主體權限 (Transact-SQL)
檢視 GRANT 物件權限 (Transact-SQL)
XML 結構描述集合 GRANT XML 結構描述集合權限 (Transact-SQL)