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權限。

  • 若要將角色的所有權分配給應用程序角色,則需要對該應用程序角色具有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

示例結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM