sp_helprotect (Transact-SQL)
傳回報表,報表中有目前資料庫中之物件的使用者權限或陳述式權限的相關資訊。
重要事項 |
---|
sp_helprotect 不會傳回 SQL Server 2005 中所導入之安全性實體的相關資訊。請改用 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,它會傳回所有物件和陳述式權限。如果值是物件 (資料表、檢視、預存程序或擴充預存程序),它必須是目前資料庫中的有效物件。物件名稱可以包含採用 owner**.**object 格式的擁有者限定詞。如果 object_statement 是陳述式,它可以是 CREATE 陳述式。
[ @username = ] 'security_account'
這是傳回的權限所屬的主體名稱。security_account 是 sysname,預設值是 NULL,它會傳回目前資料庫中的所有主體。security_account 必須存在於目前資料庫中。[ @grantorname = ] 'grantor'
這是授與權限的主體名稱。grantor 是 sysname,預設值是 NULL,它會傳回資料庫中任何主體授與之權限的所有資訊。[ @permissionarea = ] 'type'
這是字元字串,指出要顯示物件權限 (字元字串 o)、陳述式權限 (字元字串 s) 或兩者 (o s)。type 是 varchar(10),預設值是 o s。type 可以是 o 和 s 的任何組合,o 與 s 之間可以有逗號或空格,也可以沒有逗號或空格。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
資料行名稱 |
資料類型 |
描述 |
---|---|---|
擁有者 |
sysname |
物件擁有者的名稱。 |
物件 |
sysname |
物件的名稱。 |
Grantee |
sysname |
對其授與權限之主體的名稱。 |
授與者 |
sysname |
對指定的被授與者授與權限之主體的名稱。 |
ProtectType |
nvarchar(10) |
保護類型的名稱: GRANT REVOKE |
動作 |
nvarchar(60) |
權限的名稱。權限陳述式是否有效,需根據物件類型而定。 |
資料行 |
sysname |
權限的類型: 全部 = 權限涵蓋物件的所有目前資料行。 新增 = 權限涵蓋未來可能在物件上變更 (利用 ALTER 陳述式) 的任何新資料行。 全部+新增 = 全部和新增的組合。 如果權限類型不適用於資料行,則傳回句號。 |
備註
下列程序中的所有參數都是選擇性的。如果執行時沒有設定任何參數,則 sp_helprotect 會顯示所有已在目前資料庫中授與或拒絕的權限。
如果只指定了部份 (而非全部) 參數,請利用具名參數來識別特定參數,或識別作為預留位置的 NULL。例如,若要報告同意授權者資料庫擁有者 (dbo) 的所有權限,請執行下列陳述式:
EXEC sp_helprotect NULL, NULL, dbo
或
EXEC sp_helprotect @grantorname = 'dbo'
輸出報表的排序依據如下:權限類別目錄、擁有者、物件、被授與者、同意授權者、保護類型類別目錄、保護類型、動作,以及資料行循序識別碼。
權限
需要 public 角色中的成員資格。
傳回的資訊受限於中繼資料存取限制。主體對其沒有權限的實體不會出現。如需詳細資訊,請參閱<中繼資料可見性組態>。
範例
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';