经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQLServer更改用户定义的数据库角色
来源:cnblogs  作者:小子pk了  时间:2019/1/4 9:20:25  对本文有异议

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

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

  • 对角色具有 ALTER 权限
  • 对数据库具有 ALTER ANY ROLE 权限
  • 具有 db_securityadmin 固定数据库角色的成员身份

此外,若要更改固定数据库角色中的成员身份还需要:

  • 具有 db_owner 固定数据库角色的成员身份

不能更改固定数据库角色的名称。

使用SSMS数据库管理工具更改用户定义的数据库角色

1、连接数据库-》选择数据库-》展开安全性-》展开角色-》展开数据库角色-》选择要修改的数据库角色-》右键点击-》选择属性。

2、在数据库角色属性弹出框-》点击常规-》修改角色所有者-》修改角色拥有的架构(数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象,数据库角色可以添加,可以定制不同权限,可以拥有一个或者多个数据库架构)-》修改角色成员(角色指定向数据库角色的成员身份添加数据库主体)。

3、在数据库角色属性弹出框-》点击安全对象-》修改数据库角色名称-》修改数据库角色安全对象-》修改数据库角色安全对象权限(当使用角色执行数据库操作、对象和资源时,通过安全对象和权限设置来定义和解决这个问题)。

4、在数据库角色属性弹出框-》点击扩展属性-》修改数据库角色注释(对角色进行注释解说)-》点击确定,修改完成。

使用T-SQL脚本更改用户定义的数据库角色

语法

  1. --声明数据库引用
  2. use database_name;
  3. go
  4. --修改数据库中创建新的数据库角色名称
  5. alter role role_name with name=new_role_name;
  6. go
  7. --修改此角色拥有的架构
  8. --添加时执行下列语法
  9. use database_name
  10. go
  11. alter authorization on schema::架构名称 to role_name;
  12. go
  13. --删除或者时把架构拥有者改为架构本身即,注意不要删除架构
  14. use database_name
  15. go
  16. alter authorization on schema::架构名称 to 架构名称;
  17. go
  18. ----此角色的成员
  19. --添加成员
  20. use database_name
  21. go
  22. alter role role_name add member database_principal;
  23. go
  24. ----删除成员
  25. use database_name
  26. go
  27. alter role role_name drop member database_principal;
  28. go
  29. ----此角色的安全对象
  30. ----授予权限
  31. use database_name
  32. go
  33. ----授予备份日志的权限
  34. grant 权限名称 to role_name;
  35. go
  36. ----授予并允许转授备份日志的权限
  37. grant 权限名称 to role_name with grant option;
  38. go
  39. ----回收授予并允许转转授备份数据库的权限
  40. revoke grant option for 权限名称 to role_name cascade as 所有者;
  41. go
  42. ----拒绝不安全的程序集
  43. deny 权限名称 to role_name cascade;
  44. go
  45. --修改此角色注释
  46. use database_name
  47. go
  48. exec sys.sp_updateextendedproperty @name=扩展属性名称, @value=扩展属性值 , @level0type=N'user',@level0name=role_name ;
  49. 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 不能是固定的数据库角色或是服务器主体。

示例

  1. --修改此角色拥有的架构
  2. --添加时执行下列语法
  3. --use [testss]
  4. --go
  5. --alter authorization on schema::[db_accessadmin] to testrole;
  6. --go
  7. --删除或者时把架构拥有者改为架构本身即,注意不要删除架构
  8. use [testss]
  9. go
  10. alter authorization on schema::[db_accessadmin] to [db_accessadmin]
  11. go
  12. /**********
  13. 语法
  14. 添加角色成员
  15. alter role role_name add member database_principal
  16. --add member database_principal
  17. --适用范围:SQL Server(从 2012 版开始)和Azure SQL Database
  18. --指定向数据库角色的成员身份添加数据库主体。
  19. --database_principal 是数据库用户或用户定义的数据库角色。
  20. --database_principal 不能是固定的数据库角色或是服务器主体。
  21. 删除角色成员
  22. alter role role_name drop member database_principal
  23. --drop member database_principal
  24. --适用范围:SQL Server(从 2012 版开始)和Azure SQL Database
  25. --指定从数据库角色的成员身份删除数据库主体。
  26. --database_principal 是数据库用户或用户定义的数据库角色。
  27. --database_principal 不能是固定的数据库角色或是服务器主体。
  28. ***********/
  29. ----此角色的成员
  30. --添加成员
  31. --use [testss]
  32. --go
  33. --alter role testrole add member [guest];
  34. --go
  35. ----删除成员
  36. use [testss]
  37. go
  38. alter role [testrole] drop member [guest];
  39. go
  40. ----此角色的安全对象
  41. ----授予权限
  42. --use [testss]
  43. --go
  44. ----授予备份日志的权限
  45. --grant backup log to [testrole];
  46. --go
  47. ----授予并允许转授备份日志的权限
  48. --grant backup log to [testrole] with grant option;
  49. --go
  50. ----回收授予并允许转转授备份数据库的权限
  51. --revoke grant option for backup log to [testrole] cascade as [dbo];
  52. --go
  53. ----拒绝不安全的程序集
  54. --deny backup log to [testrole] cascade;
  55. --go
  56. --修改此角色注释
  57. use [testss]
  58. go
  59. exec sys.sp_updateextendedproperty @name=N'roledescript', @value=N'修改测试角色' , @level0type=N'user',@level0name=N'testrole';
  60. go
  61. /**********
  62. 语法
  63. alter role role_name with name=new_name;
  64. --role_name
  65. --适用范围:SQL Server(从 2008 版开始)和 Azure SQL Database
  66. --指定要更改的数据库角色。
  67. --with name=new_name
  68. --适用范围:SQL Server(从 2008 版开始)和 Azure SQL Database
  69. --指定更改用户定义的数据库角色的名称。 数据库中必须尚未包含新名称。
  70. --更改数据库角色的名称不会更改角色的 ID 号、所有者或权限。
  71. **********/
  72. --声明数据库引用
  73. use [testss];
  74. go
  75. --修改数据库中创建新的数据库角色名称
  76. alter role testrole with name=alterrole;
  77. go

示例结果:注意T-SQL脚本执行完成之后需要刷信查看执行结果!

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号