gpt4 book ai didi

c# - C#中SQL Server超时异常和SqlCommand超时异常的区别

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:27 26 4
gpt4 key购买 nike

我现在已经阅读了一些有关 SQL Server 超时异常的内容。我找到了这两个链接:

how to detect sql server timeout from .NET application without using catch Exception

How to catch SQLServer timeout exceptions

所以 -2 是客户端超时,当我理解正确时,可以将其用于服务器连接超时和命令超时。 -1 和 -3 是服务器网络错误。

现在。在 C# 中是否有可能捕获异常并区分服务器连接超时和命令超时?

非常感谢!

编辑:例如这里:

https://msdn.microsoft.com/en-us/library/cc645611.aspx

-2超时已过。在操作完成之前超时期限已过,或者服务器没有响应。 (Microsoft SQL Server,错误:-2)。

如何检测在 a) 操作完成或 b) 服务器未响应之前是否超时?这就是问题。

最佳答案

是的,你可以。请注意,当您的 DBMS 未响应您的应用程序调用时会发生连接超时,而命令超时表示 DBMS 已响应。事实上,它发送“失败”是为了让您的驱动器抛出异常。在命令超时中,它在连接超时时从服务器收到一个明确的错误代码,你的应用程序不知道发生了什么(也许有人拔了网线,也许服务器关闭了)但是驱动程序/框架的内部会告诉你什么使用数字属性发生。

下面的代码将查找异常编号属性并检查它是否是命令超时

try
{
//your .net C# code here
}
catch (SqlException ex)
{
if (ex.Number == -2 && (Regex.IsMatch(sqlEx.Message, "[tT]ime\-{0,1}out")) {
Console.WriteLine ("Command Timeout occurred")
};
}

您还可以解析异常文本以了解它何时是另一种命令错误,例如 FK 违规。只需做一个匹配“超时”字词的正则表达式。

引用文献:MSDN

MSDN Forum

How to catch SQLServer timeout exceptions

关于c# - C#中SQL Server超时异常和SqlCommand超时异常的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42222631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com