添加重试LINQ2SQL查询

时间:2016-04-19 14:37:46

标签: c# sql-server exception-handling sqlexception

我有一个需要连接到亚马逊RDS托管的SQL Server数据库的C#应用​​程序。通常它会抛出错误

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

当它这样做时,它通常适用于下一次尝试。所以我想在我的应用程序中为查询添加一个程序化的“重试”。我认为这个(https://stackoverflow.com/a/4822976/1011724)看起来像是一个很好的模式。但是,该答案仅重试以下错误:

private enum RetryableSqlErrors
{
    Timeout = -2,
    NoLock = 1204,
    Deadlock = 1205,
    WordbreakerTimeout = 30053,
}

那么有没有办法简单地添加这个错误?如果是这样,错误代码是什么?看这里(https://msdn.microsoft.com/en-us/library/cc645611.aspx),没有错误40,也不是错误-1的确切措辞。

我的错误是SqlException吗?如果有的话是多少?如果没有,我如何调整上面链接的答案中的代码来解释这种类型的例外?

0 个答案:

没有答案