SQLServer之當前數據庫中建立新的數據庫角色

當前數據庫中建立新的數據庫角色注意事項

角色是數據庫級別的安全對象。 在建立角色後,可使用 grant、deny 和revoke來配置角色的數據庫級權限。 若要向數據庫角色添加成員,請使用alter role(Transact-SQL)。 數據庫

在 sys.database_role_members 和 sys.database_principals 目錄視圖中能夠查看數據庫角色。安全

有關設計權限系統的信息,請參閱 Getting Started with Database Engine Permissions。服務器

要求對數據庫具備create role權限或者在 db_securityadmin固定數據庫角色中具備成員身份。 架構

使用authorization選項時,還須要具備下列權限:工具

若要將角色的全部權分配給另外一個用戶,則須要對該用戶具備impersonate權限。測試

若要將角色的全部權分配給另外一個角色,則須要具備被分配角色的成員身份或對該角色具備alter權限。spa

若要將角色的全部權分配給應用程序角色,則須要對該應用程序角色具備alter權限。設計

使用SSMS數據庫管理工具在當前數據庫中建立新的數據庫角色

一、登錄服務器-》在對象資源管理器選擇數據庫-》展開數據庫-》展開安全性-》展開數據庫角色-》右鍵點擊數據庫角色-》點擊新建數據庫角色。code

clipboard.png

二、在數據庫角色-新建彈出框-》輸入角色名稱-》點擊角色擁有者。對象

clipboard.png

三、在選擇數據庫用戶或角色彈出框-》修改對象類型或者不修改-》點擊瀏覽。

clipboard.png

四、在查找對象-》選擇匹配的對象-》點擊肯定。

clipboard.png

五、在選擇數據庫用戶或角色彈出框-》點擊肯定。

clipboard.png

六、在數據角色-新建-》選擇此角色擁有的架構,可多選。

clipboard.png

七、在數據角色-新建-》選擇此角色的成員-》點擊添加。

clipboard.png

八、在選擇數據庫用戶或角色彈出框-》更改對象類型,可以使用系統默認-》點擊瀏覽選擇對象名稱。

clipboard.png

九、在查找對象彈出框-》選增匹配的對象,可多選-》選擇完成之後點擊肯定。

clipboard.png

十、在選擇數據庫用戶或角色彈出框-》點擊肯定。

clipboard.png

十一、在數據庫角色-新建-》點擊安全對象,選擇安全對象而且賦予權限。

clipboard.png

十二、在數據庫角色-新建彈出框-》點擊搜索選擇安全對象。

clipboard.png

1三、在添加對象彈出框-》選擇對象(本示例演示特定數據庫對象)-》點擊肯定。

clipboard.png

1四、在選擇對象彈出框-》首先選擇對象。

clipboard.png

1五、在選擇對象類型-》選擇對象(本示例演示數據庫級別的對象)-》點擊肯定。

clipboard.png

1六、在選擇對象彈出框-》選擇瀏覽。

clipboard.png

1七、在查找對象彈出框-》選擇數據庫對象-》點擊肯定。

clipboard.png

1八、在選擇對象彈出框-》點擊肯定。

clipboard.png

1九、在數據庫角色-新建-》選擇新建角色擁有數據庫權限。

clipboard.png

20、在新建角色-新建彈窗框-》點擊擴展屬性-》輸入新建角色名稱和值-》點擊肯定。

clipboard.png

2一、查看建立結果。

clipboard.png

使用T-SQL腳本建立新的數據庫角色

語法:

--聲明數據庫引用
use 數據庫名;
go
 
--建立用新的數據庫角色以前判斷角色是否已存在,若是已存在則刪除。
if exists(select * from sys.database_principals where name=role_name)
--此角色的成員刪除成員
use 數據庫名
go
alter role role_name drop member owner_name
go
 
--刪除角色註釋
use 數據庫名
go
exec sys.sp_dropextendedproperty @name=擴展屬性名稱,@level0type=N'user',@level0name=role_name
go
 
--刪除此角色
drop role role_name; 
go
 
--當前數據庫中建立新的數據庫角色
create role role_name
--角色擁有者
authorization owner_name;

語法解析:

--role_name
--待建立角色的名稱。
--authorization owner_name
--將擁有新角色的數據庫用戶或角色。若是未指定用戶,則執行create role的用戶將擁有該角色。

示例:

--聲明數據庫引用
use [testss];
go
 
--建立用新的數據庫角色以前判斷角色是否已存在,若是已存在則刪除。
if exists(select * from sys.database_principals where name='testrole')
--此角色的成員刪除成員
use [testss]
go
alter role [testrole] drop member [guest]
go
 
--刪除角色註釋
use [testss]
go
exec sys.sp_dropextendedproperty @name=N'roledescript',@level0type=N'user',@level0name=N'testrole'
go
 
--刪除此角色
drop role testrole; 
go
 
--當前數據庫中建立新的數據庫角色
create role testrole 
--角色擁有者
authorization dbo;
 
--role_name
--待建立角色的名稱。
--authorization owner_name
--將擁有新角色的數據庫用戶或角色。若是未指定用戶,則執行create role的用戶將擁有該角色。
 
--建立此角色擁有的架構
use [testss]
go
alter authorization on schema::[db_accessadmin] to testrole;
go
use [testss]
go
alter authorization on schema::[db_accessadmin] to [db_accessadmin]
go
 
----此角色的成員
----添加成員
--use [testss]
--go
--alter role testrole add member [guest];
--go
 
--此角色的安全對象
use [testss]
go
grant backup log to testrole with grant option;
go
 
--添加此角色註釋
use [testss]
go
exec sys.sp_addextendedproperty @name=N'roledescript', @value=N'新建測試角色' , @level0type=N'user',@level0name=N'testrole';
go

示例結果:

clipboard.png

相關文章
相關標籤/搜索