我正在编程一个C#TCP服务。在此服务中,客户端连接到我们的TCP服务器 以获取或写入一些数据。C#持久连接到SQL Server
问题:
早上我们重启我们的数据库服务器和服务失去与 数据库的连接。当下一个请求进入我们的系统时,不再有数据库连接。
有人知道我能做什么吗?
如何在重新启动后保持或重新连接到数据库服务器?
我正在编程一个C#TCP服务。在此服务中,客户端连接到我们的TCP服务器 以获取或写入一些数据。C#持久连接到SQL Server
问题:
早上我们重启我们的数据库服务器和服务失去与 数据库的连接。当下一个请求进入我们的系统时,不再有数据库连接。
有人知道我能做什么吗?
如何在重新启动后保持或重新连接到数据库服务器?
在你的情况下,我认为最好不要在所有的服务生命期内维护一个到sql数据库的开放SqlConnection。
取而代之的是,实例化一个SqlConnection对象,打开它,处理您的查询,然后关闭它:它将使用SQL Server的内部机制connection pooling。
例如,可以在其打开和关闭的连接的代码块包围每个查询:
using(var cn = new SqlConnection(csString))
{
cn.Open();
... // your query
cn.Close();
}
通过这种方式,当重新启动数据库夜间,这将是透明的为您服务。
每次您需要在数据库上执行某些操作时,请创建并打开一个新连接。为什么你要保持一个持久连接?它解决了什么要求? – slugster 2013-02-25 13:41:52
我认为它需要更多时间来重新连接。但是现在我发现,由于连接池的原因,它不会产生很大的性能差异。 – MjeOsX 2013-02-25 14:42:47