Hay momentos en que debe corregir datos en Prod que no existen en otros servidores. Esto no se debe solo a errores, sino que podría ser una importación de datos de un archivo enviado por un cliente que era incorrecto o un problema causado por alguien que hackeó su sistema. O por un problema causado por una mala entrada de datos. Si su base de datos es grande o tiene un tiempo crítico, es posible que no tenga tiempo para restaurar la última copia de seguridad y corregirla en el desarrollador.
Su primera defensa (¡y algo sin lo que ninguna base de datos Enterprise puede permitirse prescindir!) Son las tablas de auditoría. Puede usarlos para retroceder cambios de datos incorrectos. Además, puede escribir scripts para devolver los datos al estado anterior y probarlos en otros servidores mucho antes de que necesite revertir los datos auditados. Entonces, el único riesgo es que identificó los registros correctos para revertir.
A continuación, todos los scripts para cambiar los datos de producción deben incluir lo siguiente:
Deben estar en transacciones explícitas y tener un bloque TRY Catch.
Deben tener un modo de prueba que pueda usar para revertir los cambios después de ver cuáles habrían sido. Debería tener una declaración seleccionada antes de que se realizara el cambio y una ejecución después del cambio para asegurarse de que el cambio fuera correcto. El script debe asegurarse de que se muestre el número de filas procesadas. Tenemos algo de esto preconfigurado en una plantilla que asegura que las piezas se realicen. Las plantillas para cambios también ayudan a ahorrar tiempo al escribir la corrección.
Si hay una gran cantidad de datos para cambiar o actualizar, considere escribir el script para que se ejecute en lotes con confirmaciones para cada lote. No desea bloquear todo el sistema mientras arregla un millón de registros. Si tiene una gran cantidad de datos para corregir, asegúrese de que un dba o alguien que esté acostumbrado a la optimización del rendimiento revise el script antes de ejecutarlo y, si es posible, ejecutarlo fuera del horario laboral.
A continuación, todas las secuencias de comandos para cambiar cualquier cosa en la producción se revisan en código y se ponen en control de origen. Todos ellos, sin excepción.
Finalmente, los desarrolladores no deben ejecutar estos scripts. Deben ser ejecutados por dbas o un grupo de administración de configuración. Si no tiene ninguno de ellos, entonces solo las personas que son líderes tecnológicos o superiores deberían tener los derechos para ejecutar cosas en productos. Cuantas menos personas ejecuten cosas en productos, más fácil será localizar un problema. Las secuencias de comandos deben escribirse de modo que simplemente se ejecuten, no resalten partes y se ejecuten paso a paso. Es lo más destacado lo que a menudo causa problemas a las personas cuando se olvidan de resaltar la cláusula where.