gpt4 book ai didi

sql-server - "Renaming"一个数据库角色

转载 作者:行者123 更新时间:2023-12-02 06:55:13 25 4
gpt4 key购买 nike

由于我不想详细说明的原因,已决定重命名我们的数据库角色。
我知道没有简单的方法可以重命名角色(不知道为什么),
但我想出了这个解决方案:

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 (@id is not null)
begin
execute sp_executesql N'sp_droprolemember @InSPRoleName, @InSPUserName',N'@InSPRoleName varchar(256), @InSPUserName varchar(256)', @InSPRoleName = @RoleName, @InSPUserName = @UserName
execute sp_executesql N'sp_addrolemember @InSPRoleName, @InSPUserName',N'@InSPRoleName varchar(256), @InSPUserName varchar(256)', @InSPRoleName = @NewRoleName, @InSPUserName = @UserName
delete from #RoleAssignment where id = @id
set @id = null
select top 1 @id = id, @RoleName = RoleName, @UserName = UserName from #RoleAssignment
end

在此之后,运行设置角色权限的脚本。

我对此进行了测试,总体而言它有效。
但即使在重新设计和测试之后,我也不确定:
我忘记了什么吗?

非常感谢您的任何想法/见解

最佳答案

您没有指定您正在使用的 SQL Server 版本,但在 SQL Server 2008 及更高版本中,您可以使用 ALTER ROLE 重命名角色。 :

ALTER ROLE OldRoleName WITH NAME = NewRoleName;

关于sql-server - "Renaming"一个数据库角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com