--数据库文件名的问题--查询分析器中执行下面的语句来解决restore database 数据库名
from disk='c:\a.bak'  --c:\a.bak是备份文件名
with move 'SXT_dat' to 'c:\sxt.mdf'  --将sxt_dat恢复到文件c:\sxt.mdf
    ,move 'SXT_log' to 'c:\sxt.ldf'  --将sxt_log恢复到文件c:\sxt.ldf

解决方案 »

  1.   

    c:\sxt.mdf
    c:\sxt.ldf
    中的c:\要求是你的电脑中已经存在的任何目录
    文件名,可以是该目录下任何不存在的文件名
      

  2.   

    我恢复另外一个库出了错
    restore  database  STX_X from  disk='E:\a'
    with move 'STX_X_data' to 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Data.MDF'
    ,move 'STX_X_log' to 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Log.LDF'
    服务器: 消息 1834,级别 16,状态 1,行 1
    无法重写文件 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Data.MDF'。数据库 'STX_X' 正在使用该文件。
    服务器: 消息 3156,级别 16,状态 1,行 1
    文件 'STX_X_Data' 无法还原为 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Data.MDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
    服务器: 消息 1834,级别 16,状态 1,行 1
    无法重写文件 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Log.LDF'。数据库 'STX_X' 正在使用该文件。
    服务器: 消息 3156,级别 16,状态 1,行 1
    文件 'STX_X_Log' 无法还原为 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Log.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
    服务器: 消息 3013,级别 16,状态 1,行 1
    RESTORE DATABASE 操作异常终止。
      

  3.   

    备份文件中保存了备份数据库前的数据文件和日志文件名及目录
    如果恢复的时候不指定move选项,则使用备份文件中保存的文件信息
    如果你要恢复的磁盘上没有这个目录,自然恢复会报错
      

  4.   

    我恢复另外一个库出了错  
    restore    database    STX_X  from    disk='E:\a'  
    with  move  'STX_X_data'  to  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Data.MDF'  
    ,move  'STX_X_log'  to  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Log.LDF'  
     
     
    服务器:  消息  1834,级别  16,状态  1,行  1  
    无法重写文件  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Data.MDF'。数据库  'STX_X'  正在使用该文件。  
    服务器:  消息  3156,级别  16,状态  1,行  1  
    文件  'STX_X_Data'  无法还原为  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Data.MDF'。请使用  WITH  MOVE  选项来标识该文件的有效位置。  
    服务器:  消息  1834,级别  16,状态  1,行  1  
    无法重写文件  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Log.LDF'。数据库  'STX_X'  正在使用该文件。  
    服务器:  消息  3156,级别  16,状态  1,行  1  
    文件  'STX_X_Log'  无法还原为  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Log.LDF'。请使用  WITH  MOVE  选项来标识该文件的有效位置。  
    服务器:  消息  3013,级别  16,状态  1,行  1  
    RESTORE  DATABASE  操作异常终止。
      

  5.   

    第一个库名是STX,第2个是STX_X
      

  6.   

    --错误提示很清楚嘛,如果你是要用恢复的数据库覆盖已经存在的数据库,则加replace选项restore    database    STX_X  from    disk='E:\a'  
    with  move  'STX_X_data'  to  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Data.MDF'  
    ,move  'STX_X_log'  to  'E:\Program  Files\Microsoft  SQL  Server\MSSQL\Data\STX_X_Log.LDF' 
    ,replace  --强制覆盖选项
      

  7.   

    在最后加了replace还是报一样的错,第一个库没这样都恢复了。郁闷死了
      

  8.   

    use master
    go--关闭用户进程
    declare @s nvarchar(1000)
    declare tb cursor local for
    select s='kill '+cast(spid as varchar)
    from master..sysprocesses 
    where dbid=db_id(N'STX_X')open tb 
    fetch next from tb into @s
    while @@fetch_status=0
    begin
    exec(@s)
    fetch next from tb into @s
    end
    close tb
    deallocate tb
    go--删除旧库
    drop database STX_X
    go--再恢复
    restore  database  STX_X from  disk='E:\a' 
    with move 'STX_X_data' to 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Data.MDF' 
    ,move 'STX_X_log' to 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\STX_X_Log.LDF' 
    ,replace --强制覆盖选项