2013-07-28 85 views
0

我们有一个使用SQL Server 2008 SP3 Express的.NET程序。程序和服务器都在同一台机器上。它被写入一个最初打开的连接,然后保持打开状态。通常这工作正常。但是有时候程序会闲置好几个小时,在这段时间内连接会关闭,程序会在下一次SQL访问时炸弹。.NET SQL Server连接过早关闭

数据库自动关闭参数已关闭。参数Pooling = False位于程序连接字符串中。在IIS中,对于每个应用程序池,已禁用了回收功能,并且空闲超时设置为9000分钟。

在目前为止的测试中,这种情况通常不会发生,但有时候并非如此。

+0

什么连接类型是您使用?我的建议是,您可以将ConnectionTimeout属性设置为0.其中,无限期建立连接。 – Smaug

+0

在需要使用它的方法内创建并打开一个新的连接对象几乎总是更好,使用它然后关闭它。你为什么禁用Pooling? –

+0

试图在字段中解决此旧版本问题;最新版本没错。由于IIS池管理器似乎正在关闭它,因此共享池被禁用。将尝试ConnectionTimeout。 – blearyeye

回答

0

做的是检查的连接状态,并在必要时打开它最简单的事情:

if(conn.State == ConnectionState.Closed)//Can't quite remember the exact syntax 
{ 
    conn.Open(); 
} 
//do DB stuff here. 
+0

它应该是'conn.State == ConnectionState.Closed' – Alejandro