对于你添加的文件,还原的时候会自动创建的
参考下面的代码, 第一次完全备份不包含文件db1.ndf, 第二次日志备份包含
还原的时候, 在完全备份还原的基础上, 还原日志是成功的(日志传送也是用备份+还原,所以道理是一样的)-- 测试数据库
CREATE DATABASE db
ON(
NAME = db,
FILENAME = 'c:\db.mdf'
)
LOG ON(
NAME = db_log,
FILENAME = 'c:\db.ldf'
)
GO-- 备份
BACKUP DATABASE db
TO DISK = 'c:\db.bak'
GO-- 添加数据文件
ALTER DATABASE db
ADD FILE(
NAME = db1,
FILENAME = 'c:\db1.ndf')
GO-- 日志备份
BACKUP LOG db
TO DISK = 'c:\db.bak'
GO-- 还原测试
-- A. 删除数据库
DROP DATABASE db
GO-- B. 还原
RESTORE DATABASE db
FROM DISK = 'c:\db.bak'
WITH NORECOVERY,
FILE = 1RESTORE DATABASE db
FROM DISK = 'c:\db.bak'
WITH RECOVERY,
FILE = 2
GO-- 查看数据文件
SELECT * FROM db.dbo.sysfiles
GO-- 删除测试库
DROP DATABASE db

解决方案 »

  1.   

    对文件 "F:\Microsoft SQL Server\MSSQL\ssBBS48.NDF" 的目录查找失败,出现操作系统错误 3(系统找不到指定的路径。)。
    消息 3156,级别 16,状态 3,第 1 行
    文件 'ssBBS_Data48' 无法还原为 'F:\Microsoft SQL Server\MSSQL\ssBBS48.NDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
    消息 3119,级别 16,状态 1,第 1 行
    在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
    消息 3013,级别 16,状态 1,第 1 行
    RESTORE LOG 正在异常终止。
      

  2.   

    按错误提示来看, 是没有 F:\Microsoft SQL Server\MSSQL\ 这个目录, 你先建立这个吧
      

  3.   

    正好邹大侠在,我有个一直没有找到答案的问题请教:
    LOG SHIPPING环境,备用库有种模式是: 恢复/只读,就是说日志恢复完后,数据库转为只读,请问这步是哪个存储过程来实现的呢?如果我想手动的来控制,比如我现在需要恢复,我就让数据库处于恢复模式,现在不想要它恢复,手动改为只读模式.
    这些步骤是那些存储过程来完成的呢?
      

  4.   

    还原的时候指定
    STANDBY = standby_file_name
    指定一个允许撤消恢复效果的备用文件。STANDBY 选项可以用于脱机还原(包括部分还原),但不能用于联机还原。尝试为联机还原操作指定 STANDBY 选项将会导致还原操作失败。如果必须升级数据库,也不允许使用 STANDBY 选项。
      

  5.   

    首先谢谢老大,但是又出现新的问题了,我按照提示创建了相应的目录,后来执行,提示:
    消息 5172,级别 16,状态 15,第 1 行
    文件 'F:\Microsoft SQL Server\MSSQL\ssBBS40.NDF' 的文件头不是有效的数据库文件头。PageAudit 属性不正确。
    消息 3013,级别 16,状态 1,第 1 行
    RESTORE LOG 正在异常终止。
    ssBBS40.NDF这个文件正好是我添加的第一个文件 
      

  6.   

    我没创建文件,只是在创建完目录后,我执行了还原日志的操作(NORECOVERY),结果日志还原“成功”,只不过在结尾加上了那个错误。
      

  7.   

    顺便再请教老大一个问题:
    有个表,字段VARCHAR  我想向表插如数据,
    T_SQL是:'exec sp_change_users_login 'update_one','a_r', 'a_r'insert into Script  (IP1,IP2,T_SQL) 
        values ('0','192.168.0.14','exec sp_change_users_login 'update_one','a_r', 'a_r'')
    执行时提示:消息 102,级别 15,状态 1,第 2 行
    'update_one' 附近有语法错误。
    我知道应该是T——SQL字段里面‘’造成的错误,如何修改下呀!
      

  8.   

    insert into Script  (IP1,IP2,T_SQL) 
        values ('0','192.168.0.14','exec sp_change_users_login ''update_one'',''a_r'', ''a_r''')