使用SQL語(yǔ)句獲取SQL Server數(shù)據(jù)庫(kù)登錄用戶權(quán)限
sp_helprotect返回一個(gè)報(bào)表,報(bào)表中包含當(dāng)前數(shù)據(jù)庫(kù)中某對(duì)象的用戶權(quán)限或語(yǔ)句權(quán)限的信息。
語(yǔ)法sp_helprotect [ [ @name = ] 'object_statement' ] [ , [ @username = ] 'security_account' ] [ , [ @grantorname = ] 'grantor' ] [ , [ @permissionarea = ] 'type' ] 參數(shù)[@name =] 'object_statement' 是當(dāng)前數(shù)據(jù)庫(kù)中要報(bào)告其權(quán)限的對(duì)象或語(yǔ)句的名稱。object_statement 的數(shù)據(jù)類(lèi)型為 nvarchar(776),默認(rèn)值為 NULL,此默認(rèn)值將返回所有的對(duì)象及語(yǔ)句權(quán)限。如果值是一個(gè)對(duì)象(表、視圖、存儲(chǔ)過(guò)程或擴(kuò)展存儲(chǔ)過(guò)程),那么它必須是當(dāng)前數(shù)據(jù)庫(kù)中一個(gè)有效的對(duì)象。對(duì)象名稱可以包含所有者限定符,形式為 owner.object。 如果 object_statement 是一個(gè)語(yǔ)句,則可以為: CREATE DATABASE CREATE DEFAULT CREATE FUNCTION CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE VIEW BACKUP DATABASE BACKUP LOG [@username =] 'security_account' 是返回其權(quán)限的安全帳戶名稱。security_account 的數(shù)據(jù)類(lèi)型為 sysname,默認(rèn)值為 NULL,這個(gè)默認(rèn)值將返回當(dāng)前數(shù)據(jù)庫(kù)中所有的安全帳戶。security_account 必須是當(dāng)前數(shù)據(jù)庫(kù)中的有效安全帳戶。當(dāng)指定 Microsoft® Windows NT® 用戶時(shí),請(qǐng)指定該 Windows NT 用戶在數(shù)據(jù)庫(kù)中可被識(shí)別的名稱(用 sp_grantdbaccess 添加)。 [@grantorname =] 'grantor' 是已授權(quán)的安全帳戶的名稱。grantor 的數(shù)據(jù)類(lèi)型為 sysname,默認(rèn)值為 NULL,這個(gè)默認(rèn)值將返回?cái)?shù)據(jù)庫(kù)中任何安全帳戶所授權(quán)限的所有信息。當(dāng)指定 Windows NT 用戶時(shí),請(qǐng)指定該 Windows NT 用戶在數(shù)據(jù)庫(kù)中可被識(shí)別的名稱(用 sp_grantdbaccess 添加)。 [@permissionarea =] 'type' 是一個(gè)字符串,表示是顯示對(duì)象權(quán)限(字符串 o)、語(yǔ)句權(quán)限(字符串 s)還是兩者都顯示 (o s)。type 的數(shù)據(jù)類(lèi)型為 varchar(10),默認(rèn)值為 o s。type 可以是 o 和 s 的任意組合,在 o 和 s 之間可以有也可以沒(méi)有逗號(hào)或空格。 返回代碼值0(成功)或 1(失?。?br> 結(jié)果集列名數(shù)據(jù)類(lèi)型描述Owner sysname 對(duì)象所有者的名稱。 Object sysname 對(duì)象的名稱。 Grantee sysname 被授予權(quán)限的用戶的名稱。 Grantor sysname 向指定的被授權(quán)限用戶進(jìn)行授權(quán)的用戶的名稱。 ProtectType char(10) 保護(hù)類(lèi)型的名稱: GRANT REVOKE Action varchar(20) 權(quán)限的名稱: REFERENCES SELECT INSERT DELETE UPDATE CREATE TABLE CREATE DATABASE CREATE FUNCTION CREATE RULE CREATE VIEW CREATE PROCEDURE EXECUTE BACKUP DATABASE CREATE DEFAULT BACKUP LOG Column sysname 權(quán)限的類(lèi)型: All = 權(quán)限適用于對(duì)象所有的當(dāng)前列。 New = 權(quán)限適用于任何以后可以在對(duì)象上進(jìn)行修改(使用 ALTER 語(yǔ)句)的新列。 All+New = All 和 New 的組合。 注釋該過(guò)程的所有參數(shù)都是可選的。如果不帶參數(shù)執(zhí)行 sp_helprotect,將顯示當(dāng)前數(shù)據(jù)庫(kù)中所有已經(jīng)授予或拒絕的權(quán)限。 如果指定了一部分參數(shù),而不是指定全部參數(shù),請(qǐng)使用命名參數(shù)來(lái)標(biāo)識(shí)特定的參數(shù),或者使用 NULL 作為占位符。例如,若要報(bào)告授予方 dbo 的所有權(quán)限,請(qǐng)執(zhí)行: EXEC sp_helprotect NULL, NULL, dbo 或 EXEC sp_helprotect @grantorname = 'dbo' 輸出報(bào)表按權(quán)限分類(lèi)、所有者、對(duì)象、被授予方、授予方、保護(hù)類(lèi)型分類(lèi)、保護(hù)類(lèi)型、動(dòng)作以及列連續(xù) ID 進(jìn)行排序。 權(quán)限執(zhí)行權(quán)限默認(rèn)授予 public 角色。 示例A. 列出某個(gè)表的權(quán)限下面的示例列出了表 titles 的權(quán)限。 EXEC sp_helprotect 'titles' B. 列出某個(gè)用戶的權(quán)限下面的示例列出當(dāng)前數(shù)據(jù)庫(kù)中用戶 Judy 所擁有的所有權(quán)限。 EXEC sp_helprotect NULL, 'Judy' C. 列出由某個(gè)特定的用戶授予的權(quán)限下面的示例列出了當(dāng)前數(shù)據(jù)庫(kù)中由用戶 Judy 授予的所有權(quán)限,使用 NULL 作為缺少的參數(shù)的占位符。 EXEC sp_helprotect NULL, NULL, 'Judy' D. 僅列出語(yǔ)句權(quán)限下面的示例列出當(dāng)前數(shù)據(jù)庫(kù)中所有的語(yǔ)句權(quán)限,使用 NULL 作為缺少的參數(shù)的占位符。 EXEC sp_helprotect NULL, NULL, NULL, 's' |
|
來(lái)自: 呂居居 > 《電腦網(wǎng)絡(luò)》