周日做完全备份
backup database Txcard to disk=N'D:\AutoBak\Txcard.bak' with init, nounload, name=N'备份Txcard', Noskip, stats=10, noformat
周一到周六做差异备份
backup database Txcard to disk=N'D:\AutoBak\Txcard.bak' with differential, nounload, name=N'差异备份Txcard' , Noskip, stats=10, noformat 
在还原时出现故障:
还原语句:
restore database txcard from disk = 'D:\AutoBak\Txcard.bak' with  file=1, norecovery
restore database txcard from disk = 'D:\AutoBak\Txcard.bak' with file=5, recovery
在还原执行到第二条时,提示错误:
服务器: 消息 3136,级别 16,状态 1,行 1
无法将设备 'D:\AutoBak\Txcard.bak' 上的备份应用于数据库 'txcard'。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。

解决方案 »

  1.   

    with file=5 把这个数字改改
      

  2.   

    谢谢1楼提供的资料贴。
    回复3楼我现在是测试备份是否可用,并不是在服务器上还原备份集。测试发现只有完全备份是可用的,差异备份不行。不过我上次测试时发现完全备份和第一次差异备份可用,其后的差异备份不可用,本次测试发现只有完全备份可用。
    回复4楼,不同备份是可以放在同一个文件里的,因为SQL SERVER备份可以追加或重写备份集,(虽然把不同备份放到同一个文件里不太妥当)。另:with file=5 把这个数字改改,这个只是选择恢复哪一次备份的,关系应该不大(而且也试过其它数字)。
    不知道能否有人帮解释下,错误产生的原因。
    谢谢所有关注的人!
      

  3.   

    建议楼主查看一下备份文件 D:\AutoBak\Txcard.bak 的备份集内容:
    restore headeronly from disk=N'D:\AutoBak\Txcard.bak'
      

  4.   

    发现问题了,服务器除了我的备份计划外,自己另有一个每天凌晨自动完全备份所有数据库。
    这导致差异备份无法匹配我的完全备份,所以无法恢复。
    不过就是不知道系统自己完全备份所有数据库到什么地方了,看SQL日志,好像是虚拟设备。
    不知道该怎样查看。