题目描述:在某个数据库上创建一个表并输入记录,然后完全备份该数据库。接着再用SQL语句修改表中内容,随后进行数据库恢复,比较恢复前后这个数据库的不同点。    解决过程中遇到的问题描述:
    1、开始的时候,WITH使用replace,恢复后的数据库,该数据库中新建的表消失了(难道默认是恢复第一次的备份?)。到现在我都不明白原因在哪里。
代码如下:
RESTORE DATABASE  some_database
FROM DISK = 'backup'
WITH FILE = 1,
replace

2、后来,我又重新建立新表,使用norecovery或者recovery,则有如下错误提示:
/*尚未备份数据库 "戴培钦" 的日志尾部。如果该日志包含您不希望丢失的工作,
  请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 
  或 WITH STOPAT 子句来只覆盖该日志的内容。
*/
经过排查,发现原来没有备份事务日志,备份后,使用了NORECOVERY,结果该数据库一直显示restoring,并且无法操作。
然后按照老紫竹的办法,重启数据库管理器,还是不行。
于是我又按照开始时的方法做了一次(当然这个先备份日志),然后这个数据库就可以用了。
3、最后在备份日志后,用一下代码做出正确的结果:
RESTORE DATABASE  some_database
FROM DISK = 'Student_TestBackup_E6'
WITH FILE = 1,
RECOVERY

    原来NORECOVERY和RECOVERY的不同之处在于:如果使用RECOVERY选项,那么恢复完成后,SQL Server将回滚被恢复的数据库中所有未完成的事务,以保持数据库的一致性。恢复后,用户就可以访问数据库了。所以,RECOVERY用于最后一个备份的恢复。而NORECOVERY不回滚所有未完成的事务,恢复后,用户不能访问数据库。所以,NORECOVERY用于非恢复最后一个备份的恢复。不知道说这些大家是否明白或者是否遇到过我这个问题,如有疑问,请跟帖告知小弟,谢谢。大家再讨论讨论。