jueves, 29 de diciembre de 2011

UpdateConflict tratando de actualizar un registro en Dynamics Ax 2009

Errores extraños que ocurren, cuando se intenta hacer la actualización de algun registro en Ax aparece el siguiente mensaje: 

Cannot edit a record in Projects (ProjTable).
An update conflict occurred due to another user process deleting the record or changing one or more fields in the record

En este caso es de la ProjTable pero puede ser cualquier tabla. El problema se presentó corriendo una instrucción update_recordset.

La solución, fue hacer un job, reemplazando el update_recordset por un while select forupdate ....
Luego, dentro del ciclo del while antes de iniciar a modificar los registros se puso la siguiente instrucción:

projTable.reread();

Quedando algo asi:

ttsbegin;
while select forupdate projTable...
...
{
    projTable.reread();
    .....
    projTable.update();
}
ttscommit;

Con esto se solucionó el problema, tambien se ejecutó luego el update_recordset y ya no tuvo problemas.

Espero que le sirva a alguien si se le presenta.


jueves, 13 de enero de 2011

Base de datos en modo 'Suspect'

Cuando una base de datos esta en modo 'Suspect', queda en modo no funcional, esto tiene muchas posibles causas, lo importante es poder volver a tener la base de datos funcional para continuar trabajando.

Para hacer se ejecutan los siguientes comandos desde el SQL Management Studio:


EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC checkdb(''yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER


Con esto, se logra volver a tener la base de datos funcional.