如何超时"A network-related or instance-specific error occurred while establishing a connection to SQL Se



我使用的是sql server,有时我的数据库会因为维护而停机。我有错误处理代码,所以用户不会看到错误页面,相反,他们会看到一条友好的错误消息。我的问题是:当数据库关闭时,页面加载并显示错误消息需要非常长的时间。我认为这与超时属性有关,但使用更改它

command.CommandTimeout = 5;

connectionString中web.config中的Connect Timeout=5;似乎没有帮助,并且加载页面仍然需要很长时间(大约40秒)。有没有办法尽量减少这段时间?

抛出并记录的异常是

发生与网络相关或特定于实例的错误建立与SQL Server的连接。找不到服务器或无法访问。验证实例名称是否正确,以及SQL Server已配置为允许远程连接。(提供程序:TCP提供程序,错误:0-连接尝试失败,因为连接的当事人在一段时间后没有做出适当回应,或者连接失败,因为连接的主机无法响应。)

好的。

我会为所有的"数据访问层"类创建一个基类。

public class DataBaseLayer ()
{
public DataBaseLayer()
{ /* check for appSetting here and throw a SqlServerMaintenanceModeException exception (custom exception) */}
}

public class EmployeeDataLayer :  DataBaseLayer ()
    {
public EmployeeDataLayer() : base ()
}

在构造函数中,我会检查一个appSetting。。。表示"true"或"false"。。。。。。。。。并抛出CustomException

public class SqlServerMaintenanceModeException : ApplicationException

{}

将其放入DataBaseLayer的构造函数中。。。。。。然后让其他一切来处理。

那样。。。只有"数据库驱动"页面受到影响。

我不喜欢检查"超时"的一个小原因是。。

  1. 这有点不可预测
  2. 有时这是一个正常的例外。。。。。。。。。。。。。就像你网络上的一个开关断了一样。你将如何区分

我非常不喜欢模棱两可的例外情况。

如果服务器连接超时时间过长,请检查:

  • 连接字符串的类型(.NET提供程序、OLEDB或其他),它们可能对同一事物有不同的名称
  • 如果您真的正在使用有问题的连接字符串;您实际上可能使用了完全不同的连接字符串
  • 隔离你的try/catch超时块,只包装conn.Open()-这样你就知道打开连接需要太长时间;我并不是说你的异常不是指示性的,只是我不能100%确定所有的时间都只花在了conn.Open()上

相关内容

  • 没有找到相关文章

最新更新