博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLServer更改用户定义的数据库角色
阅读量:5061 次
发布时间:2019-06-12

本文共 3854 字,大约阅读时间需要 12 分钟。

更改用户定义的数据库角色注意事项

需具有以下一项或多项权限或成员身份才能运行此命令:

  • 对角色具有 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_namegoalter authorization on schema::架构名称 to role_name;go--删除或者时把架构拥有者改为架构本身即,注意不要删除架构use database_namegoalter authorization on schema::架构名称 to 架构名称;go----此角色的成员--添加成员use database_namegoalter role role_name add member database_principal;go----删除成员use database_namegoalter role role_name drop member database_principal;go----此角色的安全对象----授予权限use database_namego----授予备份日志的权限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_namegoexec 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]goalter 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]goalter 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]goexec 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

你可能感兴趣的文章
2011年12月09日
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
合并单元格
查看>>
swift-初探webView与JS交互
查看>>
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>
adb logcat 命令行用法
查看>>
Redis学习手册(Key操作命令)
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
泛型第23条:请不要在新代码中使用原生态类型
查看>>
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>