有没有办法阻止 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 空闲?的主要内容,如果未能解决你的问题,请参考以下文章

在Vista安装SQL 2008 Express遭遇属性不匹配错误解决办法

SQL Server 2008 Express 安装或卸载时提示“重启计算机失败"的解决办法

将 SQL Server CE 4 数据库转换为没有 Visual Studio Pro 版本的 SQL Server 2008 Express

SQL Server 2008 R2 Express,服务在服务器上停止

SQL Server 2005 Express 安装在 SQL Server 2008 Express 之后

如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)