none
怎么才能把一个数据库原封不动的迁移到另外一台服务器上? RRS feed

  • 问题

  • A服务器和B服务器硬件配置相同,sql server版本一致都是2008,现想将A服务器上的一个数据库从结构到数据原封不动包括的搬到B上,尝试了以下方法

    1.任务——导出到B服务器上,Management studio报告成功,结果检查时发现数据库里的一个表命名是分区表,到了B服务器上变成了未分区的

    2.备份——还原,到最后一步出错,“备份集中的数据库备份与现有的数据库不同”。需要说明的是B上的数据库只是名字一样,表全是空的,一张表都没建,我本意是想把a服务器上的同名数据库连结构带数据全弄过去的

    请问究竟用什么办法?

    2012年12月7日 9:18

答案

  • 呵呵,山寨消息太多,误导了不少人

    参考下Backup & Restore Database吧,更方便

    最简单的例子:

    1、在原服务器上:Backup Database DB To Disk='D:\DB.Bak'

    2、移动D:\DB.Bak到新机上

    3、Restore Database DB From Disk='D:\DB.Bak'

    若新机上无原服务器上文件路径,先手动创建。否则需要使用MOVE指定新的存在的位置

    **不用建空库,那是山寨流言


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    2012年12月7日 12:35

全部回复

  • 备份 + 还原

    还原之前注意不要在服务器上建空库, 有空库也最好先删除(或者还原的选项中去远那个覆盖)

    还原的界面,注意那个还原为的文件目录设置,如果你的两台服务器磁盘分布不一样,就需要去调整这个

    2012年12月7日 10:13
  • 备份 + 还原

    还原之前注意不要在服务器上建空库, 有空库也最好先删除(或者还原的选项中去远那个覆盖)

    还原的界面,注意那个还原为的文件目录设置,如果你的两台服务器磁盘分布不一样,就需要去调整这个

    你是不是搞错了什么,服务器上如果没有一个空数据库让我还原,第二步就直接报错

    标题: Microsoft SQL Server Management Studio
    ------------------------------

    还原 对于 服务器“xxxxx”失败。  (Microsoft.SqlServer.SmoExtended)

    有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1750.9+((dac_inplace_upgrade).101209-1051+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=还原+Server&LinkId=20476

    ------------------------------
    其他信息:

    System.Data.SqlClient.SqlError: 数据库 "energy" 不存在。RESTORE 只能在还原主文件的完整备份或文件备份时创建数据库。 (Microsoft.SqlServer.Smo)

    有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1750.9+((dac_inplace_upgrade).101209-1051+)&LinkId=20476

    我不知道你的意思是不是指的覆盖所有的数据库,而我实际上只是要备份还原其中的一个数据库

    2012年12月7日 10:26
  • 呵呵,山寨消息太多,误导了不少人

    参考下Backup & Restore Database吧,更方便

    最简单的例子:

    1、在原服务器上:Backup Database DB To Disk='D:\DB.Bak'

    2、移动D:\DB.Bak到新机上

    3、Restore Database DB From Disk='D:\DB.Bak'

    若新机上无原服务器上文件路径,先手动创建。否则需要使用MOVE指定新的存在的位置

    **不用建空库,那是山寨流言


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    2012年12月7日 12:35
  • 看你数据库 恢复模式跟备份的模式是否是完整备份 ,恢复模式是大容量日志还是完整


    给我写信: QQ我:点击这里给我发消息

    2012年12月7日 12:48
  • 用管理工具确实会遇到很多问题,提供两种方法:([123指的是数据库名字)

    方法一、backup database  123  to disk = 'D:\123.bak'

          backup 123 log to disk ='D:\123_log.bak'

         在服务器B:

         拷贝备份文件到服务器B的D盘

         create database 123

         restore database 123 from disk = 'D:\123.bak' with replace,norecovery

         restore  log 123  from disk ='D:\123_log.bak' with recovery

    方法二:

        分离附加数据库

        在服务器A:

            detach database 123

         在服务器B

            拷贝A的mdf、ldf文件到D盘

           create database 123

           on

           (filename ='d:\123.mdf')

           for attach


    chenl


    • 已编辑 i6first 2012年12月7日 12:55 打错了
    2012年12月7日 12:54
  • 看你数据库 恢复模式跟备份的模式是否是完整备份 ,恢复模式是大容量日志还是完整


    给我写信: QQ我:点击这里给我发消息

    桦仔又捣乱,这些都跟备份/还原没有关系的。

    想不想时已是想,不如不想都不想。

    2012年12月7日 13:34
    版主
  • 呵呵,山寨消息太多,误导了不少人

    参考下Backup & Restore Database吧,更方便

    最简单的例子:

    1、在原服务器上:Backup Database DB To Disk='D:\DB.Bak'

    2、移动D:\DB.Bak到新机上

    3、Restore Database DB From Disk='D:\DB.Bak'

    若新机上无原服务器上文件路径,先手动创建。否则需要使用MOVE指定新的存在的位置

    **不用建空库,那是山寨流言


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    成功了,你们的方法是对的,但是我很奇怪的是,你说的山寨是指的什么,sql server management studio吗,为何称它为山寨?

    另外我发现貌似这家伙提供的还原界面,确实是不允许你对一个不存在的数据库进行还原的,必须选一个数据库,看来图形化界面确实不太可靠啊

    2012年12月7日 15:29
  • 估计图形界面用多了,用图形界面的话需要建立空库,用脚本的话不用预先建立空库,由于LZ没有把Master数据库数据库还原到新的服务器上

    所以可以不用修改你的数据库的路径在新服务器上不用运行下面这两句假定你的数据库只有主数据文件跟日志文件

    ALTER DATABASE 你的数据库 MODIFY FILE(NAME=你的数据库,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\你的数据库.mdf')
    GO

    ALTER DATABASE 你的数据库 MODIFY FILE(NAME=你的数据库,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\你的数据库.ldf')
    GO

    至于表分区的话,今晚我回去测试一下,如果你在原服务器上建立了几个文件组跟辅助数据文件,表分区的数据放在这几个文件组里,辅助数据文件跟这些文件组一一对应

    那么迁移到新服务器上的话表分区应该还存在的

    因为你在新服务器上新建了一个空库,只有一个主数据文件,跟一个日志文件,还原的时候也是只有一个主数据文件跟日志文件

    以前没有注意到这个问题,今晚回去测试一下


    给我写信: QQ我:点击这里给我发消息


    2012年12月8日 2:41
  • Are you serious? Restoring db will create all files in the db unless you restore filegroup only. Don't post something you don't know.
    2012年12月8日 3:57
  • ....Don't post something you don't know.

    support!


    Please click the Mark as Answer button if a post solves your problem!

    2012年12月8日 4:11
  • 数据库采用完整备份,刚才还原的时候确实所有文件组都跟分区都保留了

    给我写信: QQ我:点击这里给我发消息

    2012年12月8日 4:54
  • 不知道你们是不是想赶走其他用户,本来论坛就是大家讨论的地方,其他人肯定有不知道的,版主可以纠正其他人的回答

    你们每次的语气都是很严厉的,就是你们的答案永远是对的,为了争取一些分数,我觉得没有必要这样,如果我的答案

    是错误的,我可以回去动手做实验,或者大家可以指出,或者告诉其他人如何回去动手做这个实验,有时候工作

    比较忙,可能答复得不是很完整,例如,邹建大侠他们,没有必要为了某些问题而找茬,比如回答得不完整而说别人

    什么什么的,例如某些问题,不是在论坛里一两句话可以回答清楚的,有时候要通过一些文章,博客才能说清楚例如索引

    算了不说了


    给我写信: QQ我:点击这里给我发消息

    2012年12月8日 5:15
  • 用界面还原也是不用建空库的,那个还原的数据库名称你自己输入就行了, 你要选的话,当然是要个空库, 你自己输入也是认的

    在日常处理中, 还原到时间点, 因为涉及多个日志文件,所以一般是用办面的, 从来没有建个空库

    认为要建空库的, 估计是因为那个数据库名是可选择的, 所以没有去尝试过直接输入

    2012年12月8日 5:18
  • 明白了邹建大侠,你回答得很好

    给我写信: QQ我:点击这里给我发消息

    2012年12月8日 6:00
  • 版主当然不是绝对正确的,我的错误也常被别人指出来。

    看见有人给出错误的回答,不管是不是版主,都有责任指出,不然岂不是误导别人了?


    想不想时已是想,不如不想都不想。

    2012年12月8日 12:33
    版主
  • 怡红公子斑竹,我觉得否认别人的时候顺带解释一下或者给出一个实验让别人动手证明自己的观点才是大侠所为

    不是否认一下别人 拍拍屁股就走了,你说对吗?


    给我写信: QQ我:点击这里给我发消息

    2012年12月9日 1:10
  • 如果说这个问题是你提的,那你说错的时候,别人自然会给你解释,或者做个试验证明给你看。
    如果这个问题不是你提的,那你自己都搞不清的情况下,就抛出自己的答案,别人帮你纠正错误是小事,但是对提问者造成误解,形成固定的概念,那就不好了。当然无论谁都不可能每次都给出100%正确的答案,但是纵观你最近在论坛无论是回帖量还是错误率(或者说是跟问题不相关的回帖),似乎有点高,我想这就是大家提醒你的原因吧。



    Please click the Mark as Answer button if a post solves your problem!

    2012年12月9日 3:18