使用SQL語句擷取SQL Server資料庫登入使用者權限

來源:互聯網
上載者:User
 

返回一個報表,報表中包含當前資料庫中某對象的使用者權限或語句許可權的資訊。

文法

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 DATABASE

 

CREATE DEFAULT

 

CREATE FUNCTION

 

CREATE PROCEDURE

 

CREATE RULE

 

CREATE TABLE

 

CREATE VIEW

 

BACKUP DATABASE

 

BACKUP LOG

 

[@username =] 'security_account'

是返回其許可權的安全帳戶名稱。security_account 的資料類型為 sysname,預設值為 NULL,這個預設值將返回當前資料庫中所有的安全帳戶。security_account 必須是當前資料庫中的有效安全帳戶。當指定 Microsoft Windows NT 使用者時,請指定該 Windows NT 使用者在資料庫中可被識別的名稱(用 sp_grantdbaccess 添加)。

[@grantorname =] 'grantor'

是已授權的安全帳戶的名稱。grantor 的資料類型為 sysname,預設值為 NULL,這個預設值將返回資料庫中任何安全帳戶所授許可權的所有資訊。當指定 Windows NT 使用者時,請指定該 Windows NT 使用者在資料庫中可被識別的名稱(用 sp_grantdbaccess 添加)。

[@permissionarea =] 'type'

是一個字串,表示是顯示對象許可權(字串 o)、語句許可權(字串 s)還是兩者都顯示 (o s)。type 的資料類型為 varchar(10),預設值為 o s。type 可以是 o 和 s 的任意組合,在 o 和 s 之間可以有也可以沒有逗號或空格。

傳回碼值

0(成功)或 1(失敗)

結果集

列名

資料類型

描述

Owner

sysname

對象所有者的名稱。

Object

sysname

對象的名稱。

Grantee

sysname

被授予許可權的使用者的名稱。

Grantor

sysname

向指定的被授許可權使用者進行授權的使用者的名稱。

ProtectType

char(10)

保護類型的名稱: GRANT
REVOKE

 

Action

varchar(20)

許可權的名稱: 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

許可權的類型: All = 許可權適用於對象所有的當前列。
New = 許可權適用於任何以後可以在對象上進行修改(使用 ALTER 語句)的新列。
All+New = All 和 New 的組合。

 

注釋

該過程的所有參數都是可選的。如果不帶參數執行 sp_helprotect,將顯示當前資料庫中所有已經授予或拒絕的許可權。

如果指定了一部分參數,而不是指定全部參數,請使用具名引數來標識特定的參數,或者使用 NULL 作為預留位置。例如,若要報告授予方 dbo 的所有許可權,請執行:

EXEC sp_helprotect NULL, NULL, dbo

EXEC sp_helprotect @grantorname = 'dbo'

輸出報表按許可權分類、所有者、對象、被授予方、授予方、保護類型分類、保護類型、動作以及列連續 ID 進行排序。

許可權

執行許可權預設授予 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'

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.