29
Desarrollo con control de código contra SQL Server (300) Luís J. Morán Cuenca REL300013 DPA - Relacional [email protected] Enrique Catalá Bañuls Mentor – Relational engine MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer [email protected]

Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

  • Upload
    solidq

  • View
    790

  • Download
    4

Embed Size (px)

DESCRIPTION

http://summit.solidq.com/madrid/ Es una pregunta recurrente en todas nuestras intervenciones en clientes que tienen desarrollos propios. ¿Es posible encontrar una forma factible de desarrollar aplicaciones contra SQL Server, que tengan control del código fuente incluso a nivel de Base de datos? En esta sesión hablaremos de DACPAC, proyectos de bases de datos y SQL Server Data Tools que vienen con SQL Server 2012. Veremos como usar cada una de ellas en su integracion con soluciones para valorar cual de las opciones conviene mas a proyectos nuevos o existentes.

Citation preview

Page 1: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Desarrollo con control de código contra SQL Server (300)

Luís J. Morán Cuenca

REL300013

DPA - Relacional

[email protected] Enrique Catalá Bañuls

Mentor – Relational engine MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer

[email protected]

Page 2: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Problemática actual

Soluciones

Manuales

Automáticas

Desarrollo con ciclo de vida

Data-Tier Application component

SQL Server Data Tools

Conclusiones

Agenda

Page 3: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Las bases de datos no tienen tratamiento adecuado Se siguen tratando como entidades independientes aisladas

Las dependencias se gestionan manualmente

Los errores en código T-SQL se encuentran solo cuando se ejecuta dicho código

Múltiples aplicaciones hacen uso de la misma BBDD

Múltiples BBDD hacen uso entre ellas

Aplicaciones hacen uso de múltiples versiones de SQL Server

Problemática actual

Ciclo de vida

Page 4: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

1. La de los amantes del riesgo máximo

2. La de los que piensan que todo tiempo pasado fue mejor

3. SQL Server Data Tier Applications

4. Proyectos de base de datos

5. SQL Server Data Tools

Problemática actual

Soluciones

Page 5: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Sin desarrollo con control de código contra SQL Server

Sin control cambios en un SQL Server centralizado El que desarrolla el cambio es responsable de dicho

cambio

El que desarrolla el cambio se encarga de subir el cambio a pro

¿Entornos de desarrollo compartidos??¿Eso que eh lo que eh?

Soluciones

Amantes del riesgo máximo

Page 6: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Solo un punto de fallo ¿Qué pasa si un developer sube un cambio y olvida comentar el

drop column?

¿Cómo gestionamos las actualizaciones?

Grandes ideas acaban poniéndose en práctica Usemos consultas ad-hoc!!!!

Usemos ORM!!! ¿por qué hacer t-sql si ahora se lleva Entity Framework?

A la larga aparecen: Problemas de rendimiento

Sobrecostes mantenimiento

Paradas de servicio

Amantes del riesgo máximo

Las consecuencias

Y si ya unimos todo esto a una mala

política de backups…

Page 7: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Desarrollo con control de código contra SQL Server…a base de scripts

Se usa repositorio Source Safe…o incluso TFS pero “a modo de backup de scripts”

Gestion cambios de SQL Server centralizados El que desarrolla el cambio es responsable de dicho

cambio

El cambio se sube a un repositorio con control de código y hay un responsable de testing

Entornos de desarrollo compartidos Hay un responsable de testing que testea los cambios antes de subir

a producción

Soluciones

Todo tiempo pasado fue mejor

Page 8: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Los errores son pasados por alto ya que no saltan hasta haberse ejecutado

Son frecuentes retrasos de puesta a producción puesto que el desarrollo fuerza codificar con seguridad

IF EXISTS()/ALTER,…

Los entornos de desarrollo compartidos tienen capacidad limitada en ocasiones y se cae en tentación de no usarlos

Se prueba localmente y no se tienen los cambios de otros compañeros

¿Sincronización de esquemas? Mis compis reciben mi script y lo lanzan en sus entornos de prueba

(si, esos que no deberían tener local )

¿Despliegue? Ah, si…te refieres a lo de abrir el .sql y darle a F5…pero si falla, juanito es el que se encarga

Problemas de soluciones manuales

Page 9: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Problemática actual

Soluciones

Manuales

Automáticas

Desarrollo con ciclo de vida

Data-Tier Application component

SQL Server Data Tools

Conclusiones

Agenda

Page 10: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

No quiero mas responsabilidades, el despliegue que se haga solo

No quiero codificar más de lo imprescindible El código de verificación que se haga solo (if exists,…)

No quiero perder el tiempo copiando ficheritos Centralización de todos cambios en un único fichero/instalador

No quiero aprender otra herramienta! Entorno integrado con el que desarrollo mis aplicaciones

Roles diferenciados DBA-DBD que se encargue de la BBDD

Developer que se encarge de la aplicación cliente

Pero centralizados

Las mismas tools para ambos, pero distinta finalidad

Desarrollo con ciclo de vida

¿por qué?

Page 11: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

¿Es posible un ciclo de vida para DB Apps?

Desarrollo

Despliegue

Administración y mantenimiento

Sigue siendo habitual comunicación 0 entre developers y DBAs

RESPUESTA: SI!!! Y además desde hace tiempo

Desarrollo con ciclo de vida

Ciclo de vida

Page 12: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Database Project Proyectos de Visual Studio pensados para desarrollar la capa de datos

