乐趣区

SQLServer更改用户定义的数据库角色

更改用户定义的数据库角色注意事项
需具有以下一项或多项权限或成员身份才能运行此命令:
对角色具有 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 脚本执行完成之后需要刷信查看执行结果!

退出移动版