数据库处于回避恢复模式

SQLSERVER数据库主要状态

可能是因为当前数据库正处在 EMERGENCY (紧急状态)下, 可以使用 alter database 数据库名 set online  来恢复成在线状态!

T-SQL 语句来切换他们的状态

 ALTER DATABASE DATABASE_NAME SET ONLINE | OFFLINE |EMERGENCY

一个SQLSERVER数据库会处于很多种状态,例如 ONLINE 、OFFLINE,RESTORING 、RECOVERING 、RECOVERY_PENDING  、SUSPECT、EMERGENCY 。

只有在ONLINE的状态下,数据库才能被正常访问。


可以利用下面的语句来查看它的状态

select name,state_desc from sys.databases

 

1.ONLINE


    只有在ONLINE的状态下,数据库才能被正常访问


2.OFFLINE


   我们可以在Microsoft SQL Server Management中看到该数据库,但该数据库名称旁边有"脱机"的字样,说明该数据库现在虽然存在于数据库引擎实例中,但是不可以执行任何有效的数据操作,比如新增,修改,删除等,这就是脱机状态。(这个时候,你就可以直接拷贝源文件了,也就会说最原始的备份方法)


但是:


无法覆盖文件 ‘F:\TEST\SHOP.MDF‘。数据库 ‘SHOP‘ 正在使用该文件。


你依然无法....


3.RESTORING


  由于SQLSERVER LAZY WRITE和CHECKPOINT的作用,硬盘上存在一些未提交的数据,如果数据库在这种时候被关闭,下次SQLSERVER重新打开数据库的时候,为了维护数据库的一致性,SQLSERVER一律回滚,以保证数据库事务的一致性(undo/rollback),对于那些已经提交的事务,暂时存在内存中,未写入到磁盘中的,一律redo,在undo和redo的过程叫做数据库恢复。只有经过恢复的数据库,才能保证是一个“一致的”数据库,才能被安全地访问。


4.RECOVERY_PENDING


如果数据库在做恢复的时候不能正常打开所有的数据库文件,数据库会进入RECOVERY PENDING状态。在这个状态下管理员有两种选择,


a.要不用ALTER ONLINE命令使SQLSERVER做一次上线,


b.要不就只能放弃当前数据库,还原备份。


5.SUSPECT


 我们可以在Microsoft SQL Server Management中看到该数据库,但该数据库名称旁边有"可疑"的字样,这说明至少主文件组可疑或可能已损坏


 对于质疑的解决方案:http://www.jb51.net/article/23363.htm


6.EMERGENCY


      数据库标记为 READ_ONLY,已禁用日志记录,并且仅限 sysadmin 固定服务器角色的成员进行访问。EMERGENCY 主要用于故障排除。 例如,可以将由于损坏了日志文件而标记为可疑的数据库设置为 EMERGENCY 状态。 这样,系统管理员便可对数据库进行只读访问。 只有 sysadmin 固定服务器角色的成员才可以将数据库设置为 EMERGENCY 状态。


 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值