有没有办法阻止 SQL Express 2008 空闲?

Posted

技术标签:

【中文标题】有没有办法阻止 SQL Express 2008 空闲?【英文标题】:Is there a way to stop SQL Express 2008 from Idling? 【发布时间】:2009-02-23 21:00:27 【问题描述】:

我使用 SQL Express 2008 作为 Web 应用程序的后端,问题是 Web 应用程序是在工作时间使用的,所以有时在午餐或休息时间,如果 20 分钟内没有用户登录,SQL Express 会进入空闲模式并释放其缓存。

我知道这一点,因为它记录了以下内容:

服务器在空闲 9709 秒后恢复执行

启动数据库 'xxxxxxx' 在事件日志中

我想避免这种闲置行为。无论如何配置 SQL Express 以停止空闲或至少将时间窗口扩大到超过 20 分钟?还是我唯一的选择是编写一个每 15 分钟轮询一次数据库以保持后台运行的服务?

在阅读了像 this 这样的文章后,它看起来并不乐观,但也许有人知道有黑客或注册表设置。

【问题讨论】:

【参考方案1】:

这种行为是不可配置的。

您确实必须实现一种方法来每隔一段时间轮询数据库。另外,就像您链接到的文章所说,将 AUTO CLOSE 属性设置为 false。

【讨论】:

SQL Server 2017 Express 版是否也在几分钟后空闲?【参考方案2】:

像这样每隔几分钟执行一次简短的 SQL 查询就可以防止 SQLserver 空闲:

SELECT TOP 0 NULL
  FROM [master].[dbo].[MSreplication_options]
GO

【讨论】:

【参考方案3】:

编写一个线程,每隔几分钟执行一次简单查询。在你的 global.asax Application_Start 中启动线程,你应该完成了!

【讨论】:

【参考方案4】:

这里有一个很好的解释:https://blogs.msdn.microsoft.com/sqlexpress/2008/02/22/understanding-sql-express-behavior-idle-time-resource-usage-auto_close-and-user-instances/

随便:我不知道sql express 空闲后的时间。我建议每 10 分钟运行一次下面的脚本(也许是任务调度程序)。 这将防止SQL Server Express 空闲:

SELECT TOP 0 NULL FROM [master].[dbo].[MSreplication_options] GO

还要确保所有数据库的属性都设置为AUTO_CLOSE = FALSE

【讨论】:

很容易使用批处理脚本:\n

以上是关于有没有办法阻止 SQL Express 2008 空闲?的主要内容,如果未能解决你的问题,请参考以下文章