zoukankan      html  css  js  c++  java
  • 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脚本执行完成之后需要刷信查看执行结果!

  • 相关阅读:
    PHP date 格式化一个本地时间/日期
    Unix时间戳(Unix timestamp)转换工具
    Ubuntu下搭建NodeJS+Express WEB开发框架
    高手指南PHP安装配置
    thinkphp系统常量与自定义常量
    UDP 构建p2p打洞过程的实现原理(持续更新)
    iOS标准时间与时间戳相互转换
    java 时间戳和PHP时间戳 的转换
    Windows与Linux/Mac系统时间不一致的解决方法
    推荐25款php中非常有用的类库
  • 原文地址:https://www.cnblogs.com/vuenote/p/10211401.html
Copyright © 2011-2022 走看看