SQL Server 建立角色,用戶,權限

/*--示例說明
        示例在數據庫pubs中建立一個擁有表jobs的全部權限、擁有表titles的SELECT權限的角色r_test
    隨後建立了一個登陸l_test,而後在數據庫pubs中爲登陸l_test建立了用戶帳戶u_test
    同時將用戶帳戶u_test添加到角色r_test中,使其經過權限繼承獲取了與角色r_test同樣的權限
    最後使用DENY語句拒絕了用戶帳戶u_test對錶titles的SELECT權限。
    通過這樣的處理,使用l_test登陸SQL Server實例後,它只具備表jobs的全部權限。
--*/

USE pubs

--建立角色 r_test
EXEC sp_addrole 'r_test'

--授予 r_test 對 jobs 表的全部權限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 對 titles 表的 SELECT 權限
GRANT SELECT ON titles TO r_test

--添加登陸 l_test,設置密碼爲pwd,默認數據庫爲pubs
EXEC sp_addlogin 'l_test','pwd','pubs'

--爲登陸 l_test 在數據庫 pubs 中添加安全帳戶 u_test
EXEC sp_grantdbaccess 'l_test','u_test'

--添加 u_test 爲角色 r_test 的成員
EXEC sp_addrolemember 'r_test','u_test'

--拒絕安全帳戶 u_test 對 titles 表的 SELECT 權限
DENY SELECT ON titles TO u_test

/*--完成上述步驟後,用 l_test 登陸,能夠對jobs表進行全部操做,但沒法對titles表查詢,雖然角色 r_test 有titles表的select權限,但已經在安全帳戶中明確拒絕了對titles的select權限,因此l_test無titles表的select權限--*/

--從數據庫 pubs 中刪除安全帳戶
EXEC sp_revokedbaccess 'u_test'

--刪除登陸 l_test
EXEC sp_droplogin 'l_test'

--刪除角色 r_test
EXEC sp_droprole 'r_test'
相關文章
相關標籤/搜索