SQL-verbindingsfout X++ uitzondering

Notitie

Belangengroepen uit de gemeenschap zijn nu overgestapt van Yammer naar Microsoft Viva Engage. Om lid te worden van een Viva Engage community en deel te nemen aan de laatste discussies, vul je het formulier Request access to Finance and Operations Viva Engage Community in en kies de community waar je lid van wilt worden.

In dit artikel worden de uitzonderingstypen voor SQL-verbindingsfouten in X++ beschreven.

TransientSqlConnectionError X++ uitzondering

Tijdens een X++ SQL-query-uitvoering, wanneer er een tijdelijke SQL-verbindingsfout aan de serverzijde optreedt, treedt een TransientSqlConnectionError X++-uitzondering op. Afhankelijk van de toepassingsvereisten moet de toepassing de uitzondering opvangen en afhandelen.

Deze uitzondering doet zich meestal voor tijdens een grote transactie of wanneer de database onder grote verwerkingsdruk staat.

Je kunt de TransientSqlConnectionError-uitzondering niet vangen binnen de transactie. De X++-transactie die deze uitzondering tegenkomt, wordt geannuleerd ( ttsAbort) voordat de uitzondering optreedt. Dit gedrag betekent dat je de catchblock moet gebruiken om de tijdelijke SQL-verbindingsfout te identificeren in plaats van een generieke X++-fout. Probeer vervolgens opnieuw de buitenste transactie of probeer de applicatiecodelogica opnieuw in een nieuwe sessie. Met deze uitzondering kan de toepassing worden ontworpen voor tijdelijke serverfouten.

Als een applicatietransactie lang duurt om te verwerken, gebruik dan meerdere incrementele vertragingen om de TransientSqlConnectionError-uitzondering te vangen. Het opnieuw proberen van je applicatiecode in een nieuwe sessie is het meest waarschijnlijk succesvol nadat je de uitzondering hebt gevonden.

Voorbeeld

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