您的位置:首页 > 博客中心 > 数据库 >

SQLSERVER数据库主要状态

时间:2022-03-14 15:05

一个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 状态。

 

 

 

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

 ALTER DATABASE DATABASE_NAME SET ONLINE | OFFLINE |EMERGENCY

 

本类排行

今日推荐

热门手游