102 - SQL 2008 - Transact-SQL News ES

Embed Size (px)

Citation preview

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    1/99

    SQL Server 2008

    Novedades en Transact-SQL

    SQL Server 2008 Boot Camp Da 1

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    2/99

    Informacin sobre versin Beta

    Toda la informacin es relativa a la beta pblicaCTP5 de SQL Server 2008

    Comandos y funcionalidades pueden diferir dela versin RTM final

    2Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    3/99

    Agenda

    Mejoras T-SQL Constructores de fila Parmetros de tabla Sentencia MERGE

    INSERT sobre DML Agrupacin de conjuntos

    (Grouping Sets) Dependencias

    3

    Seguimiento de datos Captura de datos

    modificados Seguimiento de

    cambios Auditora

    Consejos y bloqueos Service Broker

    Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    4/99

    Mejoras T-SQL

    IntellisSense en el editor de consultas deTransact-SQL Ventana de listado de errores Mejoras en DECLARE Operadores de asignacin

    +=, -=, *=, /=, %=

    CONVERT Estilos para datos hexadecimales

    ALTER DATABASE para nivel de compatibilidad En lugar del procedimiento del sistema

    sp_dbcmptlevel

    Mejoras generales

    4Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    5/99

    Mejoras T-SQL

    Caractersticas Finalizacin de palabras Sentencias resumen (outline statements) Subrayado de errores

    configurable Cuando no est disponible?

    Existe un cdigo de error sobre el cursor

    Estas dentro de un comentario Estas dentro de una cadena literal Las opciones automticas estn desactivadas

    Intellisense

    5Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    6/99

    Demo 01

    Mejoras T-SQL6Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    7/99

    Constructores de fila

    Nueva sintaxis para clusula VALUE Ahora devuelve una tabla relacional con mltiples

    filas

    Uso con la sentencia INSERT Para insertar mltiples filas como una operacin

    atmica

    Uso para definir una expresin de tabla virtual

    Constructores de fila

    7Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    8/99

    Demo 02

    Constructores de fila8Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    9/99

    Parmetros de tabla

    Escenarios Actualizacin en lotes del servidor Parmetros en lote para usar en consultas Pasar una tabla entre rutinas Migracin de otras bases de datos

    Los datos almacenados son tabulares! Criterio comn

    Gran cantidad de datos pasados desde el cliente alservidor

    Aplicacin de lgica de negocio antes de actualizardatos de forma persistente

    Ej. Data mining, sistemas de inventariado, herramientasETL

    Motivacin

    9Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    10/99

    Parmetros de tabla

    Soluciones actuales Uso de arrays de parmetros, XML o blobs

    propietarios Re-ensamblado de filas en el lado servidor

    Lgica de programacin compleja Sin soporte para operaciones de conjuntos Bajo rendimiento debido a mltiples viajes de ida y vuelta

    Parmetros de tabla

    Tipo de datos definidos por el usuario para datos tabulares Paso de datos tabulares a

    Procedimientos almacenados y funciones

    Completo soporte en la pila del cliente

    Introduccin

    10Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    11/99

    Parmetros de tabla

    Procedimientos almacenados Procesa transacciones de negocio completas Un procedimiento hace todo en orden de llegada

    Mejor modelo de programacin Programacin simple Mejor rendimiento a travs de reduccin de viajes de

    ida y vuelta

    Mejor manejabilidad Mejor lgica de negocio en procedimientos almacenados

    Beneficios: empaquetado de lgica de negocio

    11Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    12/99

    Parmetros de tabla

    Tipo de datos seguro Tipos de datos intercambiados con el servidor Informacin de tipos compleja

    En contraste con los parmetros escalares o los

    parmetros de array Informacin de esquema esparcido por mltiples parmetros ej. CustomerID, CustomerName, etc.

    No se puede descubrir el tipo de datos ej. CustomerTableType

    Soluciones tpicas Cadenas separadas por comas o XML Cdigo complejo para capturar la solucin Impactos de rendimiento

    Beneficios: tipado fuerte

    12Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    13/99

    Parmetros de tabla

    Reduccin de los viajes de ida y vuelta alservidor Puede enviarse datos potencialmente sueltos Transporte de datos muy grande

    Envo de mltiples lotes usando TVPs para conseguir unbuen balance entre concurrencia y rendimiento

    Operadociones basadas en conjuntos Ejecutar lgica de negocio en el servidor

    Transporte de datos eficiente El cliente puede especificar rdenes ordenadas por

    clave nica para mejora de la optimizacin de laconsulta

    Beneficios: rendimiento

    13Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    14/99

    Parmetros de tabla

    Tipos de tabla definidos por usuario Un nuevo tipo definido por el usuario Alineado con la definicin de tabla inline para tablas

    variables

    Sintaxis basada en CREATE TYPE Se puede usarse para la declaracin de variables de

    tabla Se puede definir ndices y restricciones

    Nueva vista catalogada para tipos de datos tablaSys.table_types

    Detalles del tipo de datos Tabla

    14Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    15/99

    Parmetros de tabla

    Table Valued Parameter (TVP) Parmetros de tipo Table Type

    Entrada de parmetros para Procedimientos almacenados

    funciones Es necesario definirlo como READONLY Se necesita permiso REFERENCES en el tipo de

    tabla

    Su mbito es el cuerpo del procedimiento o funcin Sin soporte para CLR

    Las TVPs no se pueden pasar como parmetros aprocedimientos/funciones del CLR

    Detalles de TVPs

    15Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    16/99

    Parmetros de tabla

    Actualizaciones por lotes en el servidor Aplicacin de lgica de negocio antes de modificar

    las tablas persistentes

    Parmetros por lotes usados en consultas Operadores orientados a conjuntos sobre datos

    persistentes

    Pasar datos de tabla entre subrutinas Actualmente solo es posible usar tablas temporales

    Migracin de otras bases de datos Los desarrolladores de Oracle se quejaban de esto

    Escenarios de uso

    16Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    17/99

    Demo 03

    Parmetros de tabla17Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    18/99

    Parmetros de tabla

    Soporte desde todos los tipos de cliente ADO.Net Dentro de .NET 3.5 (Visual Studio 2008)

    SNAC: ODBC & OLEDB

    HTTP: SOAP Datos de tabla enlazados a memoria como parmetro

    Pasar datos de fila al proveedor

    Soporte: soporte a pilas cliente

    18

    ADO.NET ODBC OLE DB

    SqlParameter ahora aceptaDataTable

    Array de buffers lincado a losarrays de parmetros anlogos

    Introducido IRowset que soportabuffering

    ADO.NET ODBC OLE DB

    DbDataReader e IEnumerable

    Creado en el paradigma data-at-execution

    IRowset especfico deaplicacin

    Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    19/99

    Parmetros de tabla

    Herramientas Soportado desde SSMS Soporte SMO Soporte del Profiler con Replay

    Replicacin La replicacin soporta SPs que contienen TVPs

    Replicacin de tipos de datos tabla

    Soporte: soporte de herramientas y replicacin

    19Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    20/99

    Parmetros de tabla

    Se comporta como un BCP dentro del servidor

    Basado en tablas temporales Puede beneficiar el cacheo de tablas temporales

    Paso de gran cantidad de datos al servidor Menor viajes de ida y vuelta

    Optimizaciones en TDS

    Rendimiento

    20Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    21/99

    Parmetros de tablaRendimiento: comparacin con otras tecnologas

    21

    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 servidorClient = la entrada proviene de un proceso remotoDirect Insert = una sentencia bulk insert singularComplex = lgica adicional que no se puede manejar desde una sentencia bulk insert singular

    Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    22/99

    Parmetros de tabla

    No se mantienen estadsticas en columnas deTVPs Soporte solo para parmetros de entrada

    Han de ser pasados como READONLY

    TVPs no pueden utilizarse como destino de SELECT INTO (pueden usarse como fuente) INSERT EXEC (pueden aparecer en el cuerpo)

    Restricciones

    22Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    23/99

    Sentencia Merge

    Nueva sentencia MERGE Tambin conocida como UPSERT (que tambinsoporta deletes)

    Lgica de combinacin para operaciones atmicas

    para INSERT UPDATE DELETE

    Llevar a cabo manipulaciones de datos contra Una tabla singular Una tabla fuente (o expresin de tabla)

    Concordante al SQL 2006 (con extensiones)

    Introduccin

    23Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    24/99

    Sentencia Merge

    Insercin o actualizacin OLTP (UPSERT) Insercin o actualizacin en Data warehouse Sincronizacin con fuente

    insert/update/delete

    Escenarios MERGE

    24Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    25/99

    Sentencia Merge

    Sentencia MERGE

    Vistazo a la sintaxis

    25

    MERGE

    USING (SELECT FROM)

    ON

    WHEN MATCHED

    THEN

    WHEN TARGET NOT MATCHED [AND ]

    THEN

    WHEN SOURCENOT MATCHED [AND ]THEN

    Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    26/99

    Sentencia Merge

    MERGE INTO Tabla objetivo USING

    Tabla fuente (o expresin de tabla)

    ON Definicin de predicado similar al join

    Componentes: fuente y objetivos

    26Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    27/99

    Sentencias Merge

    WHEN MATCHED [AND] Sentencia para lanzarse cuando se encuentra unaconcordancia en el objetivo

    WHEN [TARGET] NOT MATCHED [AND]

    Sentencia a lanzarse cuando no se encuentraconcordancia en el objetivo

    WHEN SOURCE NOT MATCHED [AND] Sentencia a lanzarse cuando no se encuentra

    concordancia en el origen

    Usar $action con la clusula OUTPUT paraconseguir accin

    Componentes: concordancia en predicados y acciones

    27Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    28/99

    Demo 04

    Sentencia MERGE28Solid Quality Mentors

    S i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    29/99

    Sentencia Merge

    El destino no puede ser Una tabla remota Puede lanzarse contra un servidor remoto mediante

    EXECUTE AT

    Vista particionada No est soportado Parametrizacin SIMPLE

    Solo se soporta FORCED

    Uso del hint USE PLAN no est soportado

    (todava) Solo se reportan el n de filas acumulados

    Sin desglose por INSERT, UPDATE y DELETE

    Limitaciones

    29Solid Quality Mentors

    S i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    30/99

    Sentencia Merge

    Los triggers relevantes de INSTEAD OF y AFTER seactivan segn las acciones de la sentencia MERGE WHEN NOT MATCHED THEN INSERT

    activacin de triggers insert

    WHEN MATCHED THEN DELETE

    activacin de triggers delete

    Las tablas inserted y deleted solo contienen lainformacin relevante para la accin

    Ejemplo: En un trigger INSERT, las inserciones solo contienenfilas procesadas por la clusula WHEN NOT MATCHED THENINSERT

    Triggers

    30Solid Quality Mentors

    S i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    31/99

    Sentencia Merge

    Los triggers estn asociados a sentencias DML mltiplesse lanzan una vez por cada coincidencia Ej: Un trigger para insert y update se lanzan dos veces en una

    sentencia MERGE que contiene acciones INSERT y UPDATE

    Los triggers INSTEAD OF han de existir para todas opara ninguna de las acciones incluidas en la sentenciaMERGE

    No existen nuevos triggers especficos para MERGE La lgica de negocio, restricciones y reglas se valida como

    siempre No necesitamos escribir nuevos triggers cuando usamos

    MERGE

    Triggers (continuacin)

    31Solid Quality Mentors

    S i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    32/99

    Sentencia Merge

    La sentencia UPDATE pueden ser no determinstas Si un UPDATE contiene un join uno a muchos entre una fuentey un objetivo, se elige una estrategia random

    El resultado es dependiente del plan de ejecucin y nodeterminista

    MERGE es determinista Restringe mltiples actualizaciones en la misma fila Lanza un error de ejecucin cuando intenta:

    Actualizar una fila mas de una vez

    Actualizar y borrar la misma fila El comportamiento es predecible y consistente con otros

    vendedores Intentos repetidos de borrar la misma fila se ignoran

    Actualizaciones no determinsticas

    32Solid Quality Mentors

    S t i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    33/99

    Sentencia Merge

    El plan de consulta une (join) fuente y destino Unin optimizado como una consulta SELECT normal Preferible si ambas tienen un ndice en las claves de une

    La mezcla tiene rendimiento ptimo cuando: El ndice del origen es nico y con cobertura

    Actualizar la misma fila mas de una vez no se permite El ndice de unin es clustered

    Cuando un origen y un destino tienen tamao similares, launin de mezcla toma el plan mas ptimo Ambas tablas se escanean una sola vez y no hay necesidad de

    ordenacin

    Cuando la fuente es mas pequea que el destino, se opta porun loop anidado La bsqueda es mas eficiente si se realiza sobre datos ordenados

    Rendimiento

    33Solid Quality Mentors

    S t i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    34/99

    Sentencia Merge

    Meta: Mezclar eficientemente datos desde un fichero La fuente de un MERGE puede ser una sentenciaOPENROWSET(BULK)

    No existe nueva sentencia BULK MERGE El proceso completo se realiza en un nico lote

    Las operaciones estn completamente logeadas BULK INSERT contra ndices (clstered o non-clustered) son

    mnimamente loggeadas solo cuando una tabla est vaca El objetivo de un MERGE normalmente no est vacio

    UPDATE y DELETE siempre estn logeados

    Escenario BULK

    34Solid Quality Mentors

    S t i M

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    35/99

    Sentencia Merge

    El rendimiento de Merge es ptimo solo cuando la fuentetenga las claves nicas, aunque los archivos no tenganndices

    Nuevos consejos de OPENROWSET (BULK) vencen laslimitaciones y permiten escenarios de mezcla de altorendimiento ORDER ( { column [ ASC | DESC ] } [ ,... n ] ) [ UNIQUE ]

    Consejos validados en tiempo de ejecucin mediante unafuncin secuencial Se lanza un error si el flujo de datos no es conforme a dichos consejos Validacin no costosa se comparan claves actual contra anterior

    Ordenamiento y unicidad para garantizarrendimiento eficiente sin ordenamiento al realizaruniones

    Nuevos consejos usables desde fuera del MERGE

    Nuevos consejos para OPENROWSET(BULK)

    35Solid Quality Mentors

    INSERT b DML

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    36/99

    INSERT sobre DML

    Habilidad para tener Sentencia INSERT que consuma resultados de un DML Filtrado en la salida de un DML con una clusula where

    Mejora de la clusula OUTPUT INTO

    Por qu? Historial de dimensiones lentamente cambiantes

    Vertido de secuencias de datos DML en una tablasecundaria para post-procesado

    Introduccin

    36Solid Quality Mentors

    INSERT b DML

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    37/99

    INSERT sobre DML

    Restricciones en objetivo iguales a OUTPUTINTO El objetivo debe ser una tabla local o variable Sin restricciones de clave ajena

    Restricciones check permitidas en Katmai Triggers INSTEAD OF o AFTER no permitidos

    Restricciones en predicados de filtro Subconsultas UDFs de acceso a datos acceso a datos full-text

    Restricciones

    37Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    38/99

    Demo 05

    INSERT sobre DML38Solid Quality Mentors

    A i d j t

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    39/99

    Agrupacin de conjuntos

    Definicin: un conjunto de columnas agrupadas Mejoras relativas a agrupacin de conjuntos: Nueva clusula ISO en GROUP BY

    GROUPING SETS, CUBE, ROLLUP

    Nueva funcin GROUPING_ID Identifica una asociacin de agrupacin de conjuntos

    Nueva sub clusula permite un mejorrendimiento con conjuntos de resultadoslgicamente equivalentes de mltiples deconsultas con GROUP BY

    Introduccin

    39Solid Quality Mentors

    Agr pacin de conj ntos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    40/99

    Agrupacin de conjuntos

    Define mltiples agrupaciones en una mismaconsulta Se usan NULLs utilizados como marcadores CUBE

    Abreviacin para una superagrupacin de conjuntosconstruida desde elementos de entrada(2^nagrupaciones de elementos para n elementos)

    ROLLUP Abreviacin para el subconjunto de agrupacin de

    conjuntos que es relevante en un escenariojerrquico ( n+1 agrupacin de conjuntos para nelementos)

    Sub clusulas

    40Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    41/99

    Demo 06

    Agrupacin de conjuntos41Solid Quality Mentors

    Agrupacin de conjuntos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    42/99

    Agrupacin de conjuntos

    Nueva agrupacin de conjuntos relativa acaractersticas que te permiten materializar eindexar agregados eficientemente en el almacnde datos relacional

    Nueva sentencia MERGE puede usarse pararealizar actualizaciones incrementales (solomedidas aditivas)

    Puede considerarse una alternativa a cubosbsicos de Analisis Services

    Alternativa a los cubos de Analisis Services

    42Solid Quality Mentors

    Dependencias de objetos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    43/99

    Dependencias de objetos

    Descubrimiento de dependencias fiable Entre objetos Procedimientos almacenados, tablas, vistas, funciones,

    triggers, UDTs, etc. Objetos vinculados y no vinculados a esquemas

    Introduccin

    43Solid Quality Mentors

    Dependencias de objetos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    44/99

    Dependencias de objetos

    Descubrir todos los objetos Del que un objeto depende Que depende de un objeto Que depende de otra BBDD

    Realizando consultas distribuidas usando nombre de4 partes

    Escenarios

    44Solid Quality Mentors

    Dependencias de objetos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    45/99

    Dependencias de objetosExtensiones de catlogo

    45

    Nueva vista de catlogo; 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 funcin de administracin dinmica; reemplazasp_depends

    Devuelve una fila para cada entidad referenciada por la entidaddada Ej. Mustrame 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 entidaddada Ej. Mustrame todos los objetos que se romperan si borro la

    tabla t1

    Nueva funcin de administracin dinmica;reemplaza sp_depends

    Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    46/99

    Demo 07

    Dependencias de objeto46Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    47/99

    Introduccin al seguimiento de datos

    Por qu estamos realmente interesados en loscambios?

    Conocer las especificaciones del cambio es muy

    valioso Qu cambi Cundo se cambio

    Cmo se cambi Quin lo cambi

    Entendiendo el cambio

    47Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    48/99

    Introduccin al seguimiento de datos

    Provee interioridades a la raz de las causas delproblema Cumple con regulaciones gubernamentales Mejora el proceso de toma de decisiones Ayuda a construir soluciones eficientes

    Beneficios de entender las especificaciones de los cambios

    48Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    49/99

    Introduccin al seguimiento de datos

    Depende! Algunos ejemplos: Seguimiento de datos Conocer sobre los estados intermedios es importante

    Seguimiento de envo de paquetes

    No necesitas saber todos los lugares por donde pas Seguimiento de cuentas bancarias

    Quieres conocer cada cambio y quin lo hizo

    Seguimiento de ventas en el mercado

    Necesitas hacer seguimiento de llamada de telfono

    qu necesitas saber?

    49Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    50/99

    Introduccin al seguimiento de datosEjemplos de escenarios computacionales

    50

    Que cambios realiz John?Procesado depalabra

    Qu cambios de configuracin ocurrieron desde la ltima vez quesincronice?

    Servicios de ActiveDirectory

    Qu atributos y contenidos cambiaron? Quin hizo el cambio?Sistema de ficheros

    Historia de todos los cambios realizados al fichero

    Fue el fichero modificado al mismo tiempo por dos personas?Control fuente

    Qu filas cambiaron? Qu columna cambi? Quin hizo el cambio?

    Base de datos

    Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    51/99

    Introduccin al seguimiento de datosCambiar atributos

    51

    Qu tipos de cambios necesitamos seguirpara responder las preguntas?mbito

    Cunta informacin histrica est disponiblepara el cambio?

    Son necesarios los estados intermedios?Dato modificado

    Cantidad de informacin relativa al cambio Quin hizo el cambio , como y cundo?

    Informacin delcambio

    Cundo esta disponible la informacin delcambio?

    Disponibilidaddel cambio

    Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    52/99

    Introduccin al seguimiento de datos

    Las preguntas de las que quieres respuestasdeterminan la eliminacin de informacin que nonecesitas

    Cuantas mas respuestas necesitas, masseguimiento debes hacer Seguir una variedad de cambios Seguir el histrico de esos cambios

    Capturar mas informacin especfica de dichoscambios Proveer la informacin sobre los cambios de una

    forma temporal

    La suma de todo

    52Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    53/99

    Introduccin al seguimiento de datos

    Proporcionar conocimientos clave en el sistema Ayuda a construir aplicaciones eficientes Auditoria Replicacin

    Sincronizacin ETL Resolucin de problemas

    Cada escenario requiere un nivel de informacinde cambios

    Seguimiento de cambios de BBDD

    53Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    54/99

    Introduccin al seguimiento de datos

    Provee diferentes niveles de cambio deinformacin

    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 mejorplanteamiento a la hora de construir soluciones deeste tipo

    Mtodos tradicionales de seguimiento

    54Solid Quality Mentors

    Introduccin al seguimiento de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    55/99

    Introduccin al seguimiento de datosCaractersticas de seguimiento de datos en SQL Server 2008

    55

    Informacin de seguimiento rica,proveniente del logCaptura dedatos

    modificados

    Ligereza a la hora de proveer seguimientode cambiosSeguimiento de

    cambios

    Pequeo impacto a la hora de darinformacin de auditoria

    Auditoria deSQL

    Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    56/99

    Captura de modificaciones de datosAtributos

    56

    Todos los cambios DML Informacin de cambios DDL para ALTERTABLEmbito

    Todos los cambios Todas los valores de columna

    Imagen de antes y despus de laactualizacin

    Cambio de

    datos

    Columnas actualizadas Tipo de operacin Informacin transaccional

    Informacin decambio

    Cambios asncronos unos segundosdespus del commit

    Disponibilidaddel cambio

    Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    57/99

    Captura de modificaciones de datos

    Objeto fuente Objeto del cual quieres seguir los cambios De momento solo tablas

    Instancia de captura Cada instancia de captura crea una tabla con los

    cambios Cada tabla puede tener 2 instancias de captura Diferentes instancias para capturar diferentes

    esquemas

    Conceptos clave

    57Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    58/99

    Captura de modificaciones de datos

    Proceso de captura Lee el log de transacciones y rellena las tablas decambio

    Tablas de cambio

    Contienen los cambios de las tablas con seguimiento Esquema similar al objeto fuente Metadatos adicionales

    APIs de enumeracin TVF(funciones de tabla) Usado para el acceso a los datos de seguimiento

    Conceptos clave ( continuacin)

    58Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    59/99

    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 imgenes del log antes

    y despus El trabajo puede pararse paraminimizar el impacto en la fuente

    Trabajo de limpieza deretencin Purga las tablas con cambios

    Por defecto 72 horas Metadatos

    Proveen informacin sobre laconfiguracin CDC

    Arquitectura

    59Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    60/99

    Captura de modificaciones de datos

    Habilitado a nivel de base de datos Requiere privilegios sysadmin Se crea un usuario y esquema cdc

    Habilitado a nivel individual de tabla Requiere privilegios db_owner Soporta captura solo de un subconjunto de columnas

    Por razones de privacidad o rendimiento

    Soportado solo en la versin enterprise

    Configuracin

    60Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    61/99

    Captura de modificaciones de datos

    Generalmente no accedido directamente Solo por administradores Acceso normal va funciones TVF

    Seguimiento de operaciones DML 1 fila para insertar y borrar 2 filas para actualizar

    Contiene 5 columnas con metadatos adicionales

    Informacin perteneciente a transacciones (LSNs) Mascara de actualizacin

    Tablas de cambios: base

    61Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    62/99

    Captura de modificaciones de datos

    Insensible a las modificaciones del esquema delobjeto fuente Aadiendo/eliminando columnas Excepcin

    Cambios de tipo de datos Catalogo de reportes de columnas modificadas (por

    procesos externos)

    Usa una segunda instancia con un nuevo

    esquema Seguimiento de cambios en ambas instancias til cuando aplicaciones o ETL no puede cambiarse

    inmediatamente

    Tablas de cambios: cambios de esquema

    62Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    63/99

    Captura de modificaciones de datos

    Pueden ponerse en un grupo de ficheros aparte Job de limpieza previene tamao excesivo Puede configurarse Predeterminado cada 72 horas

    Captura solo un subconjunto de columnas Ej. No captura columnas LOBs

    Tablas de cambios: tamao y rendimiento

    63Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    64/99

    Captura de modificaciones de datos

    Dos funciones de tabla (TVFs) Para cada tabla modificada Permite consultas basadas en rangos Opcin 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

    64Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    65/99

    Captura de modificaciones de datos

    Todos los cambios TVF til para extraer todos los cambios de forma eficiente Opcionalmente provee una imagen antes y despus

    de la actualizacin

    Cambios TVF Net Identifica fielmente operaciones netas de una fila en

    un rango Provee informacin sobre que columna(s) han

    cambiado para la fila neta modificada Dependiendo de las opciones de filtrado puede

    resultar una consulta mas costosa

    Acceso a los datos modificados: TVFs

    65Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    66/99

    Captura de modificaciones de datos

    Funciones avanzadas del sistema Provee mapeo y otras funcionalidades La funcion de mapeo de tiempo al LSN habilita el rango para

    ser especificado usando tiempo Resulta fcil determinar la marca mnima y mxima para que

    los cambios estn disponibles en las tablas de cambio Determina que columna ha cambiado, dando una mscara

    de bits

    Accediendo a los datos modificados: Avanzado

    66Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    67/99

    Captura de modificaciones de datos

    Modelo de seguridad Acceso a los datos modificados mediante TVFs Como mnimo se requiere acceso a todas las

    columnas con seguimiento de la tabla base

    El rol CDC provee una capa adicional de seguridad

    Acceso a los datos modificados: seguridad

    67Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    68/99

    Captura de modificaciones de datos

    Funciones del sistema Administracin mediante trabajos del agente de SQL

    Server Aadir, configurar, borrar

    Administracin de tablas de cambio Borrado manual Inicio de escaneo manual

    Metadatos ricos Histrico de cambios DDL al esquema fuente

    Configuracin de CDC, objetos fuente y tablas de cambio Precisin, latencia y estado actual del escaneo del log errores

    Administracin

    68Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    69/99

    Captura de modificaciones de datosEjemplo de rendimiento

    69

    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

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    70/99

    Captu a de od cac o es de datos

    Cuenta para sobrecarga de almacenamientoadicional 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 columnasnecesarias

    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

    70Solid Quality Mentors

    Captura de modificaciones de datos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    71/99

    p

    Consultas de enumeracin de cambios netos Son tpicamente un poco mas costosas que todas las

    consultas de cambios Las agregaciones y las mascaras de computacin de

    columnas requieren mas procesado

    Consideraciones de rendimiento (continuacin)

    71Solid Quality Mentors

    Demo 08

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    72/99

    Demo 08

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

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    73/99

    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 deseguimiento

    Ha cambiado una fila? Necesitamos saber de forma fiable si una fila ha

    cambiado Necesitamos inmediatamente la informacin sobre

    las modificaciones

    Introduccin

    73Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    74/99

    Seguimiento de cambios

    Todos lo cambios DML (Insert, Update, Delete)mbito

    Cambios netos una fila ha cambiado y puedesobtener los ltimos datos

    Solo se almacenan las columnas de claveprimaria para identificar la fila

    Cambio de

    datos

    Operacin (Insert, Update, Delete) Mscara de bit de columnas actualizadas Contexto definido por la aplicacin

    Informacin decambio

    Seguimiento inmediato mediante DMLDisponibilidad

    del cambio

    Atributos

    74Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    75/99

    Segu e to de ca b osEscenarios

    75

    Caching

    Ej. Catlogos de producto desolo lectura

    Guardados offline

    Ej. Ordenes de productoactualizables , modo decacheo de outlook, repartir elestado de los registros

    Cliente(s) con cache

    SQL Server 2008:

    Seguimiento decambios

    Cliente(s) con almacenamiento offline

    WebService

    SQL Server 2008:Seguimiento de

    cambios

    Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    76/99

    Segu e to de ca b os

    Los cambios se registran automticamente En tablas internas del sistema Solo va valores de clave primaria (con metadatos

    adicionales)

    En tiempo de commit (no en el momento de laejecucin DML)

    Se accede a los cambios Va una nueva funcin del sistema

    Usando nuevas funciones del sistema para obtenerinformacin de versiones

    Arquitectura

    76Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    77/99

    g

    Habilitando a nivel de BBDD Comandos T-SQL DDL y SSMS Periodo de retencin configurable Tarea de auto-limpieza configurable

    Recomendado nivel de aislamiento de instantnea Evitar problemas de concurrencia con limpieza Consistencia ante cambios

    Habilitando a nivel de tabla individual

    Comandos T-SQL DDL y SSMS Seguimiento de actualizacin de columnas

    configurables

    Configuracin

    77Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    78/99

    g

    Funcin CHANGETABLE()

    Devuelve una tabla Parmetro CHANGES

    Devuelve las filas modificadas basadas en una versinespecficas

    La versin ha de mantenerse llamando a la aplicacin ParmetroVERSION

    Siempre se devuelve la ltima versin de las filas til para chequear versiones ante conflictos

    Otras funciones Para obtener versiones antiguas o actuales de unatabla

    Para chequear mascaras de bits ante actualizaciones

    Acceso a datos modificados: nuevas funciones del sistemas

    78Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    79/99

    g

    Debe tener permisos SELECT En al menos columnas de clave primaria

    Nuevo permiso VIEW CHANGE TRACKING En las tabla asegurables

    Requerido por las siguientes razones Los usuarios ven los valores de clave primaria despus del

    borrado Los usuarios ven que un valor ha cambiado (aunque no vean

    el valor actual porque no tienen permisos)

    Acceso a datos modificados: seguridad

    79Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    80/99

    g

    Periodo de retencin Determina la cantidad de datos sobre seguimiento de

    cambios almacenada Especificado como parte de la configuracin de

    BBDD Tarea en background del motor para realizar las

    limpiezas Los clientes deben sincronizarse con mas frecuencia

    que el periodo de retencin

    Informacin sobre configuracin Disponible desde SSMS y vistas del catlogo

    Administracin

    80Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    81/99

    g

    Una fila aadida a una tabla interna por cada Fila modificada Transaccin commiteada

    En comandos DML Cerca del mantenimiento de ndices en una tabla

    Impacto: bases

    81Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    82/99

    g

    Para cada fila modificada: 18 bytes Tamao de PK Hasta 128 bytes de contexto (opcionales)

    4 bytes (columnas actualizadas)

    Para cada transaccin confirmada: 76 bytes

    Impacto: almacenamiento

    82Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    83/99

    g

    Ejemplo de espacio utilizado 10,000 filas modificadas 2 filas por transaccin 2 columnas actualizadas

    ((18 + 8 + 0 + 8) * 10000) + (76 * 10000/2) = ~700KB

    Impacto: ejemplo

    83Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    84/99

    gPerformance: DML overhead

    84

    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

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    85/99

    g

    APIs de .NET habilitadas para sincronizar los almacenes de datos Facilitan la creacin de aplicaciones offline

    Provee un modelo de trabajo hacia cualquier almacenamiento

    Provee soporte para SQL Server CE

    Sincronizacin de adaptador para servidor Puede tomar ventaja sobre seguimiento de cambios integrados

    Evita aadir columnas, triggers y tablas; mejor rendimiento

    Servicios de sincronizacin para ADO.NET

    85

    SQLServer

    Compact

    DatabaseServer

    ADO.NETDataAdapter

    Local /OfflineStore

    ADO.NETSyncAdapter

    Solid Quality Mentors

    Demo 09

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    86/99

    Demo 09

    Seguimiento de cambios

    86Solid Quality Mentors

    Auditoria

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    87/99

    Introduccin

    87

    Nuevos objetos de configuracin de auditoria Nueva configuracin de auditoria por T-SQL

    Nuevos permisos para controlar la configuracin de auditoria Ej. ALTER ANY AUDIT, ALTER ANY AUDIT SPECIFICATION

    Filtrado de auditoria basado en acciones, objetos y principales anivel de servidor y de BBDD

    Compatibilidad hacia atras para grupos eventos SQLTrace Audicin para acciones Select, Insert, Update, Delete

    Cambios a Management Studio y SMO

    AuditAudit

    Specification

    LocationsFile

    AuditSpecification

    App Log

    Security Log

    Solid Quality Mentors

    Seguimiento de cambios

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    88/99

    g

    Intentos de login al servidor DML/Select DDL (Create, Alter, Etc) Permisos (Grant, Revoke, Deny)

    mbito

    Todos los cambios para entidadesconfiguradas Todos los cambios para auditarlas a si

    mismas

    Datoscambiados

    Qu accin ocurri Cundo ocurri la accin Quin fue el responsable Dnde estaba el responsable de la accin

    Informacin delcambio

    atributos

    88Solid Quality Mentors

    Auditoria

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    89/99

    Probablemente en CTP6 Disponible solo en la versin Enterprise Ejemplos

    Nota: sintaxis supuesta

    Disponibilidad

    89

    AUDIT LOGON TO MyAuditFolder

    AUDIT UPDATE(Salary)

    ON dbo.Employee

    TO MyAuditFolder

    WHERE Salary>200000,

    Solid Quality Mentors

    Seguimiento de datos en SQL 2008

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    90/99

    Resumen

    90

    Seguimiento decambios

    Captura de datosmodificados

    Auditoria

    mbito DML DMLCiertas DDL Login, LogoutDML, SelectDDLPermisos (grant, etc..)

    Cambio dedatos

    Cambios netos unafila modificadaSolo valores de clave

    primaria

    Todos los cambiosTodos los valores decolumna

    Todos los cambiosAccinObjetivo

    Correcto/falloInformacindel cambio

    Operacin DMLColumnas actualizadas

    Operacin DMLColumnas ActualizadasInformacin de transaccin

    CundoQuin

    Disponibilidaddel cambio

    Inmediatamentemediante DML

    Retraso configurableTrabajo de captura que leeel log de transacciones

    Eventos extendidos

    Escenariosclave

    Sincronizacin deaplicaciones de ida oida y vuelta

    ETL incremental paraalmacenes de datos

    Auditoria

    Ediciones Todas las ediciones Solo versin Enterprise Solo versin Enterprise

    Disponibilidad CTP de noviembre CTP de Junio CTP6Solid Quality Mentors

    Bloqueos y consejos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    91/99

    q y j

    Nueva opcin para ALTER TABLE Permite deshabilitar el escalado a nivel de tabla

    En tablas particionadas se pueden habilitar bloqueospara escalar a las particiones

    En lugar de a la tabla completa Puede mejorar la concurrencia reduciendo la contencin porbloqueos

    Escalado de bloqueos

    91Solid Quality Mentors

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    92/99

    Bloqueos y consejos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    93/99

    Nuevo hint FORCESEEK Fuerza las bsquedas por ndices en la tabla Trabaja con ndices clustered y non-clustered Facilita al optimizador de consultas su uso

    Interseccin de ndices (predicados AND) Uniones por ndices (predicados OR)

    Puede ayudar a consultas que usan LIKE e IN Problema usualmente por psima estimacin de cardinalidad

    Si se usa en una vista, se propaga Los consejos de ndice se ignoran Error si todas las tablas base no tienen como mnimo un

    ndice cada una

    FORCESEEK

    93Solid Quality Mentors

    Bloqueos y consejos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    94/99

    Ejemplo y detalles en BOL

    Ejemplo FORCESEEK

    94

    can

    Solid Quality Mentors

    Bloqueos y consejos

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    95/99

    Antes de usarlo Asegura que las estadsticas estn actualizadas y fiables! Habilita la auto creacin/actualizacin manual Evaluacin de cardinalidad pobre en estimaciones de

    coste

    Los consejos siempre limitan las elecciones deloptimizacin

    No usar Consejo INDEX(0) con FORCESEEK

    Fuerza un escaneo de la tabla base para el que no seencuentra ningn plan (error)

    Consejo USE PLAN con FORCESEEK El ltimo se ignora

    Mejores prcticas FORCESEEK

    95Solid Quality Mentors

    Bloqueos y consejosC

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    96/99

    Nuevo consejo de consulta TABLE HINT Permite especificar hints de tabla como hints de

    consulta Apunta a objetos especficos

    Uso recomendado en contextos de plan guides Puede causar que la semntica de la consulta vare Asegurarse de entender todas las implicaciones

    Consejos que afectan a la semntica

    Consejos que no afectan a la semntica Bien documentado con muchos ejemplos en BOL

    Consejos de tabla en consejos de consulta

    96Solid Quality Mentors

    Service BrokerM j

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    97/99

    Diagnsticos Prioridades de conversacin

    Mejoras

    97Solid Quality Mentors

    Novedades en Transact-SQL

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    98/99

    Q

    Preguntas y respuestas

    98Solid Quality Mentors

    Links de SQL Server 2008

  • 8/2/2019 102 - SQL 2008 - Transact-SQL News ES

    99/99

    Sitio web de SQL Server 2008 http://www.microsoft.com/sql/2008

    Ejemplos de SQL Server 2008 http://www.codeplex.com/SqlServerSamples

    http://www.microsoft.com/sql/2008http://www.codeplex.com/SqlServerSampleshttp://www.codeplex.com/SqlServerSampleshttp://www.microsoft.com/sql/2008