Errores falsos en Log al sincronizar base datos

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en Programacion, SQL Server, X++

En ocasiones cuando sincronizamos la base de datos de Dynamics AX 2012, nos encontramos que nos muestra una serie de errores.

001

 

Es posible que estos errores ya los hayas arreglados y te estén apareciendo siempre, esto es debido a que Dynamics AX 2012 guarda en la tabla SqlSyncInfo los errores que se ha encontrado en la sincronización, y cada vez que encuentra un error nuevo, va aumentando esta tabla.

En algunas ocasiones al arreglar un error, este no se borra de la tabla y al sincronizar vuelve aparecer.

La manera de arreglar esto es borrando esta tabla antes de sincronizar, para ello podemos utilizar el siguiente Job:

 

static void DAX_Borrado_SyncLog(Args _args)
{
    deleteTable('SqlSyncInfo');
 
    info( 'Log de la sincronización borrado');
}

Error TableId:%1, CurrentNextVal: %2, NewNextVal: %3

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en SQL Server

En algunas ocasiones me he encontrado que después de una caida del AOS de Axapta, debida algún error inesperado, al intentar insertar registros en una tabla nos muestra el siguiente error:

No se pueden asignar los números de secuencias a TableId:%1, CurrentNextVal:%2, NewNextVal: %3

Esto es debido a que por alguna extraña circustancia, en el momento de fallar el AOS, actualiza en la tabla systemSequences, como siguiente valor para el RecId, el número máximo permitido.
Ppodemos ver mediante la siguiente Select:

SELECT * FROM SYSTEMSEQUENCES ORDER BY NEXTVAL DESC

Donde podemos ver como para la Tabla 77 (CustTable), nos ha puesto como valor para el siguiente RecId 9223372036854775807, cuando el último RecId de nuestra tabla es 5637145355

Para arreglar este error, actualizaremos el campo NextVal, por el último RecId + 1 que tenga nuestra tabla, en este caso la tabla de Clientes.

UPDATE SYSTEMSEQUENCES SET NEXTVAL = 5637145356 WHERE TABID = 77

Optimización SQL Traza 4136

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en SQL Server

El mes pasado Microsoft liberó las actualizaciones acumulativas de Microsoft SQL Server 2008 Sp1 y SQL Server 2005 Sp3, las cuales contienen una importante actualización que mejora de forma muy considerable el rendimiento en los clientes que utilizan Axapta.

Siendo esta instalación altamente recomendable para todas aquellas personas que utilicen SQL Server con Dynamics AX.

Podemos obtener más información en el blog de Dynamics Ax Performance Team, y una explicación técnica en el siguiente enlace.

Error Maximum request length exceeded Reporting Services

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en SQL Server

En algunas ocasiones, nos podemos encontrar que al querer generar una subscripción o subir un informe en Reporting Services, el siguiente error:

 “Maximum request length exceeded"

El motivo de este error, es porque estamos intentando realizar una subscripción o subir un informe de más de 4 MB, ya que por defecto la propiedad MaxRequestLength tiene valor a 4 Mb

Para aumentar el valor de esta propiedad, tendremos que modificar el Web.config tanto del Report Server como del Reporta Manger, y cambiar la propiedad maxRequestLength bajo el elemento httpruntime a un valor mayor.

Ruta del Web.config en Report Manger

(%\Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportManager

Ruta del Web.config en Report Server

%\Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportServer

Una vez modificado este parámetro, tendremos que reiniciar el servicio de Reporting Services

Nota

Podemos obtener más información sobre este tema, en el siguiente link de Microsoft.

Crear indice RecId en tablas com ModifiedDateTime

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en SQL Server

En Dynamics Ax 2009, si utilizamos Microsoft SQL Server 2005 como motor de base de datos, tenemos que crear el indice por RecId en todas aquellas tablas que tengamos configurado los de Fecha y Hora de Creación / Modificación.

Esto es debido a que cada vez que realizamos un Insert o Update en la base de datos, cuando la tabla tiene activos estos campos, se ejecuta la siguiente sentencia SQL

SELECT CreatedDateTime From (nombre de la tabla) Where RecId = (recid) and DataAreaid = (dataAreaid)

Si no tenemos un indice por RecId, para una simple sentencia de actualización de un registro, SQL realiza un scan de toda la tabla, siendo esto un grave problema de rendimiento en tablas con muchos registros

Si utilizamos como motores de base de datos SQL 2008 u Oracle, este problema no lo tendremos, ya que el kernerl utiliza parámetros de tipo OUTPUT en las sentencias para obtener los valores de creación y modificación de base de datos, no siendo necesara la creación de un indice por RecId