【问题标题】:How to move/copy all databases with users, schema and roles from one server to another如何将具有用户、模式和角色的所有数据库从一台服务器移动/复制到另一台服务器
【发布时间】:2011-12-09 04:37:06
【问题描述】:

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

【问题讨论】:

  • 您运行的是什么版本的 SQL Server?

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


【解决方案1】:
  1. 右键单击数据库
  2. 点击任务
  3. 点击生成脚本
  4. 通过向导并选择您的表
  5. 在选项页面上单击“高级”按钮(它在那里,只是不太突出)
  6. 更改“脚本的数据类型”选项

有脚本数据和登录的选项(大量其他内容)。非常方便。

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

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;

【讨论】:

  • 但此选项不会添加与数据库无关的新创建登录。
  • 您是否选择了脚本登录选项。您是在谈论安全级别登录吗?我也有一个脚本来生成它。
  • 是的,我说的是安全级别登录
  • 将上述脚本中的每个? 括起来(即[?]),以支持包含点等内容的数据库名称。
【解决方案2】:

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

1 备份-恢复 在这种情况下,您将遇到一些问题,主要是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

【讨论】:

  • 移动登录似乎很复杂
【解决方案3】:

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

【讨论】:

  • and... 具有相同条件的 postgres 的解决方案(移动数据库、角色、模式、usres 等。(全部!))也许 pg_dumpall ?但是如何没有文件,直接从服务器A到服务器B。有可能吗?
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多