分享方式:


sp_helprotect (Transact-SQL)

適用於:SQL Server

傳回報表,這是目前資料庫中物件或語句許可權之用戶權力的相關信息。

重要

sp_helprotect 不會傳回 SQL Server 2005 (9.x) 和更新版本中引進的安全性實體相關信息。 請改用 sys.database_permissionssys.fn_builtin_permissions

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

Transact-SQL 語法慣例

語法

sp_helprotect
    [ [ @name = ] N'name' ]
    [ , [ @username = ] N'username' ]
    [ , [ @grantorname = ] N'grantorname' ]
    [ , [ @permissionarea = ] 'permissionarea' ]
[ ; ]

引數

[ @name = ] N'name'

目前資料庫中的物件名稱,或語句,這是報告的許可權。 @name是 nvarchar(776),預設值NULL為 ,它會傳回所有對象和語句許可權。 如果值是物件(數據表、檢視表、預存程式或擴充預存程式),它必須是目前資料庫中的有效物件。 物件名稱可以包含表單 <owner>.<object>中的擁有者限定符。

如果 @name 是語句,它可以是 CREATE 語句。

[ @username = ] N'username'

傳回許可權的主體名稱。 @username是 sysname,預設值NULL,它會傳回目前資料庫中的所有主體。 @username必須存在於目前的資料庫中。

[ @grantorname = ] N'grantorname'

授與許可權之主體的名稱。 @grantorname是 sysname,預設值NULL為 ,它會傳回資料庫中任何主體所授與之許可權的所有資訊。

[ @permissionarea = ] 'permissionarea'

字元字串,指出是否要顯示物件許可權(字元字串 o)、語句許可權(字元字串 s),或兩者(o s)。 @permissionarea為 varchar(10),預設值為 o s@permissionarea可以是 和的任何組合o,且在和 s之間os不具有逗號或空格。

傳回碼值

0 (成功) 或 1 (失敗)。

結果集

資料行名稱 資料類型 描述
Owner sysname 對象擁有者的名稱。
Object sysname 物件的名稱。
Grantee sysname 授與許可權的主體名稱。
Grantor sysname 授與指定被授出席者許可權的主體名稱。
ProtectType nvarchar(10) 保護類型的名稱:

GRANT REVOKE
Action nvarchar(60) 許可權的名稱。 有效的許可權語句取決於物件的類型。
Column sysname 權限類型:

All = 權限涵蓋物件的所有目前資料列。
New = 許可權涵蓋未來物件上可能變更的任何新數據行(使用 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';