sp_helprotect (Transact-SQL)

適用於:SQL Server

傳回報表,其具有目前資料庫中物件或語句許可權之使用者權限的相關資訊。

重要

sp_helprotect 不會傳回 SQL Server 2005 (9.x) 中引進的安全性實體相關資訊。 請改用 sys.database_permissions fn_builtin_permissions

不會列出一律指派給固定伺服器角色或固定資料庫角色的許可權。 不包含根據其角色成員資格接收許可權的登入或使用者。

Transact-SQL 語法慣例

語法

  
sp_helprotect [ [ @name = ] 'object_statement' ]   
     [ , [ @username = ] 'security_account' ]   
     [ , [ @grantorname = ] 'grantor' ]   
     [ , [ @permissionarea = ] 'type' ]  

引數

[ @name = ] 'object_statement' 這是目前資料庫中的物件名稱,或具有報表許可權的 語句。 object_statement 是 Nvarchar(776), 預設值為 Null,它會傳回所有物件和語句許可權。 如果值是物件(資料表、檢視表、預存程式或擴充預存程式),它必須是目前資料庫中的有效物件。 物件名稱可以在表單 擁有者中包含擁有者 限定詞。 物件

如果 object_statement 是語句,它可以是 CREATE 語句。

[ @username = ] 'security_account' 這是傳回許可權的主體名稱。 security_account是 sysname ,預設值為 Null,它會傳回目前資料庫中的所有主體。 security_account必須存在於目前的資料庫中。

[ @grantorname = ] 'grantor' 這是授與許可權之主體的名稱。 grantor sysname ,預設值為 Null,它會針對資料庫中任何主體授與的許可權傳回所有資訊。

[ @permissionarea = ] 'type' 這是字元字串,指出是否要顯示物件使用權限(字元字串 o )、語句許可權(字元字串 s ),或兩者 ( os )。 類型 Varchar(10) ,預設值為 os type 可以是 o 和 s 的任何組合 ,在 o s 之間 不帶逗號或空格。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

資料行名稱 資料類型 描述
負責人 sysname 物件擁有者的名稱。
Object sysname 物件的名稱。
被授與者 sysname 授與許可權的主體名稱。
授與者 sysname 授與指定被授與者許可權的主體名稱。
ProtectType Nvarchar(10) 保護類型的名稱:

GRANT REVOKE
動作 nvarchar(60) 許可權的名稱。 有效的許可權語句取決於物件的類型。
資料行 sysname 許可權類型:

All = Permission 涵蓋物件的所有目前資料行。

New = Permission 涵蓋未來物件上可能變更的任何新資料行(使用 ALTER 語句)。

All+New = All 和 New 的組合。

如果許可權的類型不適用於資料行,則傳回句點。

備註

下列程式中的所有參數都是選擇性的。 如果沒有參數執行, sp_helprotect 則會顯示目前資料庫中已授與或拒絕的擁有權限。

如果指定部分但並非所有參數,請使用具名參數來識別特定參數,或 NULL 做為預留位置。 例如,若要報告被授與者資料庫擁有者的擁有權限( dbo ),請執行下列動作:

EXEC sp_helprotect NULL, NULL, dbo;  

Or

EXEC sp_helprotect @grantorname = 'dbo';  

輸出報表依許可權類別、擁有者、物件、被授與者、授與者、保護類型類別、保護類型、保護類型、動作和資料行循序識別碼排序。

權限

需要 public 角色的成員資格。

傳回的資訊受限於中繼資料的存取限制。 主體沒有許可權的實體不會出現。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

A. 列出資料表的許可權

下列範例會列出資料表的許可權 titles

EXEC sp_helprotect 'titles';  

B. 列出使用者的許可權

下列範例會列出使用者 Judy 目前資料庫中擁有的擁有權限。

EXEC sp_helprotect NULL, 'Judy';  

C. 列出特定使用者授與的許可權

下列範例會列出目前資料庫中使用者 Judy 授與的擁有權限,並使用 NULL 做為遺漏參數的預留位置。

EXEC sp_helprotect NULL, NULL, 'Judy';  

D. 僅列出語句許可權

下列範例會列出目前資料庫中的所有語句許可權,並使用 NULL 做為遺漏參數的預留位置。

EXEC sp_helprotect NULL, NULL, NULL, 's';   

e. 列出 CREATE 語句的許可權

下列範例會列出已授與 CREATE TABLE 許可權的所有使用者。

EXEC sp_helprotect @name = 'CREATE TABLE';  

另請參閱

安全性預存程序 (Transact-SQL)
DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
系統預存程序 (Transact-SQL)