sp_helprotect (Transact-SQL)
適用于:SQL Server
傳回報表,報表中有目前資料庫中之物件的使用者權限或陳述式權限的相關資訊。
重要
sp_helprotect不會傳回 SQL Server 2005 (9.x) 中引進的安全性實體相關資訊。 請改用 sys.database_permissions 和 fn_builtin_permissions 。
不會列出一律指派給固定伺服器角色或固定資料庫角色的權限。 不包括依本身在角色中的成員資格獲得權限的登入或使用者。
語法
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) 、語句許可權 (字元字串 ) ,或 (os) 。 類型 為 Varchar (10) ,預設值為 os。 type 可以是 o 和 s的任何組合,在 o 和 s之間具有或不含逗號或空格。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
資料行名稱 | 資料類型 | 描述 |
---|---|---|
擁有者 | sysname | 物件擁有者的名稱。 |
Object | sysname | 物件的名稱。 |
被授與者 | sysname | 對其授與權限之主體的名稱。 |
授與者 | sysname | 對指定的被授與者授與權限之主體的名稱。 |
ProtectType | Nvarchar (10) | 保護類型的名稱: GRANT REVOKE |
動作 | nvarchar(60) | 權限的名稱。 權限陳述式是否有效,需根據物件類型而定。 |
資料行 | sysname | 權限的類型: 全部 = 權限涵蓋物件的所有目前資料行。 新增 = 權限涵蓋未來可能在物件上變更 (利用 ALTER 陳述式) 的任何新資料行。 全部+新增 = 全部和新增的組合。 如果權限類型不適用於資料行,則傳回句號。 |
備註
下列程序中的所有參數都是選擇性的。 如果執行時沒有設定任何參數,則 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)