創建用戶定義的數據庫角色注意事項
角色是數據庫級別的安全對象。 在創建角色后,可以使用 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權限。
-
若要將角色的所有權分配給應用程序角色,則需要對該應用程序角色具有alter權限。
使用SSMS數據庫管理工具創建用戶定義的數據庫角色
1、登陸服務器-》在對象資源管理器選擇數據庫-》展開數據庫-》展開安全性-》展開數據庫角色-》右鍵點擊數據庫角色-》點擊新建數據庫角色。
2、在數據庫角色-新建彈出框-》輸入角色名稱-》點擊角色擁有者。
3、在選擇數據庫用戶或角色彈出框-》修改對象類型或者不修改-》點擊瀏覽。
4、在查找對象-》選擇匹配的對象-》點擊確定。
5、在選擇數據庫用戶或角色彈出框-》點擊確定。
6、在數據角色-新建-》選擇此角色擁有的架構,可多選。
7、在數據角色-新建-》選擇此角色的成員-》點擊添加。
8、在選擇數據庫用戶或角色彈出框-》更改對象類型,可使用系統默認-》點擊瀏覽選擇對象名稱。
9、在查找對象彈出框-》選增匹配的對象,可多選-》選擇完成以后點擊確定。
10、在選擇數據庫用戶或角色彈出框-》點擊確定。
11、在數據庫角色-新建-》點擊安全對象,選擇安全對象並且賦予權限。
12、在數據庫角色-新建彈出框-》點擊搜索選擇安全對象。
13、在添加對象彈出框-》選擇對象(本示例演示特定數據庫對象)-》點擊確定。
14、在選擇對象彈出框-》首先選擇對象。
15、在選擇對象類型-》選擇對象(本示例演示數據庫級別的對象)-》點擊確定。
16、在選擇對象彈出框-》選擇瀏覽。
17、在查找對象彈出框-》選擇數據庫對象-》點擊確定。
18、在選擇對象彈出框-》點擊確定。
19、在數據庫角色-新建-》選擇新建角色擁有數據庫權限。
20、在新建角色-新建彈窗框-》點擊擴展屬性-》輸入新建角色名稱和值-》點擊確定。
21、查看創建結果。
使用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
示例結果: