【问题标题】:Copy all databases with data from a server to another existing server?将所有包含数据的数据库从服务器复制到另一台现有服务器?
【发布时间】:2014-01-02 09:18:44
【问题描述】:

我有一个服务器说 TestServer1 有很多数据库。我想将所有数据库视图存储过程函数连同所有数据复制到另一台服务器上说TestServer2。我怎样才能快速、轻松、省力地做到这一点。

我能想到的是将每个数据库复制为脚本/复制 .mdf、.ldf 文件并将它们附加到新服务器。但它既费时又烦人。谁能帮我一个有效的方法?

供参考,我正在从 SQLSERVER 2005 复制到 SQLServer 2012

请告诉我,为什么你们认为这不是一个合适的问题。只是不要粗心地投票。

【问题讨论】:

  • 数据库有多少个?最快的方法是复制 MDF 和 LDF 是的,但这是手动工作。备份还原是您的最佳选择,但缺少一个步骤。您需要先将备份复制到 C:\Temp 上的新服务器,然后才能恢复它。另一个问题是 2005 年和 2012 年的兼容性。请仔细阅读。
  • 123 个数据库,66 个存储过程,17 个视图,45 个函数。我试图一次复制它们。是的,我正在研究版本兼容性。
  • 抱歉,123 个数据库,66 个 sp,视图和函数,但没有表?你是说123张桌子吗?其次,这会是一次性的吗?
  • :P... 123 数据库,是的。每个数据库包含 6-15 个表。不,我不是说 123 张桌子。是的,我正在尝试以一种简单的方式做到这一点。

标签: sql sql-server sql-server-2005 sql-server-2012


【解决方案1】:

尝试按照此处所述备份和恢复:http://technet.microsoft.com/en-us/library/ms190436.aspx

或者从您的数据库中编写两个简单的脚本,就像这样:

SELECT 'BACKUP DATABASE ' + name 
       + ' TO DISK=''c:\temp\' + name + '.bak''' 
FROM   sys.databases 
WHERE  name NOT IN ( 'master', 'msdb', 'tempdb' ) 

SELECT 'RESTORE DATABASE ' + name 
       + ' FROM DISK=''c:\temp\' + name + '.bak''' 
FROM   sys.databases 
WHERE  name NOT IN ( 'master', 'msdb', 'tempdb' ) 

然后您可以使用它来备份/恢复您的数据库。

【讨论】:

  • 我可以单独备份每个数据库。有没有办法一次完成?
  • 您可以编写一个脚本来一次备份和恢复所有数据库,但正如您所说的那样,这也将是“耗时且烦人的”。
  • 我已经了解您的技术并正在努力。并且已经用游标备份了所有数据库:) @Brett Schneider
  • 这是最好的方法。只需记住在还原数据库之前先将备份复制到新服务器。你可以使用SELECT 'XCOPY c:\temp\'+name+'.bak \\server2\c$\temp\' +name+'.bak''' FROM sys.databases where name not in ('master', 'msdb', 'tempdb', 'model')
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多