Novedades sql server 2008 para developers

49
SQL Server 2008: Novedades para desarrolladores Enrique Catalá ([email protected]) Solid Quality Mentors http://www.solidq.com http://blogs.solidq.com/es/elRinconDelDBA http://ecatalab.blogspot.com

Transcript of Novedades sql server 2008 para developers

Page 1: Novedades sql server 2008 para developers

SQL Server 2008:

Novedades para desarrolladores

Enrique Catalá ([email protected])

Solid Quality Mentors

http://www.solidq.com http://blogs.solidq.com/es/elRinconDelDBA

http://ecatalab.blogspot.com

Page 2: Novedades sql server 2008 para developers

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

Page 3: Novedades sql server 2008 para developers

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

Page 4: Novedades sql server 2008 para developers

4 Solid 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

Page 5: Novedades sql server 2008 para developers

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

5 Solid Quality Mentors

Page 6: Novedades sql server 2008 para developers

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

6 Solid Quality Mentors

Page 7: Novedades sql server 2008 para developers

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

7 Solid Quality Mentors

Page 8: Novedades sql server 2008 para developers

Parámetros de tabla Introducción

8 Solid 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

Page 9: Novedades sql server 2008 para developers

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:

9 Solid Quality Mentors

Page 10: Novedades sql server 2008 para developers

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

Page 11: Novedades sql server 2008 para developers

Demo 03

-Mejoras T-SQL

-Constructores de filas

-Parámetros de tabla 11 Solid Quality Mentors

Page 12: Novedades sql server 2008 para developers

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

Page 13: Novedades sql server 2008 para developers

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

Page 14: Novedades sql server 2008 para developers

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

Page 15: Novedades sql server 2008 para developers

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

Page 16: Novedades sql server 2008 para developers

HierarchyID

• Hace fácil el guardar

datos y preguntar por

datos jerárquicos

• Optimizado para

representar árboles, que

son la forma mas común

de datos jerárquicos

– Extremadamente

compacto

Propiedades clave

17 © 2007 Solid Quality Mentors

/

/1 /2 /3

/1/1 /1/2

/1/1/1

/1/1/1/1

/3/1 /3/2

Page 17: Novedades sql server 2008 para developers

Mejoras en XML

• Mejoras en la capacidad de validación de esquemas

• Mejoras en el soporte de XQuery

• Mejoras en la realización de inserciones DML (Data Manipulation Language) en XML

• Soporte para validación lax

• Soporte completo de validación dateTime, time y date , incluso preservando información sobre zona horaria

• Mejorado el soporte para unión y listado de tipos

• Soporte para la sentencia “LET”

Puntos clave

18 © 2007 Solid Quality Mentors

Page 18: Novedades sql server 2008 para developers

Sentencia Merge Introducción

19 Solid 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>

Page 19: Novedades sql server 2008 para developers

Demo 04

Sentencia MERGE 20 Solid Quality Mentors

Page 20: Novedades sql server 2008 para developers

26 Solid 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

Page 21: Novedades sql server 2008 para developers

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

27 Solid Quality Mentors

Page 22: Novedades sql server 2008 para developers

Demo 05

INSERT sobre DML 28 Solid Quality Mentors

Page 23: Novedades sql server 2008 para developers

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

29 Solid Quality Mentors

Page 24: Novedades sql server 2008 para developers

Demo 06

Agrupación de conjuntos 31 Solid Quality Mentors

Page 25: Novedades sql server 2008 para developers

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

Page 26: Novedades sql server 2008 para developers

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

34 Solid Quality Mentors

Page 27: Novedades sql server 2008 para developers

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

35 Solid Quality Mentors

Page 28: Novedades sql server 2008 para developers

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?

36 Solid Quality Mentors

Page 29: Novedades sql server 2008 para developers

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

Page 30: Novedades sql server 2008 para developers

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

38 Solid Quality Mentors

Page 31: Novedades sql server 2008 para developers

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

Page 32: Novedades sql server 2008 para developers

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

Page 33: Novedades sql server 2008 para developers

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

Page 34: Novedades sql server 2008 para developers

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)

42 Solid Quality Mentors

Page 35: Novedades sql server 2008 para developers

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

43 Solid Quality Mentors

Page 36: Novedades sql server 2008 para developers

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

44 Solid Quality Mentors

Page 37: Novedades sql server 2008 para developers

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

45 Solid Quality Mentors

Page 38: Novedades sql server 2008 para developers

Demo 08

Captura de modificaciones de datos (CDC) 46 Solid Quality Mentors

Page 39: Novedades sql server 2008 para developers

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

Page 40: Novedades sql server 2008 para developers

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

Page 41: Novedades sql server 2008 para developers

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

49 Solid Quality Mentors

Page 42: Novedades sql server 2008 para developers

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

50 Solid Quality Mentors

Page 43: Novedades sql server 2008 para developers

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

51 Solid Quality Mentors

Page 44: Novedades sql server 2008 para developers

Demo 09

Seguimiento de cambios 52 Solid Quality Mentors

Page 45: Novedades sql server 2008 para developers

Seguimiento de cambios Performance: DML overhead

53

17%

11%

10%

11%

13%

5%

0% 10% 20%

DELETE

UPDATE

INSERT

10K Operations

Second Index Change Tracking

17%

11%

10%

36%

68%

38%

0% 20% 40% 60% 80%

DELETE

UPDATE

INSERT

10K Operations

Trigger-based Tracking Change Tracking

Solid Quality Mentors

Page 46: Novedades sql server 2008 para developers

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

Page 47: Novedades sql server 2008 para developers

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

55 Solid Quality Mentors

Page 48: Novedades sql server 2008 para developers

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

56 Solid Quality Mentors

Page 49: Novedades sql server 2008 para developers

SQL Server 2008: Resumen

• Novedades para desarrolladores

– TSQL (merge, TVP), tipos de datos, compresión de

datos, filestream,…

57 Solid Quality Mentors

Enrique Catalá

[email protected]

http://blogs.solidq.com

http://ecatalab.blogspot.com