标签:
一个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
标签:
原文地址:http://www.cnblogs.com/mc67/p/4848624.html