SQLSERVER数据库主要状态及其切换路径
来源:互联网 发布:贴吧千里眼软件 编辑:程序博客网 时间:2024/05/29 19:55
SQLSERVER数据库主要状态和切换路径
只有在ONLINE的状态下,数据库才能被正常访问。
恢复是数据库进入在线状态的关键步骤。如果恢复失败,数据库就没有办法被使用!!
RECOVERING:正在恢复
数据库修改的时候,是先写日志,然后再修改内存中的数据页。检查点或者是LAZY WRITE的时候写入硬盘.所以在大部分时间,都会有一些硬盘上的数据不是最新的版本。如果数据库在这种时间点被关闭,下次SQLSERVER重新打开数据库的时候,为了维护数据库的一致性,SQLSERVER必须做两件事情:
1、重做redo
2、回滚和撤销undo/rollback
在上次数据库被关闭的时候,可能有一些修改已经在数据页上完成,但是事务本身没有提交。对于这些做到一半的事务,SQLSERVER一律回滚,以保证数据库事务的一致性。所以磁盘里被改过的数据还要再改过来。
做这两件事情的过程,叫做数据库恢复。只有经过恢复的数据库,才能保证是一个“一致的”数据库,才能被安全地访问。
从图中可以看出,下面的动作会让SQLSERVER决定对数据库做恢复
(1)CREATE:创建新数据库
(2)ALTER ONLINE:让数据库上线
(3)RESTORE WITHRECOVERY:以RECOVERY方式恢复一个数据库
(4)DATABASESTARTUP:启动数据库,
恢复如果能够正常完成,那么数据库将进入ONLINE状态。
如果恢复动作因为有些资源不能访问而失败,例如某个数据文件或者日志文件打不开等等,数据库会进入RECOVERY PENDING状态。
如果恢复因为数据文件或者日志文件里的内容损坏而失败,例如SQLSERVER要做重做,但是日志文件里相应的日志信息读不出来;
或者要做撤销,去修改数据文件里的页面,却发现页面里的数据不是想象中的那样,那么数据库会进入一个很有名的状态SUSPECT(可疑)。
ONLINE:
这种状态下,可以访问,查询和修改。只有一种方法能够使数据库进入ONLINE状态,那就是成功地恢复。
SQLSERVER通过这种机制保证数据库的一致性。
一个ONLINE的数据库在管理员发出"ALTER OFFLINE"命令后,可以进入OFFLINE状态。在管理员发出“RESTORE”命令后,可以进入RESTORING状态
RECOVERYPENDING:
如果数据库在做恢复的时候不能正常打开所有的数据库文件,数据库会进入RECOVERY PENDING状态。在这个状态下管理员有两种选择,
(1)用ALTER ONLINE命令使SQLSERVER做一次上线,
(2)放弃当前数据库,还原备份。
SUSPECT:
当数据库做恢复的时候由于数据文件或者日志文件里的损坏而失败,数据库会进入SUSPECT状态。在这个状态下管理员只有3种选择。
(1)再做一次ALTER ONLINE ,让SQLSERVER再做一次恢复
(2)放弃当前数据库,还原备份
(3)将数据库状态设置为EMERGENCY,继续尝试修复数据库
EMERGENCY:
紧急模式。这个状态下,SQLSERVER对没有完成恢复的数据库开放一个只读窗口,供管理员在没有备份的情况下尽可能地挽救数据。
RESTORING:
数据库正在做恢复。在任何状态下,管理员都能去恢复数据库。在WITH RECOVERY的模式下,恢复数据库的最后一步,数据库进入RECOVERING状态。
恢复做完后,数据库才能在线。
OFFLINE:
数据库离线状态。这时候数据库也不能被访问。管理员可以使用ALTER ONLINE命令,让数据库开始恢复,从而进入ONLINE状态。
下图主要反映了数据库的主要状态之间的切换路径
- SQLSERVER数据库主要状态及其切换路径
- SQLSERVER数据库主要状态和切换路径
- SQLSERVER数据库主要状态和切换路径
- SQLSERVER数据库主要状态和切换路径
- SQLSERVER数据库主要状态和切换路径
- sqlserver数据库主要监控参数
- 【SqlServer】 数据库备份及其还原
- 配置数据库的主要作用及其分类
- 并行数据库及其主要研究的问题
- SQLServer 数据库镜像+复制切换方案
- SQLServer 数据库镜像+复制切换方案
- SQLServer 数据库镜像+复制切换方案
- MS-SQLSERVER数据库SUSPECT状态如何解决
- MS-SQLSERVER数据库SUSPECT状态如何解决
- MS-SQLSERVER数据库SUSPECT状态如何解决
- MS-SQLSERVER数据库SUSPECT状态如何解决
- SQLSERVER 运维日记-数据库状态
- SQLSERVER 运维日记-数据库状态
- 第七周项目2--建立链队算法库
- JSON使用
- 创业泡沫的「军功章」,高薪低能的程序员要分走一半
- 【高仿微信系列】微信录制小视频
- Java IO基础知识
- SQLSERVER数据库主要状态及其切换路径
- PostgreSQL数据库备份与恢复
- jquery使用笔记
- 使用keychain保存用户名和密码等敏感信息 KeychainItemWrapper和SFHFKeychainUtils。
- android vlc compile error fix
- Centos 6: nginx+php+oracle安装配置
- 总结实现微信支付所遇到的坑
- 将图片上传到iOS模拟器
- linux下源码安装软件的一个选项--prefix