将Mssql数据库从不同的实例迁移到新的服务器

我在3个不同的服务器上有3个Sql(2008 R2)实例。 版本是(10.50.2550.0 SP1标准版(64位),10.50.2550.0 SP1标准版(64位))。 目标是将所有的数据库和login迁移到新的服务器,我们只需购买Sql server 2012。

我不知道如何处理,我试图使用复制数据库向导,并保持失败。 如果我决定备份每个数据库并将它们还原到新的服务器,我不知道如何迁移login。

处理这种情况的最好方法是什么?

对于混淆抱歉:(更多关于这个问题的细节)

  1. 要移动的数据库数量:10
  2. 复制数据库向导中列出的错误:

第60行:

On Error,DUPFAIDS,NT AUTHORITY \ SYSTEM,DUAPPSRV1_EXAPPSVR1_DUPFAIDS_PFAIDS_Transfer Objects Task,{8F0C82BB-4C5D-4796-BE75-BAB033C59039},{3818CD1B-9685-46B7-AFE2-AE0FE962DA03},

12/3/2014 12:10:15 PM,12/3/2014 12:10:15 PM,0,0x,错误:errorCode = -1073548784

description =执行查询“——————————————– ——…“失败,出现以下错误:”无效的对象名称xwd_window_disabled_objects“。

可能的失败原因:查询问题,“ResultSet”属性设置不正确,参数设置不正确或连接未正确build立。

按照build议备份和恢复数据库。 然后在旧服务器上运行此Microsoft脚本( https://support.microsoft.com/kb/918992 ),以生成脚本以在新服务器上创buildlogin。 由于您有两个源服务器,请务必仔细检查您的脚本,以确保没有任何重复的条目或其他问题。

有很多不同的方法来迁移数据库。 备份和恢复是最常用的build议,但是如果你有超过100个数据库,你可能需要脚本来分离和附加数据库。 我已经成功地使用这个将大量(数百个)数据库迁移到新的服务器:

 @ECHO ON set controlfile=control.txt set newipmdf=\\newserver\g$ set newipldf=\\newserver\e$ set oldserver=oldserver\Prod1 set oldmdfpath=d:\prod1 set newmdfpath=g:\data set copymdfpath=m:\data set newserver=newserver set oldlogpath=e:\prod1 set newlogpath=e:\log set copylogpath=l:\log set movedmdfpath=%oldmdfpath%\moved set movedldfpath=%oldlogpath%\moved mkdir %movedmdfpath% mkdir %movedldfpath% net use m: %newipmdf% net use l: %newipldf% SETLOCAL DISABLEDELAYEDEXPANSION FOR /F %%L IN (%controlfile%%) DO ( SET "line=%%L" SETLOCAL ENABLEDELAYEDEXPANSION ECHO !line! sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'" copy "!oldmdfpath!\!line!.mdf" !copymdfpath! copy "!oldlogpath!\!line!_log.ldf" !copylogpath! sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH" move "!oldmdfpath!\!line!.mdf" !movedmdfpath! move "!oldlogpath!\!line!_log.ldf" !movedldfpath! ENDLOCAL ) ENDLOCAL net use m: /z net use l: /z 

至于login,我不能帮你的密码,但你应该能够得到用户名列表:

 SELECT [name], type, type_desc FROM [master].[sys].[server_principals] where is_disabled=0 and type in ('S','U') 

凯瑟琳Villyard的分离/附加脚本是好的。

如果你想备份和恢复,这也是一个很好的select,是经常使用的。 但是先login。

从此Technet文章复制sp_hexadecimalsp_help_revlogin的代码,并使用sp_help_revlogin生成可用于复制login的TSQL语句。 过程是这样的:

  1. 运行上面提到的代码来创build存储过程(在master中)
  2. 在旧服务器上运行EXEC sp_help_revlogin
  3. 复制sp_help_revlogin的结果并将其粘贴到与新SQL Server实例相连的新查询窗口中
  4. 运行刚刚粘贴的TSQL语句

如果正确完成,您的新实例将具有匹配的login(具有匹配的SID和密码,这是关键)。 然后,您可以备份和恢复您的数据库到新的实例,而不用担心孤立的数据库login。

(注意未来的访问者:如果由于某种原因,链接断开只是searchsp_help_revlogin来查找新页面)。