SQL 连接错误 X++ 异常

注释

社区兴趣团体现已从 Yammer 迁移到Microsoft Viva Engage。 若要加入 Viva Engage 社区并参与最新讨论,请填写 “请求访问财务和运营 Viva Engage 社区 ”表单,然后选择要加入的社区。

本文介绍 X++ 中的 SQL 连接错误异常类型。

TransientSqlConnectionError X++ 异常

在 X++ SQL 查询执行期间,当服务器端发生暂时性 SQL 连接错误时,将发生 TransientSqlConnectionError X++ 异常。 根据应用程序要求,应用程序应捕获并处理异常。

此异常通常在大型事务或数据库承受大量处理压力时发生。

暂时性SqlConnectionError 异常在事务中不可捕获。 在发生异常之前,遇到此异常的 X++ 事务将被取消(调用 ttsAbort)。 这意味着需要使用 catch 块来标识暂时性 SQL 连接错误而不是泛型 X++ 错误异常,然后在新会话中重试最外部的事务或重试应用程序代码逻辑。 此异常允许应用程序设计为暂时性服务器故障。

如果应用程序事务需要很长时间来处理,则可以使用多个增量延迟来捕获 TransientSqlConnectionError 异常。 在新会话中重试应用程序代码很可能在捕获异常后成功。

Example

public static void LargeTransactionWrapper()
{
    try
    {
        LargeTransaction();
    }
    catch (Exception::TransientSqlConnectionError)
    {
        info("Caught transient SQL connection error, ttslevel=" + int2Str(appl.ttsLevel()));
        // At this point, transaction is canceled
        // Code that indicates retry is possible
    }
    finally
    {
        // Do clean up
    }
}