Del via


X++-unntak for SQL-tilkoblingsfeil

Note

Interessegrupper for fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Denne artikkelen beskriver unntakstypene for SQL-tilkoblingsfeil i X++.

TransientSqlConnectionError X++-unntak

Når en midlertidig SQL-tilkoblingsfeil oppstår på serversiden, oppstår det et TransientSqlConnectionError X++-unntak under en X++ SQL-spørring. Avhengig av programkravene skal programmet fange opp og håndtere unntaket.

Dette unntaket oppstår vanligvis under en stor transaksjon eller når databasen er under mye behandlingstrykk.

TransientSqlConnectionError-unntaket kan ikke fanges opp i transaksjonen. X++-transaksjonen som støter på dette unntaket, avbrytes (kaller ttsAbort) før unntaket oppstår. Dette betyr at du må bruke fangstblokken til å identifisere den midlertidige SQL-tilkoblingsfeilen i stedet for et generisk X++-feilunntak, og deretter prøve den ytterste transaksjonen eller prøve programkodelogikken på nytt i en ny økt. Dette unntaket gjør at programmet kan utformes for midlertidige serverfeil.

Hvis en programtransaksjon tar lang tid å behandle, kan du bruke flere trinnvise forsinkelser til å fange opp unntaket TransientSqlConnectionError. Det er mest sannsynlig at du prøver programkoden på nytt i en ny økt etter at du har tatt unntaket.

Eksempel

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