由于我不想详细说明的原因,已经决定重命名我们的数据库角色.我知道没有简单的方法来重命名角色(不知道为什么),但我提出了这个解决方案:
create table #RoleAssignment (id int identity, RoleName varchar(256), UserName varchar(256))
insert into #RoleAssignment
select roles.name as RoleName, users.name as UserName
from sys.sysusers as roles
join sys.database_role_members as members
on members.role_principal_id = roles.uid
join sys.sysusers as users
on users.uid = members.member_principal_id
where roles.issqlrole = 1
and roles.name like 'OldRolePrefix_%'
declare @id int = null
declare @RoleName varchar(256)
declare @NewRoleName varchar(256)
declare @UserName varchar(256)
select top 1 @id = id, @RoleName = RoleName, @UserName = UserName,@NewRoleName = replace(RoleName,'OldRolePrefix_','NewRolePrefix_') from #RoleAssignment
while …Run Code Online (Sandbox Code Playgroud)