SQL Server 2008:
Novedades para desarrolladores
Enrique Catalá (ecatala@solidq.com)
Solid Quality Mentors
http://www.solidq.com
http://blogs.solidq.com/es/elRinconDelDBA
http://ecatalab.blogspot.com
Solid Quality Mentors
• Son autores de la mayoría de los artículos de
SQL Server Magazine
• Dictan cientos de ponencias al año en
conferencias alrededor del mundo
• Han diseñado los cursos oficiales de
SQL Server 2005 (Relacional y BI)
• Han escrito casi un centenar de libros
• Son la mayor comunidad de Microsoft MVPs
del mundo con más de 50 de mentores
Data Compression
Query Optimization Modes
Resource Governor
Transparent Data Encryption
External Key Management
Data Auditing
Pluggable CPU
Streamlined Installation
Server Group Management
Enterprise System Management
Performance System Analysis
Upgrade Advisor
Partition Aligned Indexed Views
Backup Compression
Enterprise
Data
Platform
Dynamic
Development
Beyond
Relational
Pervasive
Insight
SQL Server Conflict Detection
Visual Studio Support
Synchronized Programming model
SQL Server Change Tracking
Entity Data Model
LINQ
Visual Entity Designer
Entity Aware Adapters
SSB Priorities & Diagnostics
CLR Improvement
Performance Data Collection
Extended Events
Database Mirroring Enhancements
ORDPATH
Large User Defined Types
DATE/TIME Data Types
Improved XML Support
Enterprise Reporting Engine
AS Time Series
VSTA Support for Script task
Declarative Management Framework Table Valued Parameters
Grouping Sets
AS Scalable backup tools
AS Dimension Design
Star Join Query Optimization
MERGE SQL Statement
Change Data Capture (CDC)
Virtual Earth Integration
GEOGRAPHY data type
GEOMETRY data type
Sparse Columns
Filtered Indexes
Integrated Full Text Search
FILESTREAM data type
Enhanced Data Visualization
Report Builder Enhancements
Better rendering for Word & Excel
Partitioned Table Parallelism
AS Query Optimizations
Data Mining Engine Improvements
IIS Agnostic Report Deployments
Best Practice Design Alerts
Data Compression
Resource Governor
Persistent Lookups
Scale-out AS
Data Profiling
AS Query & Writeback Perf
4Solid Quality Mentors
Agenda Desarrolladores
• Mejoras T-SQL
• Constructores de fila
• Parámetros de tabla
• Nuevos tipos de datos
– Fechas
– jerarquias
– FILESTREAM
– Espaciales
• Sentencia MERGE
• INSERT sobre DML
• Agrupación de conjuntos
(Grouping Sets)
• Dependencias
• Seguimiento de datos
• Captura de datos
modificados
• Seguimiento de
cambios
• Auditoría
• Consejos y bloqueos
• Service Broker
Mejoras T-SQL
• IntellisSense en el editor de consultas de
Transact-SQL
• Ventana de listado de errores
• Mejoras en DECLARE
• Operadores de asignación
– +=, -=, *=, /=, %=
• CONVERT
– Estilos para datos hexadecimales
• ALTER DATABASE para nivel de compatibilidad
– En lugar del procedimiento del sistema
sp_dbcmptlevel
Mejoras generales
5Solid Quality Mentors
Constructores de fila
• Nueva sintaxis para cláusula VALUE
– Ahora devuelve una tabla relacional con múltiples
filas
• Uso con la sentencia INSERT
– Para insertar múltiples filas como una operación
atómica
• Uso para definir una expresión de tabla virtual
Constructores de fila
6Solid Quality Mentors
Parámetros de tabla
• Escenarios
• Actualización en lotes del servidor
• Parámetros en lote para usar en consultas
• Pasar una tabla entre rutinas
• Migración de otras bases de datos
– Los datos almacenados son tabulares!
– Criterio común
– Gran cantidad de datos pasados desde el cliente al
servidor
– Aplicación de lógica de negocio antes de actualizar
datos de forma persistente
– Ej. Data mining, sistemas de inventariado, herramientas
ETL
Motivación
7Solid Quality Mentors
Parámetros de tabla
Introducción
8Solid Quality Mentors
• Simplificando el escenario
– Pasar tablas entre procedimiento, listas separada por comodín
– Y migración de otros gestores
– ¿Cómo se inserta CabPedido, y 3 LinPedido?
• Soluciones actuales
– Uso de arrays de parámetros, XML o blobs propietarios
– Re-ensamblado de filas en el lado servidor
• Lógica de programación compleja
• Bajo rendimiento debido a múltiples viajes de ida y vuelta
• Parámetros de tabla
– Tipo de datos definidos por el usuario para datos tabulares
– Paso de datos tabulares a
• Procedimientos almacenados y funciones
– Completo soporte desde el lado del cliente
Parámetros de tabla
• Empaquetado de lógica de negocio
– Mejor modelo de programación
– Procesamos transacciones en orden de llegada
– Mejor manejabilidad (procedimiento almacenado lo
puede hacer todo)
• Rendimiento
– Reducción de idas y vueltas al servidor
– Operaciones basadas en conjuntos
– Transporte de datos eficiente
Beneficios:
9Solid Quality Mentors
Parámetros de tabla
Rendimiento: comparación con otras tecnologías
10
Data Source Server Logic # of Rows Bulk TVP
File Direct Insert < 1000 X
File Direct Insert > 1000 X
File Complex < 1000 X
File Complex > 1000 X
Client Direct Insert < 1000 X
Client Direct Insert > 1000 X
Client Complex < 1000 X
Client Complex > 1000 X
File = entrada de un archivo de datos formateado en el servidor
Client = la entrada proviene de un proceso remoto
Direct Insert = una sentencia bulk insert singular
Complex = lógica adicional que no se puede manejar desde una sentencia bulk insert singular
Solid Quality Mentors
Mejoras en T-SQL
Nuevos tipos de datos
• Aplicaciones con una mejor gestión de
fecha/hora gracias a nuevos tipos de datos de
alta precisión:
datetime2 precisión 10ns
date solo fecha
Time solo hora
Datetimeoffset fecha-hora en UTC
• Permite abordar problemas complejos con UDTs
y UDAs más grandes
Tipos de datos espaciales
• Algoritmos planares (tierra plana)
y Geodésicos (globo terráqueo)
• Visualización de datos espaciales
con el Virtual Earth SDK
• Intercambio de información
espacial utilizando GML XML
• Integra los datos espaciales con
aplicaciones .NET
• Optimiza el rendimiento utilizando
índices espaciales
• Soporte de los partners para los
tipos de datos espaciales
47.6456,
-122.12551
Tipos de datos espaciales
• Almacena varios tipos:
– Puntos
– Cadenas lineales
– Polígonos
– Combinaciones de los anteriores
• Funciones espaciales
– Relaciones espaciales:
intersecciones, tangencias, etc.
– Construcciones espaciales:
intersección, unión, etc..
– Métrica: distancia, área
• Creación de una instancia:
declare @g geography
set @g =
geography::Parse(‘POINT
(47.6456 -122.12551)’)
• Crear una tabla:
create table T(id int,
region geography)
• Seleccionar datos:
select * from T where
region.STIntersects(@g)
= 1
Soporta los estándares OGC
Tipo de datos Geometry
Tipo de Datos Geography Modo de uso
Datos no estructurados
FileStream • Atributo de almacenamiento en
VARBINARY(MAX)
• Datos no estructurados
guardados directamente en
sistema de archivos NTFS
• Modelo de programación dual:
– T-SQL (como un BLOB SQL)
– API de Streaming de Win32
Streaming APIs con semántica
transaccional de T-SQL
• Consistencia transaccional
• Capacidad de gestión integrada
– Backup/restore
– Seguridad de SQL Server
• Limitado al tamaño del volumen
del sistema de archivos
Guarda BLOBs en DB
+ File System
Aplicación
BLOB
Base de Datos
Sentencia Merge
Introducción
19Solid Quality Mentors
• Inserción o actualización OLTP (UPSERT)
• Inserción o actualización en Data warehouse
• Sincronización con fuente
– insert/update/delete
MERGE <target>
USING (SELECT <expression> FROM <source>) <alias>
ON <intersection>
WHEN MATCHED
THEN <UPDATE | DELETE>
WHEN TARGET NOT MATCHED [AND <conditions>]
THEN <INSERT>
WHEN SOURCE NOT MATCHED [AND <conditions>]
THEN <UPDATE | DELETE>
26Solid Quality Mentors
Agenda Desarrolladores
• Mejoras T-SQL
• Constructores de fila
• Parámetros de tabla
• Nuevos tipos de datos
– Fechas
– jerarquias
– FILESTREAM
– Espaciales
• Sentencia MERGE
• INSERT sobre DML
• Agrupación de conjuntos
(Grouping Sets)
• Dependencias
• Seguimiento de datos
• Captura de datos
modificados
• Seguimiento de
cambios
• Auditoría
• Consejos y bloqueos
• Service Broker
INSERT sobre DML
• Habilidad para tener
– Sentencia INSERT que consuma resultados de un DML
– Filtrado en la salida de un DML con una cláusula where
• Mejora de la cláusula OUTPUT INTO <table>
• ¿Por qué?
– Historial de dimensiones lentamente cambiantes (lo
veremos mas a fondo en la sesión de BI)
– Vertido de secuencias de datos DML en una tabla
secundaria para post-procesado
Introducción
27Solid Quality Mentors
Agrupación de conjuntos
• Definición: un conjunto de columnas agrupadas
• Mejoras relativas a agrupación de conjuntos:
– Nueva cláusula ISO en GROUP BY
• GROUPING SETS, CUBE, ROLLUP
– Nueva función GROUPING_ID
• Identifica una asociación de agrupación de conjuntos
• Nueva sub cláusula permite un mejor
rendimiento con conjuntos de resultados
lógicamente equivalentes de múltiples de
consultas con GROUP BY
Introducción
29Solid Quality Mentors
Dependencias de objetos
Extensiones de catálogo
33
• Nueva vista de catálogo; reemplaza a sys.sql_dependencies
• Realiza seguimiento tanto de las que poseen esquema, como
las que no lo hacen
• Realiza seguimiento entre bases de datos y entre servidores
referenciados ( por nombre)
sys.sql_expression_dependencies
• Nueva función de administración dinámica; reemplaza
sp_depends
• Devuelve una fila para cada entidad referenciada por la entidad
dada
• Ej. Muéstrame todo los objetos referenciados por el PA
sys.dm_sql_referencing_entities
sys.dm_sql_referenced_entities
• Devuelve una fila por cada entidad que referencie a la entidad
dada
• Ej. Muéstrame todos los objetos que se romperían si borro la
tabla t1
Nueva función de administración dinámica;
reemplaza sp_depends
Solid Quality Mentors
Introducción al seguimiento de datos
• ¿Por qué estamos realmente interesados en los
cambios?
• Conocer las especificaciones del cambio es muy
valioso
– Qué cambió
– Cuándo se cambio
– Cómo se cambió
– Quién lo cambió
Entendiendo el cambio
34Solid Quality Mentors
Introducción al seguimiento de datos
• Provee interioridades a la raíz de las causas del
problema
• Cumple con regulaciones gubernamentales
• Mejora el proceso de toma de decisiones
• Ayuda a construir soluciones eficientes
Beneficios de entender las especificaciones de los cambios
35Solid Quality Mentors
Introducción al seguimiento de datos
• Depende! Algunos ejemplos:
– Seguimiento de datos
• Conocer sobre los estados intermedios es importante
– Seguimiento de envío de paquetes
• No necesitas saber todos los lugares por donde pasó
– Seguimiento de cuentas bancarias
• Quieres conocer cada cambio y quién lo hizo
– Seguimiento de ventas en el mercado
• Necesitas hacer seguimiento de llamada de teléfono
¿qué necesitas saber?
36Solid Quality Mentors
Introducción al seguimiento de datos
Cambiar atributos
37
• ¿Qué tipos de cambios necesitamos seguir
para responder las preguntas?Ámbito
• ¿Cuánta información histórica está disponible
para el cambio?
• ¿Son necesarios los estados intermedios?
Dato modificado
• Cantidad de información relativa al cambio
• ¿Quién hizo el cambio , como y cuándo?
Información del
cambio
• ¿Cuándo esta disponible la información del
cambio?
Disponibilidad
del cambio
Solid Quality Mentors
Introducción al seguimiento de datos
• Provee diferentes niveles de cambio de
información
• Puede ser intrusivo
– Seguimiento basado en triggers
– Columnas temporales
– Consultas con join
– Tablas adicionales para seguimiento de borrados
• El escenario de requerimientos varia!
– La misma forma de seguimiento a todo no es el mejor
planteamiento a la hora de construir soluciones de
este tipo
Métodos tradicionales de seguimiento
38Solid Quality Mentors
Introducción al seguimiento de datos
Características de seguimiento de datos en SQL Server 2008
39
• Información de seguimiento rica,
proveniente del log
Captura de
datos
modificados
• Ligereza a la hora de proveer seguimiento
de cambios
Seguimiento de
cambios
• Pequeño impacto a la hora de dar
información de auditoria
Auditoria de
SQL
Solid Quality Mentors
Agenda
• Mejoras T-SQL
• Constructores de fila
• Parámetros de tabla
• Sentencia MERGE
• INSERT sobre DML
• Agrupación de conjuntos
(Grouping Sets)
• Dependencias
40
• Seguimiento de datos
• Captura de datos
modificados
• Seguimiento de
cambios
• Auditoría
• Consejos y bloqueos
• Service Broker
Solid Quality Mentors
Captura de modificaciones de datos
Atributos
41
• Todos los cambios DML
• Información de cambios DDL para ALTER
TABLE
Ámbito
• Todos los cambios
• Todas los valores de columna
• Imagen de antes y después de la
actualización
Cambio de
datos
• Columnas actualizadas
• Tipo de operación
• Información transaccional
Información de
cambio
• Cambios asíncronos unos segundos
después del commit
Disponibilidad
del cambio
Solid Quality Mentors
Captura de modificaciones de datos
• Proceso de captura
– Lee el log de transacciones y rellena las tablas de
cambio
• Tablas de cambio
– Contienen los cambios de las tablas con seguimiento
– Esquema similar al objeto fuente
– Metadatos adicionales
• APIs de enumeración
– TVF(funciones de tabla)
– Usado para el acceso a los datos de seguimiento
Conceptos clave ( continuación)
42Solid Quality Mentors
Captura de modificaciones de datos
• Trabajo de agente de SQL
Server
– Aprovecha la infraestructura del
agente de lectura del log
– Consistencia transaccional en
caso de fallos
– Captura imágenes del log antes
y después
– El trabajo puede pararse para
minimizar el impacto en la fuente
• Trabajo de limpieza de
retención
– Purga las tablas con cambios
– Por defecto 72 horas
• Metadatos
– Proveen información sobre la
configuración CDC
Arquitectura
43Solid Quality Mentors
Captura de modificaciones de datos
• Dos funciones de tabla (TVFs)
– Para cada tabla modificada
– Permite consultas basadas en rangos
– Opción de filtrado de filas para el filtrado del conjunto
resultado
– La consistencia del conjunto resultado se garantiza
cuando se utilizan rangos temporales
Acceso a los datos modificados: base
44Solid Quality Mentors
Captura de modificaciones de datos
• Cuenta para sobrecarga de almacenamiento
adicional
– Las tablas de cambio residen en la misma BBDD
– El subsistema de discos tendrá que soportar el coste
adicional E/S
– Se minimiza el coste del seguimiento si solo se
realiza seguimiento a las tablas y columnas
necesarias
• Almacenamiento de tablas en
– Un grupo de ficheros aparte
– En un disco separado de los archivos de datos y de
los logs
Consideraciones de rendimiento
45Solid Quality Mentors
Captura de modificaciones de datos
Ejemplo de rendimiento
47
4,3
4,4
4,8
1 1,5 2 2,5 3 3,5 4 4,5 5
No CDC
CDC (capture stopped)
CDC (capture running)
tiempo de DML (en secs) para una carga mixta de 300.000 comandos
Solid Quality Mentors
Agenda
• Mejoras T-SQL
• Constructores de fila
• Parámetros de tabla
• Sentencia MERGE
• INSERT sobre DML
• Agrupación de conjuntos
(Grouping Sets)
• Dependencias
48
• Seguimiento de datos
• Captura de datos
modificados
• Seguimiento de
cambios
• Auditoría
• Consejos y bloqueos
• Service Broker
Solid Quality Mentors
Seguimiento de cambios
• ¿Qué filas han cambiado de una tabla?
– Solo necesitamos saber que fila ha cambiado
– No cuantas veces ha cambiado
– O los valores intermedios de los cambios
– Obtener el último dato directamente desde la tabla de
seguimiento
• ¿Ha cambiado una fila?
– Necesitamos saber de forma fiable si una fila ha
cambiado
– Necesitamos inmediatamente la información sobre
las modificaciones
Introducción
49Solid Quality Mentors
Seguimiento de cambios
• Todos lo cambios DML (Insert, Update, Delete)Ámbito
• Cambios netos – una fila ha cambiado y puedes
obtener los últimos datos
• Solo se almacenan las columnas de clave
primaria para identificar la fila
Cambio de
datos
• Operación (Insert, Update, Delete)
• Máscara de bit de columnas actualizadas
• Contexto definido por la aplicación
Información de
cambio
• Seguimiento inmediato mediante DML
Disponibilidad
del cambio
Atributos
50Solid Quality Mentors
Seguimiento de cambios
• Periodo de retención
– Determina la cantidad de datos sobre seguimiento de
cambios almacenada
– Especificado como parte de la configuración de
BBDD
– Tarea en background del motor para realizar las
limpiezas
– Los clientes deben sincronizarse con mas frecuencia
que el periodo de retención
• Información sobre configuración
– Disponible desde SSMS y vistas del catálogo
Administración
51Solid Quality Mentors
Auditoria
Introducción
54
• Nuevos objetos de configuración de auditoria
– Nueva configuración de auditoria por T-SQL
• Nuevos permisos para controlar la configuración de auditoria
– Ej. “ALTER ANY AUDIT”, “ALTER ANY AUDIT SPECIFICATION”
• Filtrado de auditoria basado en acciones, objetos y principales a
nivel de servidor y de BBDD
– Compatibilidad hacia atras para grupos eventos SQLTrace
– Audición para acciones Select, Insert, Update, Delete
• Cambios a Management Studio y SMO
Audit
Audit
Specification
Locations
File
Audit
Specification
App Log
Security Log
Solid Quality Mentors
Auditoria
• Intentos de login al servidor
• DML/Select
• DDL (Create, Alter, Etc)
• Permisos (Grant, Revoke, Deny)
Ámbito
• Todos los cambios para entidades
configuradas
• Todos los cambios para auditarlas a si
mismas
Datos
cambiados
• Qué acción ocurrió
• Cuándo ocurrió la acción
• Quién fue el responsable
• Dónde estaba el responsable de la acción
Información del
cambio
atributos
55Solid Quality Mentors
Bloqueos y consejos
• Nueva opción para ALTER TABLE
• Permite deshabilitar el escalado a nivel de tabla
– En tablas particionadas se pueden habilitar bloqueos
para escalar a las particiones
• En lugar de a la tabla completa
• Puede mejorar la concurrencia reduciendo la contención por
bloqueos
• Sugerencias: AUTO, TABLE y DISABLE
– Con disable podemos prevenir el escalado de
bloqueos en la mayoria de casos
Escalado de bloqueos
56Solid Quality Mentors
SQL Server 2008: Resumen
• Novedades para desarrolladores
– TSQL (merge, TVP), tipos de datos, compresión de
datos, filestream,…
57Solid Quality Mentors
Enrique Catalá
ecatala@solidq.com
http://blogs.solidq.com
http://ecatalab.blogspot.com