更改用戶定義的資料庫角色註意事項 需具有以下一項或多項許可權或成員身份才能運行此命令: 對角色具有 ALTER 許可權 對資料庫具有 ALTER ANY ROLE 許可權 具有 db_securityadmin 固定資料庫角色的成員身份 此外,若要更改固定資料庫角色中的成員身份還需要: 具有 db_own ...
更改用戶定義的資料庫角色註意事項
需具有以下一項或多項許可權或成員身份才能運行此命令:
- 對角色具有 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腳本執行完成之後需要刷信查看執行結果!