SQL 連線錯誤 X++ 例外狀況

備註

社群興趣小組現在已從 Yammer 移到 Microsoft Viva Engage。 若要加入Viva Engage社群並參與最新討論,請填寫申請存取財務與營運Viva Engage社群表單,並選擇你想加入的社群。

本文說明 X++ 中的 SQL 連線錯誤例外狀況類型。

TransientSqlConnectionError X++ 例外狀況

在 X++ SQL 查詢執行中,當伺服器端發生暫時性 SQL 連線錯誤時,會發生 TransientSqlConnectionError X++ 例外。 視應用程式需求而定,應用程式應該攔截並處理例外狀況。

這種異常通常發生在大型事務期間或資料庫承受較大的處理壓力時。

你無法在交易中捕捉 TransientSqlConnectionError 的例外。 在異常發生之前,會取消遇到此異常狀況的 X++ 交易 (呼叫 ttsAbort)。 這種行為意味著你需要使用 catch 區塊來識別暫時性的 SQL 連線錯誤,而非一般的 X++ 錯誤例外。 接著,在新工作階段中重試最外層的交易或應用程式碼邏輯。 此例外狀況可讓應用程式針對暫時性伺服器失敗進行設計。

如果應用程式交易處理時間過長,請使用多次增量延遲來捕捉 TransientSqlConnectionError 的例外。 在新工作階段重試應用程式碼,最有可能成功是在你抓到例外之後。

範例

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
    }
}