1. 程式人生 > >SQLServer更改用戶定義的數據庫角色

SQLServer更改用戶定義的數據庫角色

ssa 選擇 數據庫角色 右鍵 alter 分享 擴展 serve evo

更改用戶定義的數據庫角色註意事項

需具有以下一項或多項權限或成員身份才能運行此命令:

  • 對角色具有 ALTER 權限
  • 對數據庫具有 ALTER ANY ROLE 權限
  • 具有 db_securityadmin 固定數據庫角色的成員身份

此外,若要更改固定數據庫角色中的成員身份還需要:

  • 具有 db_owner 固定數據庫角色的成員身份

不能更改固定數據庫角色的名稱。

使用SSMS數據庫管理工具更改用戶定義的數據庫角色

1、連接數據庫-》選擇數據庫-》展開安全性-》展開角色-》展開數據庫角色-》選擇要修改的數據庫角色-》右鍵點擊-》選擇屬性。

技術分享圖片

2、在數據庫角色屬性彈出框-》點擊常規-》修改角色所有者-》修改角色擁有的架構(

數據庫架構,類似於數據庫對象的命名空間,用戶通過架構訪問數據庫對象,數據庫角色可以添加,可以定制不同權限,可以擁有一個或者多個數據庫架構)-》修改角色成員(角色指定向數據庫角色的成員身份添加數據庫主體)。

技術分享圖片

3、在數據庫角色屬性彈出框-》點擊安全對象-》修改數據庫角色名稱-》修改數據庫角色安全對象-》修改數據庫角色安全對象權限(當使用角色執行數據庫操作、對象和資源時,通過安全對象和權限設置來定義和解決這個問題)。

技術分享圖片

4、在數據庫角色屬性彈出框-》點擊擴展屬性-》修改數據庫角色註釋(對角色進行註釋解說)-》點擊確定,修改完成。

技術分享圖片

使用T-SQL腳本更改用戶定義的數據庫角色

語法

--聲明數據庫引用
use database_name;
go
--修改數據庫中創建新的數據庫角色名稱
alter role role_name with name=new_role_name;
go

--修改此角色擁有的架構  
--添加時執行下列語法
use database_name
go
alter authorization on schema::架構名稱 to role_name;
go
--刪除或者時把架構擁有者改為架構本身即,註意不要刪除架構
use database_name
go
alter authorization on schema::架構名稱 to 架構名稱;
go

----此角色的成員
--添加成員
use database_name
go
alter role role_name add member database_principal;
go
----刪除成員
use database_name
go
alter role role_name drop member database_principal;
go

----此角色的安全對象
----授予權限
use database_name
go
----授予備份日誌的權限
grant 權限名稱 to role_name;
go
----授予並允許轉授備份日誌的權限
grant 權限名稱 to role_name with grant option;
go
----回收授予並允許轉轉授備份數據庫的權限
revoke grant option for 權限名稱 to role_name  cascade as 所有者;
go
----拒絕不安全的程序集
deny 權限名稱 to role_name cascade;
go

--修改此角色註釋
use database_name
go
exec sys.sp_updateextendedproperty @name=擴展屬性名稱, @value=擴展屬性值 , @level0type=N‘user‘,@level0name=role_name ;
go

語法註釋

--database_name
--數據庫名稱

--role_name
--適用範圍:SQL Server(從 2008 版開始)和 Azure SQL Database
--指定要更改的數據庫角色。
--with name=new_role_name

--適用範圍:SQL Server(從 2008 版開始)和 Azure SQL Database
--指定更改用戶定義的數據庫角色的名稱。 數據庫中必須尚未包含新名稱。
--更改數據庫角色的名稱不會更改角色的 ID 號、所有者或權限。

--add member database_principal
--適用範圍:SQL Server(從 2012 版開始)和Azure SQL Database


--指定向數據庫角色的成員身份添加數據庫主體。
--database_principal 是數據庫用戶或用戶定義的數據庫角色。
--database_principal 不能是固定的數據庫角色或是服務器主體。

--drop member database_principal
--適用範圍:SQL Server(從 2012 版開始)和Azure SQL Database
--指定從數據庫角色的成員身份刪除數據庫主體。
--database_principal 是數據庫用戶或用戶定義的數據庫角色。
--database_principal 不能是固定的數據庫角色或是服務器主體。

示例

--修改此角色擁有的架構  
--添加時執行下列語法
--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

/**********
語法
添加角色成員
alter role role_name add member database_principal
--add member database_principal
--適用範圍:SQL Server(從 2012 版開始)和Azure SQL Database
--指定向數據庫角色的成員身份添加數據庫主體。
--database_principal 是數據庫用戶或用戶定義的數據庫角色。
--database_principal 不能是固定的數據庫角色或是服務器主體。

刪除角色成員
alter role role_name drop member database_principal
--drop member database_principal
--適用範圍:SQL Server(從 2012 版開始)和Azure SQL Database
--指定從數據庫角色的成員身份刪除數據庫主體。
--database_principal 是數據庫用戶或用戶定義的數據庫角色。
--database_principal 不能是固定的數據庫角色或是服務器主體。
***********/
----此角色的成員
--添加成員
--use [testss]
--go
--alter role testrole add member [guest];
--go
----刪除成員
use [testss]
go
alter role [testrole] drop member [guest];
go

----此角色的安全對象
----授予權限
--use [testss]
--go
----授予備份日誌的權限
--grant backup log to [testrole];
--go
----授予並允許轉授備份日誌的權限
--grant backup log to [testrole] with grant option;
--go
----回收授予並允許轉轉授備份數據庫的權限
--revoke grant option for backup log to [testrole] cascade as [dbo];
--go
----拒絕不安全的程序集
--deny backup log to [testrole] cascade;
--go


--修改此角色註釋
use [testss]
go
exec sys.sp_updateextendedproperty @name=N‘roledescript‘, @value=N‘修改測試角色‘ , @level0type=N‘user‘,@level0name=N‘testrole‘;
go

/**********
語法
alter role role_name with name=new_name;
--role_name
--適用範圍:SQL Server(從 2008 版開始)和 Azure SQL Database
--指定要更改的數據庫角色。
--with name=new_name
--適用範圍:SQL Server(從 2008 版開始)和 Azure SQL Database
--指定更改用戶定義的數據庫角色的名稱。 數據庫中必須尚未包含新名稱。
--更改數據庫角色的名稱不會更改角色的 ID 號、所有者或權限。
**********/
--聲明數據庫引用
use [testss];
go
--修改數據庫中創建新的數據庫角色名稱
alter role testrole with name=alterrole;
go

示例結果:註意T-SQL腳本執行完成之後需要刷信查看執行結果!

技術分享圖片

SQLServer更改用戶定義的數據庫角色