備註
社群興趣小組現在已從 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
}
}