AHORA Actualizador es la herramienta que nos permite actualizar una base de datos de una versión anterior a una versión posterior. Siempre se recomienza que la versión a la que vamos a actualizar sea la última liberada por el Fabricante.
Consideraciones previas
El proceso de actualización es un proceso delicado, pues se están adaptando las estructuras de datos de la base de datos de la versión antigua a la nueva estructura definida en la versión posterior. Por ello si el proceso se interrumpe por cualquier motivo (falta de espacio en disco, problemas de red, …) la base de datos a actualizar se va a quedar en un estado incorrecto. Se deberá repetir el proceso con la copia que previamente hayamos realizado.
El paso previo del actualizador es comprobar si existe alguna inconsistencia de datos importante en la base de datos a actualizar. Inconsistencias como que existan claves ajenas que apuntan a datos inexistentes o que no existan los registros 0 de algunos maestros. Todas las inconsistencias de datos que se encuentren en este paso se deben corregir para asegurar el correcto funcionamiento de AHORA ERP. Para subsanar las posibles inconsistencias es necesario tener conocimientos de TransactSQL.
Es imprescindible contar con:
· Última versión del actualizador (el que viene con la versión de destino).
· Base de datos vacía de la versión a la que vamos a actualizar. A esta base de datos la llamaremos VACIA_[VERSION] cuando la restauremos.
· Base de datos del cliente sobre la que realizaremos la actualización.
· El equipo desde donde se va a realizar el proceso de actualización debe contar con:
- Espacio suficiente disponible, se recomienda, que tenga 7 veces lo que ocupa la base de datos a actualizar.
- Memoria RAM: recomendable como mínimo 16GB.
Primeros pasos
Recomendable: Reiniciar el Servicio SQL
Siempre que sea posible, y sobre todo cuando el tamaño de la base de datos sea muy grande, es recomendable hacer un reinicio del servicio de SQL Server antes de proceder a la actualización. Esto produce una liberación de recursos que sin duda agilizará la actualización de la base de datos.
Copia de seguridad de la base de datos a actualizar
El primer punto y más importante, es crear una copia de seguridad de la base de datos que vamos a actualizar. Esta copia debemos preservarla, al menos, hasta asegurarnos de que el proceso de actualización ha sido satisfactorio.
Dicha acción es tan importante debido a que el proceso de actualización puede terminar incorrectamente debido a algunos de los aspectos indicados en el apartado “consideraciones previas”. Si tenemos una copia de seguridad de la base de datos de producción podamos tener acceso a la base de datos antes de su actualización. Para ello, a través del SQL Server, hacer clic con el botón derecho sobre la base de datos en concreto, hacer clic en “Tareas” à “Copia de seguridad”.
Se recomienda que el proceso de actualización siempre se ejecute previamente sobre una copia de seguridad de la base de datos del cliente. Una vez realizado correctamente el proceso de actualización pasaremos a actualizar la base de datos que está en producción. Para ello será necesario coordinar con el cliente fecha y hora para asegurarnos de que no hayan usuarios conectados a la base de datos cuando vayamos a actualizar.
Restaurar base de datos vacía
Como segundo paso señalamos la restauración de la base de datos vacía de la versión a la cual queremos actualizar. Se recomienda que esté restaurada en la misma instancia de SQL donde se encuentre la base de datos que queremos actualizar. Esta base de datos la restauramos bajo el nombre VACIA_[VERSION].
Para restaurar una base de datos, se tomará la base de datos vacía de la versión que se quiere actualizar, se descomprime y el archivo .bak se guardará en una carpeta local al servidor.
Desde el SQL Management Studio, teniendo seleccionada la carpeta bases de datos seleccionamos la opción “Restaurar base de datos” obtenida a través del menú contextual y se procederá a restaurar la base de datos.
NOTA: Desde la versión 4.4.2100 el modo de generar una base de datos vacía es ejecutando Ahora Install. Consulta aquí las opciones a usar del instalador.
Restringir el acceso a la base de datos
Antes de lanzar el proceso de actualización de la base de datos que está en producción, la base de datos no tiene que estar en uso. Es decir, no debe haber nadie trabajando con la base de datos que se va a actualizar. Para ello, además de avisar a todos los usuarios de que no estén conectados, (se pactará una fecha y hora concreta para proceder a actualizar), restringiremos el acceso a la base de datos de la siguiente forma:
Seleccionamos desde el Management Studio la base de datos operativa, la que vamos a actualizar y mediante el botón derecho obtenemos elegimos la opción del menú contextual propiedades. En el formulario que aparece seleccionamos la página opciones y vamos al grupo estado donde la propiedad restringir acceso la modificamos a: “RESTRICTED_USER”
Esto hace que la base de datos solamente sea accesible para usuarios pertenecientes al grupo sysadmin (sa) así como cortar las conexiones que tenga a esa base de datos del resto de usuarios.
Orden de los triggers
A veces por alguna programación especial y personalizada que tenemos en la base de datos es necesario ordenar los triggers de una cierta forma para ello se usan instrucciones como la que exponemos a continuación:
sp_settriggerorder 'Pers_NombreTrigger_ITrig', 'Last', 'INSERT'
Al actualizar la base de datos este orden inicial desaparece puesto que el actualizador desconoce el orden intermedio de los triggers y por este motivo y otros similares tenemos implementada la tabla zActualizador_Scripts_Clientes la cual nos permite insertar un registro con el campo Actualizador=0 para que cuando restaure los scripts de cliente ejecute a continuación las sentencias que aquí se han introducido. Estos registros al tener esta marca no se borran de la tabla como sí que ocurre con los que tienen el valor Actualizador=1. Estos registros los inserta y elimina el programa actualizador en sus operaciones internas.