数据库服务器上的计算机重新启动后,IIS 7.5 无法打开数据库

数据库服务器上的计算机重新启动后,IIS 7.5 无法打开数据库

我决定也在这里发布这个问题,以防我们遇到的问题与 SQL 服务器有关。

有一个问题困扰了我一段时间。我有一个使用 NHibernate 来建模数据库的 asp.net mvc。基础架构如下:所有虚拟机均使用 Windows 2008 R2。IIS 7.5 在一台虚拟机上运行。Sql Server 2008 在另一台虚拟机上运行。我们有几个数据库,两个用于存储应用程序数据,一个用于注册所有未处理的异常。

有时,托管数据库服务器的虚拟机会重新启动(在半夜,不太清楚原因),之后与存储应用程序数据的数据库的连接将无法正常工作,结果在第三个数据库中注册了数千个未处理的异常。值得一提的是,数据库可以从 Management Studio 访问。通过重置 IIS 可以解决问题。连接通过 NHibernateUtil 类处理,该类在每次请求时打开和关闭会话。

答案1

在我看来,这似乎是编码错误。基本上 - 是的,应用程序在 SQL Server 重新启动时不可用。确实会发生这种情况(如果您修复了这个问题,请查看运行镜像的第二台服务器)。

但是,如果 Web 应用程序永久不可用,则数据库连接的处理存在问题。例如,应用程序“保留”不可用的数据库连接,而不是放弃它们并打开新的连接。违反最佳实践(仅在需要时才打开数据库连接)。

SQL Server 重启的原因可能是修补,顺便说一下,请检查自动更新设置。

相关内容