Visual Studio Professional como mínimo requerido

Server Project Proyectos de Visual Studio pensados para desarrollar modelados de

objetos a nivel de servidor y de la base de datos master

Visual Studio Professional como mínimo requerido

Data-tier Application Proyectos para implementar la capa de datos incluyendo partes de nivel

de servidor.

Compatible con SSMS y con VS.

Data Tools Evolución de Database Project.

Incluye lo mejor de Data-tier Applications y de database proyect

Compatible con Visual Studio, pero no requiere edición especial

Compatible también con SSMS

Desarrollo con ciclo de vida

Alternativas

Page 13: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

En el ciclo de vida, el Data-Tier application component nos ayuda a la hora desde el punto de vista de desarrollo

Data Tier Application Component

Desarrollo

• No se puede capturar información del desarrollo

• Diseño de DB diferente entre Dev y DBA

• Dificultad para empaquetar la aplicación DB

Desarrollo

• La información del esquema de BBDD se captura automáticamente, asi como sus cambios

• Se utiliza el diseño de base de datos, que se distribuye

• Empaquetado de aplicación en un único fichero .dacpac

Solucionado por…

Page 14: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

En el ciclo de vida, el Data-Tier application component nos ayuda a la hora desde el punto de vista de despliegue

Data Tier Application Component

Despliegue

• Difícil centralizar y

controlar el despliegue

• Políticas de despliegue

para diferentes

versiones

• Comprobar y

mantener restricciones

de despliegue

• DBA no conoce la App

DB

Despliegue

•Despliegue mediante un único fichero autoejecutable .dacpac

•Control de despliegue automático independiente de instancia

•Control de cambios en tiempo de despliegue automático

•DBA no necesita conocer cambios y DEV no necesita conocer BBDD

Solucionado por…

Page 15: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Data Tier Application Component

Diagrama de despliegue

Page 16: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Modelo casi completo de una aplicación de base de datos Esquemas, tablas, procedimientos almacenados

Información referenciada

Políticas de despliegue

Empaquetado en un solo archivo .dacpac Mejora la comunicación entre Desarrollador y DBA

Contiene la forma deseada al desplegar la aplicación

Control de versiones (TFS)

Integrado en VS 2010 y SQL08 R2

Data Tier Application Component

DAC

Data-Tier Application Component (DAC)

Esquema

Perfil de despliegue Requisitos, Políticas de despliegue

Lógico

Tablas, Vistas, Claves,

Procedimientos

Físico

Usuarios, Logins,

Índices

Page 17: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

No se retiene información sobre ficheros Se puede registrar y extraer info de BBDD que use filegroups

Al registrar la BBDD se crea

Con 1 único fichero y filegroup (mejorado )

Con tamaño inicial 3Mb y crecimiento de 1Mb

Si se genera un DACPAC desde SQL 2012, no se puede importar hacia versión inferior

Nombre de BBDD máximo 87 caracteres

Tamaño .dacpac <=50Mb

Data Tier Application Component

Restricciones

Page 18: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Los siguientes objetos no se soportan Objetos CLR y tipos de datos CLR Incluyendo geometry, geography y Hierarchyid

Partitionado (ni esquemas ni funciones) Filestream Linked servers Objetos con accesos cross-database XML schema, XML indexes Cifrado (claves simétricas/asimetricas ó certificados) Ni tampoco objetos cifrados

User defined aggregates Service broker Triggers DDL Roles de aplicación FTS catalogs Extended stored procedures Propiedades extendidas Sinónimos Objetos marcados deprecados

Data Tier Application Component

Restricciones

Page 19: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Data Tier Application Component

Restricciones

Operación SQL2012 SQL 08 R2 SQL

Azure

SQL 08 SQL 05 SQL

2000

Borrar SI SI SI

>=SP2 No No

Desplegar SI SI

SI

>=SP2 No No

Extraer SI SI

SI

SI

SI

SI

Registrar SI SI

SI

>=SP2 No No

Actualizar SI SI

SI

>=SP2 No No

Operaciones

Cliente SI SI

SI

No No No

Page 20: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Problemática actual

Soluciones

Manuales

Automáticas

Desarrollo con ciclo de vida

Data-Tier Application component

SQL Server Data Tools

Conclusiones

Agenda

Page 21: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

SQL Server Data Tools

Page 22: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

¿Qué es?

SQL Server Data Tools

Integra Proyectos BIDS

Entorno de Desarrollo Completo

Configuración Todas Propiedades BBDD

Nuevas Capacidades y Mejoras

Page 23: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

SQL Server Data Tools

Novedades

Editor T-SQL “Enriquecido”

Page 24: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

SQL Server Data Tools

Inicialización de Proyectos

Importar desde Script

Page 25: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

SQL Server Data Tools

Page 26: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

DEMO DEMO SQL Server Data Tools

Page 27: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

¿Qué tipo de futuro esperas para tu app?

Conclusiones

Comparativa final R

iesg

o

Esfuerzo

Page 28: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Problemática actual

Soluciones

Manuales

Automáticas

Desarrollo con ciclo de vida

Data-Tier Application component

SQL Server Data Tools

Conclusiones

Agenda

Page 29: Desarrollo con control de código contra SQL Server | SolidQ Summit 2012

Si quieres disfrutar de las mejores sesiones de

nuestros mentores de España y Latino América,

ésta es tu oportunidad.

http://summit.solidq.com/madrid/

Síguenos: