由于本人刚刚学SQL,有许多不懂,请各位前辈多多指点!
近日在书上看到一实例创建SQL数据库,是用书本的附带光盘里的bak文件进行恢复.网上都是用restore database语句,所以本人在查询分析器中输入:
restore database caiwubook
from disk='E:\VFPKF\示例\CHAP4\建库脚本\caiwubook.bak'结果是:
服务器: 消息 5105,级别 16,状态 2,行 1
设备激活错误。物理文件名 'E:\图书创作\数据库开发实例\book\财务管理系统\建库脚本\caiwubook_Data.MDF' 可能有误。
服务器: 消息 3156,级别 16,状态 1,行 1
文件 'caiwubook_Data' 无法还原为 'E:\图书创作\数据库开发实例\book\财务管理系统\建库脚本\caiwubook_Data.MDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
服务器: 消息 5105,级别 16,状态 1,行 1
设备激活错误。物理文件名 'E:\图书创作\数据库开发实例\book\财务管理系统\建库脚本\caiwubook_Log.LDF' 可能有误。
服务器: 消息 3156,级别 16,状态 1,行 1
文件 'caiwubook_Log' 无法还原为 'E:\图书创作\数据库开发实例\book\财务管理系统\建库脚本\caiwubook_Log.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。
本人的SQL服务器程序和数据都是放在e盘上,从光盘上拷贝下来的数据库备份文件夹里有caiwubook.bak,caiwubook_Data.MDF,caiwubook_Log.LDF三个文件,放在E:\VFPKF\示例\CHAP4\建库脚本\里.
不知是什么原因?请赐教!!!

解决方案 »

  1.   

    1\使用SQL直接还原数据库.2\
    RESTORE DATABASE { database_name | @database_name_var } 
    [ FROM < backup_device > [ ,...n ] ] 
    [ WITH
        [ RESTRICTED_USER ]
        [ [ , ] FILE = { file_number | @file_number } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
                [ ,...n ]
        [ [ , ] KEEP_REPLICATION ]
        [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] REPLACE ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ] 
    ]
      

  2.   

    请使用 WITH MOVE 选项来标识该文件的有效位置。
    指定你计算机上的存放数据文件和日志文件的位置
      

  3.   

    to baggio785(狗狗):
    即是我自己SQL server存放数据文件的路径?对吗?????
      

  4.   

    --查询需要还原的数据库的信息
    RESTORE FILELISTONLY FROM  DISK = N'F:\Trans' WITH  FILE = 1 ,  NOUNLOAD
    --还原数据库
    RESTORE DATABASE [aaaa] FROM  DISK = N'F:\Trans' WITH  FILE = 1,  NOUNLOAD ,  STATS = 10,  RECOVERY , MOVE N'ph_roadFreight_Data' TO N'f:\zk2.mdf',  MOVE N'ph_roadFreight_Log' TO N'f:\zk2_log.ldf' 
      

  5.   

    问题已解决:
    先用
    RESTORE FILELISTONLY FROM  DISK='XXX.bak'查看要还原的数据库备份文件的逻辑名我自己的情况:
    RESTORE FILELISTONLY from disk='E:\VFPKF\示例\CHAP4\建库脚本\caiwubook.bak'
    查看到此备份文件的逻辑文件名为:caiwubook_data   caiwubook_logrestore database caiwubook
    from disk='E:\VFPKF\示例\CHAP4\建库脚本\caiwubook.bak'
    with 
    move 'caiwubook_Data' to 'E:\SunnySQL\MSSQL$SONG\Data\caiwubook_Data.mdf',
    move 'caiwubook_Log' to 'E:\SunnySQL\MSSQL$SONG\Data\caiwubook_Log.ldf'谢谢各位,多多交流~~~~