ric*_*fox 13 membership scripting sql-server-2005 role
我有一个包含大量用户的数据库.这些用户属于DB中不同的内置角色(例如db_ddladmin).
我想生成一个脚本,该脚本创建具有相同角色分配的相同用户以在不同的数据库中使用.SQL Management Studio似乎只为用户定义的角色生成sp_addrolemember调用,而不是内置角色.有没有办法让它编写脚本所有角色?
也许还有其他更好的工具可以从现有数据库生成数据库脚本(最好是,但不一定是免费的)?
Phi*_*ley 22
有关数据库用户及其分配角色的信息在系统视图sys.database_principals和sys.database_role_members中可用.使用以下查询查看此数据:
select * from sys.database_principals
select * from sys.database_role_members
Run Code Online (Sandbox Code Playgroud)
我假设你有数据库用户和角色在数据库中的配置,您希望他们复制到数据库B.要创建在目标数据库中的用户:
.
SELECT 'CREATE USER [' + name + '] for login [' + name + ']'
from sys.database_principals
where Type = 'U'
and name <> 'dbo'
Run Code Online (Sandbox Code Playgroud)
要使用与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
Run Code Online (Sandbox Code Playgroud)
始终查看这些脚本.可能存在异常或特殊情况,您只是不想破坏安全性.
如果新数据库位于不同的SQL Server实例上,则必须首先创建SQL登录.如果您有用户定义的角色,则需要先重新创建它们.(角色和分配给他们的权限是非常开放的,我不希望处于我需要这样做的情况!)
| 归档时间: |
|
| 查看次数: |
32512 次 |
| 最近记录: |