我尝试使用以下查询恢复数据库:
ALTER DATABASE [DatabaseName] SET Single_User WITH Rollback Immediate GO
RESTORE DATABASE DatabaseName FROM DISK = 'C:\DBName-Full Database Backup'
ALTER DATABASE [DatabaseName] SET Multi_User GO
但是我没有恢复数据库,而是收到了这个错误:
Msg 3159,Level 16,State 1,Line 2
日志的尾部 数据库“DatabaseName”尚未备份。如果日志包含您不想要的工作,请使用
BACKUP LOG WITH NORECOVERY
备份日志 失去。使用WITH REPLACE
的{{1}}或WITH STOPAT
条款 声明只是覆盖日志的内容。消息3013,级别 16,状态1,行2RESTORE
异常终止。
答案 0 :(得分:89)
如果您不关心现有数据库或日志,那么您收到的错误消息将告诉您需要做什么。
RESTORE DATABASE DAtabaseName FROM DISK = 'C:\DBName-Full Database Backup'
WITH REPLACE
在SQL Server Management Studio(任务>还原)中,您可以通过打开左侧的“选项”页面并勾选“覆盖现有数据库”来添加WITH REPLACE
选项。
答案 1 :(得分:22)
对于那些使用Management Studio
的人来说,这应该有效:
答案 2 :(得分:2)
或者,您可以将数据库恢复模型更改为“简单”而不是“完整”。
右键单击数据库,选择“属性”,“选项”,将“恢复模式”更改为“简单”。
然后你所写的内容应该不会产生错误。
答案 3 :(得分:2)
或者,您可以将数据库恢复模式更改为Simple
而不是Full
。
properties
- > option
recovery model
更改为simple
然后你所写的内容应该不会产生错误。
它对我很好。
答案 4 :(得分:1)
如果日志包含工作,则使用BACKUP LOG WITH NORECOVERY备份日志 你不想失去。
使用RESTORE语句的WITH REPLACE或WITH STOPAT子句 只是覆盖日志的内容。
真的,这就是答案。就在那里,在消息中。你想让我做什么?备份尾巴所以没有丢失?替换未备份的日志?你的电话。