zoukankan      html  css  js  c++  java
  • RESTORE DATABASE命令还原SQLServer 数据库 bak

    今天在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!

    Restore failed for Server 'ADANDELI'.  (Microsoft.SqlServer.Smo)
    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo
    The backup set holds a backup of a database other than the existing 'AAA' database.
    RESTORE DATABASE is terminating abnormally. (Microsoft SQL Server,错误: 3154)

    找不到原因(已经选择了"overwrite the existing database"),只能使用命令来还原了,不知道为什么会这样.

    --返回由备份集内包含的数据库和日志文件列表组成的结果集。
    --主要获得逻辑文件名
    USE master
    RESTORE FILELISTONLY
       FROM DISK = 'g:ack.Bak' 
    Go
    ************************************************
    /*
    利用bak恢复数据库,强制还原(REPLACE)
    STATS = 10 每完成10%显示一条记录
    DBTest和DBTest_log是上面g:ack.Bak里的逻辑文件
    */
    USE master
    RESTORE DATABASE DB 
       FROM DISK = 'g:ack.Bak'
       WITH MOVE 'DBTest' TO 'E:Program FilesMicrosoft SQL Server2005DataDB.mdf', 
       MOVE 'DBTest_log' TO 'E:Program FilesMicrosoft SQL Server2005DataDB_log.ldf',
    STATS = 10, REPLACE
    GO
    ++++++++++++++++++++++++++++++++

    /*
    备份数据DB 到.bak文件。然后利用此bak文件恢复一个新的数据库DBTest。
    */
    USE master
    BACKUP DATABASE DB 
      TO DISK = 'g:DBBack0930.bak' 
    RESTORE FILELISTONLY 
      FROM DISK = 'g:DBBack0930.bak' 
    RESTORE DATABASE DBTest 
      FROM DISK = 'g:DBBack0930.bak' 
      WITH MOVE 'DBTest' TO 'E:Program FilesMicrosoft SQL Server2005DataDBTest.mdf', 
      MOVE 'DBTest_log' TO 'E:Program FilesMicrosoft SQL Server2005DataDBTest_log.ldf'
    GO 
    ---******************************
     
    http://www.cnblogs.com/adandelion/archive/2006/09/30/519534.html
     
     

    换了电脑,需要恢复一下数据库的数据,本来以为很简单,结果遇到了一点问题。

    1. 图形界面选择了源文件后, 在选项里面:上面选择覆盖,下面选择norecovery. 
      这里写图片描述
      发现错误提示是找不到目标目录。 
      2.于是建了个同名数据库,建立过程中修改了文件目录,变为自己想要存放的目录。 
      3.发现使用这种方法,提示NDF文件找不到目录。 
      4.NDF文件是在较大数据库使用过程中产生的,新建的空数据库当然不会有了。于是想当然手动建立,恢复,出错,这也是应当的。 
      5.于是直接命令恢复。
    restore database MeteorologyDB from disk='H:ghostfghjklMeteorologyDB.BAK'
    with replace,
    move 'MeteorologyDB_Data' to 'D:MeteorologyDB.MDF',
    move 'MeteorologyDB_Data1' to 'D:MeteorologyDB.NDF',
    move 'MeteorologyDB_Log' to 'D:MeteorologyDB.LDF'
    • 1
    • 2
    • 3
    • 4
    • 5

    6.上述过程可能有两个问题产生: 
    一是提示数据库正在使用,无法恢复。这个时候前面加上一句use master就ok. 
    二是提示逻辑文件名字错误,不存在于此数据库类似的提示。这个时候参考第一张图,也就是图形界面恢复的选项配置的界面。里面有mdf,ndf,ldf的名字,根据这些名字更改逻辑文件的名,也就是move的第一个参数。注意的是不要加扩展名。 
    7.可以看到所有的表都恢复了。

    http://blog.csdn.net/tianguokaka/article/details/46968951

     
     
     
  • 相关阅读:
    条件分支if与else的用法小结
    Pandas的loc,iloc与ix的用法及区别
    决策树参数介绍
    列表,元组,字典三种序列之浅谈
    今日浅谈循环 for与while
    电脑重生
    学而201105期蘑菇班学员成绩单(高级)
    悬赏公告
    学而201005期蘑菇学员成绩单
    学而201011期蘑菇班学员成绩单
  • 原文地址:https://www.cnblogs.com/chen110xi/p/4878683.html
Copyright © 2011-2022 走看看