Error de conexión SQL Excepción X++

En este artículo se describen los tipos de excepción de error de conexión SQL en X++.

Excepción TransientSqlConnectionError X++

Durante la ejecución de una consulta SQL X++, cuando ocurre un error de conexión SQL transitoria en el lado del servidor, se produce una excepción TransientSqlConnectionError X++. En función de los requisitos de la aplicación, la aplicación debe detectar y controlar la excepción.

Esta excepción suele producirse durante una transacción grande o cuando la base de datos está sometida a mucha presión de procesamiento.

No puedes detectar la excepción TransientSqlConnectionError dentro de la transacción. La transacción de X++ que encuentra esta excepción se cancela (llamando a ttsAbort) antes de que se produzca la excepción. Este comportamiento significa que necesitas usar el bloque de captura para identificar el error de conexión SQL transitorio en lugar de una excepción genérica de error X++. Luego, vuelve a intentar la transacción más externa o vuelve a intentar la lógica del código de la aplicación en una nueva sesión. Esta excepción permite que la aplicación se diseñe para errores transitorios del servidor.

Si una transacción de aplicación tarda mucho en procesarse, utiliza múltiples retrasos incrementales para detectar la excepción TransientSqlConnectionError. Volver a intentar el código de tu aplicación en una sesión nueva es lo más probable de éxito después de detectar la excepción.

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