GRANT 系統物件權限 (Transact-SQL)
適用于:SQL Server
Azure SQL 受控執行個體
授與系統物件 (如系統預存程序、擴充預存程序、函數及檢視) 的權限。
Syntax
GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal
注意
若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
[ sys.] .
只有在參考目錄檢視和動態管理檢視時,才需要 sys 限定詞。
system_object
指定要授與其權限的物件。
principal
指定要對其授與權限的主體。
備註
此語句可用來授與特定預存程式、擴充預存程式、資料表值函式、純量函式、檢視、目錄檢視、相容性檢視、INFORMATION_SCHEMA檢視、動態管理檢視,以及由 SQL Server 所安裝之系統資料表的許可權。 在伺服器的資源資料庫 (mssqlsystemresource) 中,這些系統物件會個別以唯一記錄形式存在。 資源資料庫是唯讀的。 該物件的連結會公開為每個資料庫之 sys 結構描述中的記錄。 可以授與、拒絕及撤銷執行或選取系統物件的權限。
授與執行或選取某物件的權限,不一定會轉讓所有使用該物件所需的權限。 大部分的物件所執行的作業都需要其他權限。 例如,被授與 sp_addlinkedserver 之 EXECUTE 權限的使用者無法建立連結伺服器,除非該使用者也是系統管理員 (sysadmin) 固定伺服器角色的成員。
預設名稱解析會對資源資料庫解析不合格的程序名稱。 因此,只有在指定目錄檢視和動態管理檢視時,才需要 sys 限定詞。
不支援授與觸發程序的權限及授與系統物件之資料行的權限。
系統物件的許可權會在升級SQL Server期間保留。
您可以在 sys.system_objects 目錄檢視中看到系統物件。 您可以在 master 資料庫的 sys.database_permissions 目錄檢視中,看到系統物件的權限。
下列查詢會傳回系統物件權限的相關資訊:
SELECT * FROM master.sys.database_permissions AS dp
JOIN sys.system_objects AS so
ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO
權限
需要 CONTROL SERVER 權限。
範例
A. 授與檢視的 SELECT 權限
下列範例會授與SQL Server登入 Sylvester1
許可權,以選取列出SQL Server登入的檢視。 然後,此範例會授與檢視使用者未擁有之登入SQL Server中繼資料所需的額外許可權。
USE AdventureWorks2012;
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO
B. 授與擴充預存程序的 EXECUTE 權限
下列範例會對 EXECUTE
授與 xp_readmail
的 Sylvester1
權限。
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO
另請參閱
sys.system_objects (Transact-SQL)
sys.database_permissions (Transact-SQL)
REVOKE 系統物件權限 (Transact-SQL)
DENY 系統物件權限 (Transact-SQL)