No es una "bala de plata", pero casi...


Si alguna vez experimentáis problemas a nivel de la base de datos interna de cimplicity (como por ejemplo un error de "duplicate record" cuando modificáis una clase con objetos instanciados) puede deberse a que el servidor tiene restos de una configuración anterior (points o objetos mal borrados) que generan duplicidades al actualizar cambios en la configuración.


Esto no es un problema habitual, pero puede llegar a darse en configuraciones muy grandes, en las que los cambios son lentos y a veces nos hacen pensar que el Workbench se haya colgado (o simplemente que den fallo por la complejidad de los cambios a implementar).


Recientemente desde el equipo de soporte nos hemos con el problema, y la solución ha sido re-indexar los ficheros de configuración. De esta forma, hemos podido llegar a actualizar la clase (que era el cambio de configuración que estábamos intentando implementar). No ha sido necesario tener que borrar los objetos y re-importarlos, cosa que por cierto se intentó anteriormente y NO resolvió el problema.


La forma de hacer esto ha sido utilizando la instrucción "dcheck", que se lanza por línea de comando contra los diferentes ficheros *.idx a actualizar. En el caso nuestro, teníamos sospechas de que los registros duplicados podían estar en la configuración de datalogging, así que se lanzó los siguientes comandos

  • dcheck -b log_event
  • dcheck -b log_attrib
  • dcheck -b object
  • dcheck -b object_attrib
  • dcheck -b object_routing


Tras estos cambios, el problema quedó corregido y ya fue posible actualizar normalmente la clase


Temas a tener en cuenta:

  1. El proyecto debe estar parado
  2. Es imprescindible por seguridad tener un backup del proyecto antes de pasar el "dcheck"
  3. Tras pasar el "dbcheck", hay que cerrar CMD y Workbench. Cuando se re-abre Workbench, aplicamos un "Configuration Update" para que los cambios hechos a nivel interno queden plenamente vigentes


Todos los detalles en esta interesante technote de GE Digital:

https://digitalsupport.ge.com/s/article/Failure-to-Delete-Record?language=en_US


Cualquier duda al respecto, podéis contactar con nuestro equipo de soporte support@opertek.com, o abriendo un ticket en este mismo portal