数据库“DBName”的日志尾部尚未备份

时间:2012-09-11 13:34:00

标签: c# sql sql-server-2005 sharepoint

我尝试使用以下查询恢复数据库:

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,行2 RESTORE异常终止。

5 个答案:

答案 0 :(得分:89)

如果您不关心现有数据库或日志,那么您收到的错误消息将告诉您需要做什么。

RESTORE DATABASE DAtabaseName FROM DISK = 'C:\DBName-Full Database Backup' 
WITH REPLACE

在SQL Server Management Studio(任务>还原)中,您可以通过打开左侧的“选项”页面并勾选“覆盖现有数据库”来添加WITH REPLACE选项。

答案 1 :(得分:22)

对于那些使用Management Studio的人来说,这应该有效:

enter image description here

答案 2 :(得分:2)

或者,您可以将数据库恢复模型更改为“简单”而不是“完整”。

右键单击数据库,选择“属性”,“选项”,将“恢复模式”更改为“简单”。

然后你所写的内容应该不会产生错误。

答案 3 :(得分:2)

或者,您可以将数据库恢复模式更改为Simple而不是Full

  1. 右键单击数据库
  2. 选择properties - > option
  3. recovery model更改为simple
  4. 然后你所写的内容应该不会产生错误。

    它对我很好。

答案 4 :(得分:1)

  

如果日志包含工作,则使用BACKUP LOG WITH NORECOVERY备份日志   你不想失去。

     

使用RESTORE语句的WITH REPLACE或WITH STOPAT子句   只是覆盖日志的内容。

真的,这就是答案。就在那里,在消息中。你想让我做什么?备份尾巴所以没有丢失?替换未备份的日志?你的电话。