Mejores prácticas en el desarrollo para SQL Server Mario Roa Miguel Egea Fernando G. Guerrero Danysoft Ingeniero de Sistemas m.roa@danysoft.com Solid Quality Learning Iberoamericana MVP SQL Server megea@solidq.com Solid Quality Learning Iberoamericana CEO fguerrero@solidq.com 1
¿Buenas prácticas? ¿y si no las sigo qué? Te juro que en la oficina funcionaba ¡Claro! Es que el usuario tiene que ser sa Bueno, es que en España la fecha se pone dd/mm/yyyy ¿Añadir una columna a la tabla clientes? ¿te has vuelto loco? ¿Entonces esto del ciclo de vida va a ser verdad?
Agenda Gestión del código fuente de BBDD Gestión del esquema Comparaciones de objetos Pruebas en base de datos Generación e implementación Más buenas prácticas
Gestión del código fuente de BBDD Antes de DBPro Edition Ningún control, producción siempre tiene lo último Copias del esquema en el control de versiones Tratamiento especializado (DBA)
Gestión del código fuente de BBDD Después de DBPro Edition Datos en producción Esquema en DBPro Control de cambios más sencillos Checkin vs Shelve El papel del DBA
Gestión del Esquema Importación del esquema Organización del esquema Ingeniería inversa (1 vez) Esquemas en .SQL (n veces) Organización del esquema Por tipo de objeto Por esquema Tareas pre y post deployment Refactoring ¡Más de un fichero por objeto!
Comparaciones de objetos Comparación de esquemas Con o sin un proyecto DB Pro abierto Diferencias en BBDD Generación de script de diferencias Aplicado inmediatamente Actualización, creación y borrado de objetos
Team System DBPro 8
Pruebas en base de datos Pruebas de carga ¿con que datos? Datos de producción ¿Qué pasa con los datos sensibles Datos inventados ¿Es suficiente con meter muchos millones de registros? ¿Qué pasa con la integridad referencial?
Pruebas en la base de datos Pruebas unitarias Tipos Script Anterior Prueba Script posterior Pre-condiciones Post-condiciones
Generación e implementación Consolidación de varios scripts Mediante MSBuild Por tanto compatible con Team Build si se usa Team foundation
Más buenas prácticas Vistas y vistas indexadas Procedimientos almacenados ¿para qué? Triggers DDL y DML ¿Service broker en mis aplicaciones?
Optimizar para el rendimiento 13
14