我有一个主要用作开发服务器的SQL 2008服务器,在过去的两周里它偶尔有“合适的”,我已经隔离了这些合适的原因,因为CHECKDB几乎是连续运行的,下面的日志信息被logging到Windows事件日志(来源:MSSQLSERVER,类别:服务器):
事件:1073758961,消息:启动数据库'DBName1'。 事件:1073758961,消息:启动数据库“DBName2”。 事件:1073759397,消息:数据库'DBName1'的CHECKDB在2010-07-19 20:29:26.993(当地时间)完成时没有错误。 这只是一个信息性的消息; 无需用户操作。 事件:1073759397,消息:数据库'DBName1'的CHECKDB在2010-07-19 20:29:26.993(当地时间)完成时没有错误。 这只是一个信息性的消息; 无需用户操作。
这是重复每隔1-2秒,直到SQL Server重新启动或有问题的数据库被分开。
我最初以为这是数据库的问题,所以我做了一个备份并将它们恢复到SQL Express实例,所有的数据都完好无损,CHECKDB运行没有问题。
上周造成问题的两个数据库没有被使用, 所以我对它们进行了完整备份并分离了数据库,这解决了这个问题。 然而,今天早上格林威治时间01:00到其他完全无关的数据库开始显示相同的问题。
事件日志中没有任何内容表明服务器发生了重启等情况,没有关于进程崩溃或存储控制器检测到问题的消息。
对于公司老板来说,这台电脑过去曾遭遇过“小灰烬”,但是他们提出了build议,更换了主板,重build了计算机,内存和处理器都是一样的。
统计:
编辑:有人发布,然后删除了一个关于AutoClose的评论,它在受影响的数据库上打开。 最好的做法似乎是禁用它,所以我已经做到了这一点。
EXECUTE sp_MSforeachdb 'IF (''?'' NOT IN (''master'', ''tempdb'', ''msdb'', ''model'')) EXECUTE (''ALTER DATABASE [?] SET AUTO_CLOSE OFF WITH NO_WAIT'')'
我不知道这个问题是否会复发一段时间,所以我仍然有待进一步的答复。
检查我们数据库的AutoClose属性。 把它关掉
AUTO_CLOSE :
当设置为ON时,数据库将被完全closures,并在最后一个用户退出后释放资源。 数据库在用户尝试再次使用数据库时自动重新打开。
设置为OFF时,数据库在最后一个用户退出后保持打开状态。
ALTER DATABASE DBName1 SET AUTO_CLOSE OFF;
默认情况下,在Express实例上创build的数据库具有AUTO_CLOSE ON;
这是服务器重启后任何SQL数据库的正常过程….
SQL Server检查上次在事务日志(LDF)中注册的数据库(MDF)中应用的事务。 如有必要,它可以将日志中的事务应用到数据库。