SQLSERVER数据库主要状态

一个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
时间: 2024-12-15 06:56:51

SQLSERVER数据库主要状态的相关文章

SQLServer数据库自增长标识列的更新修改操作

SQLServer数据库自增长标识列的更新修改操作方法在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录序号等等.自增长的标识列的引用很大程度上方便了数据库程序的开发,但是有时这个固执的字段类型也会带来一些麻烦. 一.修改标识列字段的值:(在执行insert时,将ID手动的设置成想要的值)有时,为了实现某个功能,需要修改类型为Identity自增长类型的字段的值,但由于标识的类型所限,这种操作默认是不允许的.比如,目前数据库有

web应用下sqlserver数据库ip地址无法连接问题。

刚装了sqlserver数据库,但是在myeclipse进行数据的增删改查时出现了数据库ip地址无法连接的问题,经过查找发现了问题所在.具体解决办法是: 1.打开sqlserver的配置管理器 2.仔细观察,我发现MSSQLSERVER目录下的tcp/ip协议是被禁用状态,右击选择打开协议 3.接下来在SQL SERVERS服务下对SQL SERVERS(MSSQLSERVER)重新启动. 4.然后tcp/ip协议就启动了,并且我们能知道数据库的端口号.

VB语言使用ADO连接、操作SQLServer数据库教程

VB语言使用ADO连接.操作SQLServer数据库教程 这篇文章主要介绍了VB语言使用ADO连接.操作SQLServer数据库教程,本文讲解详细.代码中有大量注释,是非常好的一篇教程,需要的朋友可以参考下 几年前学过的VB几乎忘光了,这几天复习了下.VB连接ADO数据库并不是非常难. 连接第一步(要仔细看) 对于小白来讲,这里的教程最详细,连接ADO数据库第一步,要添加什么部件呢?全称是Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 部件. 在Micr

C#连接Access数据库,C#连接Excel数据库,C#连接SqlServer数据库,C#连接Mysql数据库总结

大二下学期写的了,如今毕业一个月了,整理整理 额,以前写的好幼稚,只有自己明白了,网上一大堆,大概的意思说下吧 MySQL========================================= http://user.qzone.qq.com/652768664/blog/1347859952 连接mysql需要安装mysql,在mysql的C盘安装目录有一个连接 lib,将改lib添加引用用项目OK; static void Main(string[] args) { List<s

SQLServer 数据库镜像(二)域环境中完整镜像脚本配置

SQLServer 数据库镜像(一)单服务器无见证的镜像脚本配置 断断续续弄了几天,搭建了域,服务器加入域后再测试另一种情况. 测试环境: 主服务器:   IP = 192.168.2.10 InstanceName = MSSQLSERVER LISTENER_PORT = 5022 镜像服务器:    IP = 192.168.2.10 InstanceName = MSSQLSERVERA LISTENER_PORT = 5023 见证服务器: IP = 192.168.2.11 Inst

Java连接并操作SQLServer数据库

本人只需在项目中引入sqljdbc4.jar 包即可 ----------------------------------------- 在JAVA中如何连接SQL Server数据库 - hanghangde的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/hanghangde/article/details/50463658 这篇文章说得很好,有链接 2000和 2008的服务器版本: Java连接SqlServer2008数据库首先下载JDBC:下载地址:

SqlServer数据库(可疑)解决办法4种

 亲自试过,可行!!!!! SqlServer数据库(可疑)解决办法4种 重启服务--------------------------------------------------日志文件丢了,建一个日志文件-------------------------------------------------- SQL SERVER 2005 数据库状态为“可疑”的解决方法 --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 REC

sqlserver数据库脱机时发生异常:由于无法在数据库 &#39;SMS&#39; 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

sqlserver数据库脱机时发生异常,如下: =================================== 设置脱机 对于 数据库“SMS”失败.  (Microsoft.SqlServer.Smo) ------------------------------ 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500.0+((KJ_PCU_Main).110

Oracle 配置transparent gateway(透明网关)连接sqlserver数据库(gateway安装在sqlserver服务器)

sqlserver服务器:192.168.6.16  测试数据库:orcl  测试表:shenfen  测试视图:id   端口:1433 oracle服务器:192.168.6.10 gateway安装在192.168.6.16 一.sqlserver 服务器 C:\Users\Administrator>hostname WIN-MIRBE4NEBAU C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 本地连接: 连接特定的 DNS