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

当前数据库中创建新的数据库角色注意事项

角色是数据库级别的安全对象。 在创建角色后,可以使用 grant、deny 和revoke来配置角色的数据库级权限。 若要向数据库角色添加成员,请使用alter role(Transact-SQL)。 

在 sys.database_role_members 和 sys.database_principals 目录视图中可以查看数据库角色。

有关设计权限系统的信息,请参阅 Getting Started with Database Engine Permissions。

要求对数据库具有create role权限或者在 db_securityadmin固定数据库角色中具有成员身份。 

使用authorization选项时,还需要具有下列权限:

  • 若要将角色的所有权分配给另一个用户,则需要对该用户具有impersonate权限。

  • 若要将角色的所有权分配给另一个角色,则需要具有被分配角色的成员身份或对该角色具有alter权限。

  • 若要将角色的所有权分配给应用程序角色,则需要对该应用程序角色具有alter权限。

使用SSMS数据库管理工具在当前数据库中创建新的数据库角色

1、登陆服务器-》在对象资源管理器选择数据库-》展开数据库-》展开安全性-》展开数据库角色-》右键点击数据库角色-》点击新建数据库角色。

2、在数据库角色-新建弹出框-》输入角色名称-》点击角色拥有者。

3、在选择数据库用户或角色弹出框-》修改对象类型或者不修改-》点击浏览。

4、在查找对象-》选择匹配的对象-》点击确定。

5、在选择数据库用户或角色弹出框-》点击确定。

6、在数据角色-新建-》选择此角色拥有的架构,可多选。

7、在数据角色-新建-》选择此角色的成员-》点击添加。

8、在选择数据库用户或角色弹出框-》更改对象类型,可使用系统默认-》点击浏览选择对象名称。

9、在查找对象弹出框-》选增匹配的对象,可多选-》选择完成以后点击确定。

10、在选择数据库用户或角色弹出框-》点击确定。

11、在数据库角色-新建-》点击安全对象,选择安全对象并且赋予权限。

12、在数据库角色-新建弹出框-》点击搜索选择安全对象。

13、在添加对象弹出框-》选择对象(本示例演示特定数据库对象)-》点击确定。

14、在选择对象弹出框-》首先选择对象。

15、在选择对象类型-》选择对象(本示例演示数据库级别的对象)-》点击确定。

16、在选择对象弹出框-》选择浏览。

17、在查找对象弹出框-》选择数据库对象-》点击确定。

18、在选择对象弹出框-》点击确定。

19、在数据库角色-新建-》选择新建角色拥有数据库权限。

20、在新建角色-新建弹窗框-》点击扩展属性-》输入新建角色名称和值-》点击确定。

21、查看创建结果。

使用T-SQL脚本创建新的数据库角色

语法:

  1. --声明数据库引用
  2. use 数据库名;
  3. go
  4. --创建用新的数据库角色之前判断角色是否已存在,如果已存在则删除。
  5. if exists(select * from sys.database_principals where name=role_name)
  6. --此角色的成员删除成员
  7. use 数据库名
  8. go
  9. alter role role_name drop member owner_name
  10. go
  11. --删除角色注释
  12. use 数据库名
  13. go
  14. exec sys.sp_dropextendedproperty @name=扩展属性名称,@level0type=N'user',@level0name=role_name
  15. go
  16. --删除此角色
  17. drop role role_name;
  18. go
  19. --当前数据库中创建新的数据库角色
  20. create role role_name
  21. --角色拥有者
  22. authorization owner_name;

语法解析:

--role_name
--待创建角色的名称。
--authorization owner_name
--将拥有新角色的数据库用户或角色。如果未指定用户,则执行create role的用户将拥有该角色。

示例:

  1. --声明数据库引用
  2. use [testss];
  3. go
  4. --创建用新的数据库角色之前判断角色是否已存在,如果已存在则删除。
  5. if exists(select * from sys.database_principals where name='testrole')
  6. --此角色的成员删除成员
  7. use [testss]
  8. go
  9. alter role [testrole] drop member [guest]
  10. go
  11. --删除角色注释
  12. use [testss]
  13. go
  14. exec sys.sp_dropextendedproperty @name=N'roledescript',@level0type=N'user',@level0name=N'testrole'
  15. go
  16. --删除此角色
  17. drop role testrole;
  18. go
  19. --当前数据库中创建新的数据库角色
  20. create role testrole
  21. --角色拥有者
  22. authorization dbo;
  23. --role_name
  24. --待创建角色的名称。
  25. --authorization owner_name
  26. --将拥有新角色的数据库用户或角色。如果未指定用户,则执行create role的用户将拥有该角色。
  27. --创建此角色拥有的架构
  28. use [testss]
  29. go
  30. alter authorization on schema::[db_accessadmin] to testrole;
  31. go
  32. use [testss]
  33. go
  34. alter authorization on schema::[db_accessadmin] to [db_accessadmin]
  35. go
  36. ----此角色的成员
  37. ----添加成员
  38. --use [testss]
  39. --go
  40. --alter role testrole add member [guest];
  41. --go
  42. --此角色的安全对象
  43. use [testss]
  44. go
  45. grant backup log to testrole with grant option;
  46. go
  47. --添加此角色注释
  48. use [testss]
  49. go
  50. exec sys.sp_addextendedproperty @name=N'roledescript', @value=N'新建测试角色' , @level0type=N'user',@level0name=N'testrole';
  51. go

示例结果:

 

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

本站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号