DBCC CHECKDB每20-60秒触发一次


13

我有一个开发环境,正在迅速将其部署到生产环境中,并且在日志中注意到大约每20秒我会看到以下消息:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

我注意到了这一点,因为测试此问题的最终用户遇到了一个问题,但我将其隔离为Windows事件日志(应用程序日志)中发现的错误:

The log for database 'dbname' is not available. Check event log for related messages.

顺便说一句,我没有找到相关消息,但是通过离线/在线周期解决了。

我唯一能想到的是该应用程序每1毫秒收集一次数据,但是不会将所有这些数据插入数据库中。作为开发服务器,已对其进行了配置,以使日志和数据位于同一驱动器上。考虑到这两条信息,我倾向于将其作为IO问题,并且服务器正在尝试从与存储(SAN)的连接断开中恢复。但是,即使这对我来说也没有意义,因为它不会丢失所有数据库,而只是丢失所有数据库。还有什么可能导致这种情况?

平台:Windows Server 2008 R2上的SQL Server 2008 R2(Ent。)(标准)

Answers:


22

您看到此消息的原因:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

是因为您为设置了数据库选项AutoClose

若要关闭自动关闭,请执行以下操作:

alter database YourDatabase
set auto_close off
go

什么AutoClose确实是关闭最后一个用户进程断开连接后的数据库。然后,当下一个用户连接尝试连接时,数据库将自动“ 重新打开 ”。

通常,最佳做法是保持AutoCloseOFF状态,因为再次启动数据库的等待时间很长。我从您的问题中了解到这是一个开发环境,但是您也不应该在那里(并且您肯定在生产环境中也不需要它)。

而且DBCC CHECKDB实际上不是每个问题标题“每20-60秒触发一次”,而是这样显示的!

从SQL Server 2005 开始,每次启动数据库时,都会在错误日志中报告dbi_dbccLastKnownGood值(如果存在)。因此,您只是看到重复显示的相同历史信息。

在“服务器启动时,为什么SQL Server对我的数据库运行DBCC CHECKDB”中涉及了此主题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.