SQLSERVER 备份还原常见错误以及解决方法
个人在做测试的时候发现的常见问题,和一些解决方案,记录下来,以免遗忘!
错误一
解决方法:
先分离源数据库,然后你可以使用 move 属性 或者直接添加 REPLACE
REPLACE 方法
--t-sql 附加数据库 记得:USE MASTER GO
SP_ATTACH_DB 'SHOP','F:\TEST\SHOP.MDF','F:\TEST\SHOP_LOG.LDF' GO --t-sql 分离数据库 SP_DETACH_DB SHOP,TRUE RESTORE DATABASE NEWSHOP FROM DISK='F:\TEST\BACKUP\SHOP.BAK' WITH REPLACE --覆盖原有的文件
REMOVE 方法
RESTORE DATABASE NEWSHOP FROM DISK='F:\TEST\BACKUP\SHOP.BAK' WITH MOVE 'SHOP' TO 'F:\TEST\MOVE\SHOP.MDF', MOVE 'SHOP_LOG' TO 'F:\TEST\MOVE\SHOP_LOG.LDF'
错误二:误用RECOVERY
使用NORECOVERY和 RECOVERY的注意事项,特别是在使用事务日志恢复的时候!
RECOVERY 则是将数据库从脱机状态恢复懂啊联机(online)状态,供用户使用,
一旦数据库进行了RECOVERY,则无法再次进行RESTORE 操作。
使用NORECOVERY 就会看到如图:
解决方案:
RESTORE DATABASE NEWMC67 FROM DISK='F:\TEST\MC67.BAK' WITH REPLACE, NORECOVERY --这里要使用NORECOVERY --现在来恢复事务日志; RESTORE LOG NEWMC67 FROM DISK='F:\TEST\MC67_LOG.TRN' WITH STOPAT='2015-10-06 15:04'