gpt4 book ai didi

.net - 是否可以使用 SqlException.LineNumber 来识别异常是否与连接相关?

转载 作者:行者123 更新时间:2023-12-02 18:14:49 25 4
gpt4 key购买 nike

我看了Transient Fault Handling Framework代码试图解决 temporary loss of connectivity to SQL Server 。这里有一个关键点:当出现与 SQL 相关的问题(如语法错误)和与 SQL 无关的问题(如无连接)时,都会抛出 SqlException

当然,我只需要尝试从后一类问题中恢复 - 如果我的代码运行格式错误的查询,我需要快速失败,而不是重试任何内容。

框架尝试通过检查SqlError.Number并将其与大量硬编码值进行比较来区分这些类。一旦 SQL Server 内部发生变化,基于此策略的知识和代码肯定需要维护。

我想也许我可以使用SqlException.LineNumber反而?根据 MSDN,行号从 1 开始,行号 0 意味着行号不适用,所以我猜这意味着问题与 SQL 无关。我尝试了一段时间 - 每当我遇到连接问题时 LineNumber 始终为零。

使用 SqlException.LineNumber 是识别异常是由于 SQL 查询问题还是由于连接问题引起的可靠方法吗?

最佳答案

我不相信您可以可靠地使用 LineNumber 属性作为异常是与连接相关的错误的指示符。当存储过程、触发器或函数期间发生错误时,将设置 LineNumber。但是,在这些项目之外的查询中,甚至在可能导致 LineNumber 为 0 的 SqlException 的 View 中,您仍然可能会遇到错误。最好的方法是使用您所描述的技术,使用 Number 属性与硬编码值集进行比较。

关于.net - 是否可以使用 SqlException.LineNumber 来识别异常是否与连接相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171922/

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