我有一个数据库,其中有很多用户.这些用户属于DB中不同的内置角色(例如db_ddladmin).
我想生成一个脚本,创建具有相同角色分配的相同用户,以在不同的数据库中使用. sql Management Studio似乎只生成用户定义角色的sp_addrolemember调用,而不是生成内置的角色.有什么办法让脚本成为所有角色吗?
解决方法
有关数据库用户的信息及其分配的角色在系统视图中可用
sys. database_principals和sys.database_role_members.使用以下查询查看此数据:
sys. database_principals和sys.database_role_members.使用以下查询查看此数据:
select * from sys.database_principals select * from sys.database_role_members
我假设您在数据库A中配置了数据库用户和角色,并希望将其复制到数据库B.要创建目标数据库中的用户:
>在数据库A中运行以下查询
>剪切,粘贴,评估,并在数据库B中运行生成的脚本
.
SELECT 'CREATE USER [' + name + '] for login [' + name + ']' from sys.database_principals where Type = 'U' and name <> 'dbo'
要在B中配置与A中具有相同角色的新用户:
>在数据库A中运行以下查询
>剪切,并在数据库B中运行生成的脚本
.
SELECT 'EXECUTE sp_addrolemember ''' + roles.name + ''',''' + users.name + '''' from sys.database_principals users inner join sys.database_role_members link on link.member_principal_id = users.principal_id inner join sys.database_principals roles on roles.principal_id = link.role_principal_id
总是查看这些脚本.可能有例外或特殊情况,您只是不想搞砸安全.
如果新数据库位于不同的sql Server实例上,则必须首先创建sql登录名.如果您有用户定义的角色,您将需要重新创建它们. (角色和分配给他们的权限是非常开放的,我不想要在需要这样做的情况下)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。