sp_helprotect (Transact-SQL)
適用於:SQL Server
傳回報表,這是目前資料庫中物件或語句許可權之用戶權力的相關信息。
重要
sp_helprotect
不會傳回 SQL Server 2005 (9.x) 和更新版本中引進的安全性實體相關信息。 請改用 sys.database_permissions 和 sys.fn_builtin_permissions 。
不會列出一律指派給固定伺服器角色或固定資料庫角色的許可權。 不包含根據其角色成員資格接收許可權的登入或使用者。
語法
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
之間o
s
不具有逗號或空格。
傳回碼值
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';