如何将具有用户,架构和角色的所有数据库从一台服务器移动/复制到另一台服务器

时间:2011-12-09 04:37:06

标签: sql sql-server database sql-server-2008

我需要将所有数据库(仅5个)从一台服务器移动/复制到另一台服务器。我知道如何进行备份和恢复,但我还需要移动我的数据库的所有信息,包括用户,架构等......

3 个答案:

答案 0 :(得分:3)

  1. 右键单击数据库
  2. 点击任务
  3. 点击生成脚本
  4. 完成向导并选择表格
  5. 在选项页面上,单击“高级”按钮(它就在那里,但不是很突出)
  6. 将“数据类型更改为脚本”选项
  7. 有脚本数据和登录的选项(很多其他东西)。它非常方便。

    这是一个脚本,它将生成一个脚本以添加所有数据库上的所有角色

    declare @selectStatement varchar(1000)
    
    set @selectStatement = 'Use ?;SELECT ''USE ?''; SELECT ' + '''EXECUTE sp_AddRoleMember ''''' + ''' + roles.name + '''''''+','''''+''' +  Replace(users.name,''DOMAINA'',''DOMAINB'') + ''' + '''''''
         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'
    
                                --where users.name like ''%%'''
    
                    EXEC sp_MSForEachDB @selectStatement;
    

答案 1 :(得分:1)

一般来说,复制数据库有两种可能性:

1 BACKUP-RESTORE 在这种情况下,您将获得一些主要的问题After you move databases to a new server, users may not be able to log in to the new server.此处提供了此问题的解决方案:

How to transfer logins and passwords between instances of SQL Server

2 DETACH-COPY-ATTACH它只是将数据库文件复制(或移动)到另一台服务器。

关于每种方法的优缺点,您可以在这里阅读SQL Server backup/restore v.s. detach/attach

答案 2 :(得分:1)

我建议使用Red Gate的SQL Compare来执行此任务。我花了一点钱,但每一分钱都值得。请注意,SQL Compare不会迁移物理数据库,只迁移数据库的内容。