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 )、語句許可權(字元字串 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)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應