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