Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Los grupos de interés de la comunidad ahora se han movido de Yammer a Microsoft Viva Engage. Para unirse a una comunidad de Viva Engage y participar en las últimas discusiones, complete el formulario Solicitud de acceso a la Comunidad de Viva Engage de Finanzas y Operaciones y elija la comunidad a la que desea unirse.
En este artículo se describen los tipos de excepción de error de conexión SQL en X++.
Excepción de TransientSqlConnectionError X++
Durante la ejecución de una consulta SQL X++, cuando se produce un error de conexión SQL transitorio en el servidor, se produce una excepción TransientSqlConnectionError X++. Dependiendo de los requisitos de la aplicación, la aplicación debe detectar y gestionar la excepción.
Esta excepción suele ocurrir durante una transacción grande o cuando la base de datos está bajo mucha presión de procesamiento.
No se puede detectar la excepción TransientSqlConnectionError dentro de la transacción. La transacción X++ que encuentra esta excepción se cancela (llamando a ttsAbort) antes de que ocurra la excepción. Este comportamiento significa que debe usar el bloque catch para identificar el error de conexión SQL transitorio en lugar de una excepción de error X++ genérica. A continuación, vuelva a intentar la lógica de código de la aplicación más externa o vuelva a intentarlo en una nueva sesión. Esta excepción permite que la aplicación se diseñe para fallos transitorios del servidor.
Si una transacción de aplicación tarda mucho tiempo en procesarse, use varios retrasos incrementales para detectar la excepción TransientSqlConnectionError. Volver a intentar el código de la aplicación en una nueva sesión es más probable que se realice correctamente 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
}
}