无法还原此差异备份,因为该数据库尚未还原到正确的早期状态
Tags: bugMSSQLMSSQL2000只读数据库备份恢复故障处理
无法还原此差异备份,因为该数据库尚未还原到正确的早期状态。
现象
MSSQL 2000,做了全备,然后做增备,然后做了全备的还原,都没有报错,但是,在还原增备的时候报错:
1 2 3 4 | 消息 3136,级别 16,状态 1,第 2 行 无法还原此差异备份,因为该数据库尚未还原到正确的早期状态。 消息 3013,级别 16,状态 1,第 2 行 RESTORE DATABASE 正在异常终止。 |
原因
数据库是只读的,若是MSSQL 2000,则可以在企业管理器中直接查看:
若源库为只读,则还原全备后数据库也为只读状态,只读的数据库没有必要做增备。
若是只读的数据库,通过如下的SQL语句查看备份信息:
1 | select * from msdb.dbo.backupset b where b.database_name='lhrdb'; |
可以发现,first_lsn和last_lsn都一样,一直没有变化。
若中间还有一次全量备份,破坏了之前的完整备份和差异备份的连接点,那么也会报这个错误。
查询数据库是否为只读状态:
1 2 3 | SELECT name,is_read_only FROM sys.databases WHERE is_read_only=1; |
SQL Server设置数据库为状态为只读
问题描述:
有时候我们为了防止连接数据库再链接插入数据,就可以把库设置为只读模式
灰色后面显示只读说明已经是只读状态了
1、设置为只读状态
1 2 3 4 | USE [master] GO ALTER DATABASE [mgstat] SET READ_ONLY WITH NO_WAIT GO |
2、取消只读状态
1 2 3 4 | USE [master] GO ALTER DATABASE [mglog] SET READ_WRITE WITH NO_WAIT GO |
SQL Server 2000附加数据库只读的处理方法
在SQL Server 2000中附加数据库,mdf、ldf文件属性正常,非只读。路径也不深。但是附加之后,在企业管理器中看到数据库名称后标记(只读),对该数据库,只能查询,无法更新。
该机操作系统为Windows Server 2003。放置mdf、ldf文件的逻辑盘分区格式为NTFS。mdf、ldf来源为U盘拷贝,从CVS目录中备份而来。
解决方法如下:
1. 打开mdf、ldf文件的属性窗口,切换到Security(安全)标签。看到其中Everyone用户权限为Read(只读)。如图1。
图1
2 修改Everyone用户权限为Full Control。如图2。
图2
*3* 回到企业管理器,编辑该数据库属性。打开选项标签。如图*3。*
图3
4* 去掉只读复选框中的小勾。点*OK*即可。如图*4\。