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脚本执行完成之后需要刷信查看执行结果!

原文地址:https://www.cnblogs.com/vuenote/p/10211401.html

时间: 2024-11-12 16:53:20

SQLServer更改用户定义的数据库角色的相关文章

6.5 数据库角色

6.5 数据库角色 6.5.1 数据库角色 为了便于管理数据库中的权限,可以在数据库范围内设置数据库角色. 6.5.2 固定数据库角色 SQL Server 预定义了以下数据库角色. 数据库角色 说明 db_accessadmin 成员可以为 Windows 登录名.Windows 组和 SQL Server 登录名添加或删除数据库访问权限. db_backupoperator 成员可以备份数据库. db_datareader 成员可以从所有用户表中读取所有数据. db_datawriter 成

sqlserver 创建用户 sp_addlogin

创建新的 Microsoft® SQL Server™ 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server 实例.  语法: sp_addlogin [ @loginame = ] 'login'     [ , [ @passwd = ] 'password' ]    [ , [ @defdb = ] 'database' ]     [ , [ @deflanguage = ] 'language' ]     [ , [ @sid = ] sid ]    

SQLServer 报错:用户、组或角色'XXX' 在当前数据库中已存在. 错误:15023解决方法

背景: 最近在迁移SQLServer数据库2008时,新建用户后,做用户映射时. SQLServer 报错:用户.组或角色'XXX' 在当前数据库中已存在. 错误:15023. 下面讲一下解决的方法. 分析:    将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户.    这种情况被称为存在"孤立用户".此时是不能通过新建登录或者是对同名登录授予对应数据库的"用户"权限来解决登录问题,    因为SQ

Sqlserver用户、组或角色在当前数据库中已存在

今天在给数据库账号分配数据库权限的时候,直接抛出抛出错误,错误的详细信息如下:用户.组或角色 '' 在当前数据库中已存在. (Microsoft SQL Server,错误: 15023).查阅相关文档后发现,抛出这种错误,可能是因为数据库中存在孤立用户. 将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户.这种情况被称为存在"孤立用户".此时是不能通过新建登录或者是对同名登录授予对应数据库的"用户"权

SQLServer 服务器角色和数据库角色权限详解

SQLServer中服务器角色和数据库角色权限详解 转自:http://blog.csdn.net/e_online/article/details/4597957 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户.数据库角色的成员可以分为如下几类:Windows用户组或用户账户SQL Server登录其他角色SQL Server的安全体系结构中包括了

SQLServer中服务器角色和数据库角色权限详解

SQLServer中服务器角色和数据库角色权限详解 by e-online 26. 九月 2009 18:55 coming from http://blog.csdn.net/e_online/article/details/4597957 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角色的成员可以分为如下几类: Windows用户组或

SqlServer 服务器角色和数据库角色相关操作

/*------------------------------------------------------------------------------------ [服务器级别-服务器角色] ------------------------------------------------------------------------------------*/ -- 查看固定服务器角色(8个,不可增删,未包括public,每个用户都属于public服务器角色) EXEC sp_hel

SQLServer 维护脚本分享(04)服务器角色和数据库角色相关操作

/*------------------------------------------------------------------------------------ [服务器级别-服务器角色] ------------------------------------------------------------------------------------*/ -- 查看固定服务器角色(8个,不可增删,未包括public,每个用户都属于public服务器角色) EXEC sp_hel

SqlServer服务器和数据库角色

首先我们来阐述服务器(实例级别)的权限,实例级别和数据库级别权限的最大不同在于:实例级别的权限是直接授权给登录名,而数据库级别的全显示授予数据库用户的,然后数据库用户再与登录名匹配.(再SqlServer中,登录名和用户是两个概念,登录名用于登录到数据库实例,而用户位于数据库之内,用于和登录名匹配) 举例: --指定登录名为dbtester,并且创建test数据库中的用户tester1 execute sp_grantdbaccess ‘dbtester’,'tester1' 在服务器(实例)范