La aparición de SQL Server 2005 ha revolucionado el mundo de las bases de datos. Este software de próxima generación de Microsoft es un lenguaje estándar de comunicación capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea. Presenta una potencia y versatilidad notables que contrasta con su accesibilidad de aprendizaje, por lo que es más que un sistema gestor: analiza y administra datos y hace posible avances en tres ámbitos clave: gestión de información empresarial, productividad de los desarrolladores e inteligencia empresarial. Este libro ha sido desarrollado como material de consulta tanto para el usuario que lleve poco tiempo trabajando con SQL Server como para el experimentado que tal vez desee ver las novedades de esta versión. Proporciona la información esencial que necesita el usuario a la hora de orientarse y empezar a usar este sistema de gestión para administrar los datos. Con poca teoría y mucha práctica, esta libro presenta los temas con ejemplos de la vida real de aplicaciones empresariales de gran escala, para que así el usuario alcance la resolución de problemas e información esencial sobre la conectividad mejorada de SQL Server 2005. En definitiva, este libro le guiará rápida, pero sistemáticamente, por los temas que más interesan a sus lectores.ÍndiceAgradecimientos Introducción Cómo se organiza este libro Convenciones utilizadas Parte I. Introducción a SQL Server 1. Introducción a SQL Server 2005 Las ediciones de SQL Server 2005 Administración de SQL Server Apertura de SQL Server Management Studio Creación de un inicio de sesión Utilización de Configuration Manager Visualización de la actividad actual Herramientas de desarrollo Business Intelligence Development Studio Novedades y mejoras Integration Services Nuevas tareas Nuevos orígenes y destinos de datos Nuevas transformaciones de datos Réplicas Analysis Services Notification Services Reporting Services Service Broker Resumen 2. Información general sobre los conceptos de las bases de datos Bases de datos Bases de datos cliente-servidor y archivo-servidor Bases de datos relacionales Bases de datos OLTP y OLAP Registros de transacciones Tablas Registros, campos y valores Filas y columnas Valores nulos Propiedades de campo Claves y relaciones Índices y restricciones Reglas y valores predeterminados Vistas SQL Bloqueo DDL y DML Plan de consulta Procedimientos almacenados Desencadenadores y notificaciones de evento Transacciones Procedimientos almacenados del sistema Propiedad y seguridad Trabajos, alertas y operadores Réplicas Resumen 3. Información general acerca de SQL Server Programas que se instalan con SQL Server Libros en pantalla de SQL Server SQL Configuration Manager Servicios de SQL Server 2005 Configuración de red de SQL Server 2005 Server Configuración de SQL Native Client SQL Profiler SQLCMD BCP, programa de copia masiva SQL Server Management Studio Interfaces de programación de aplicaciones Partes de la base de datos Tablas Vistas Procedimientos almacenados Diagramas Cuentas de usuario de base de datos Funciones de base de datos Tipos de datos de sistema Funciones definidas por el usuario Reglas y restricciones Valores predeterminados Catálogos de texto XML y SQL Server Conceptos relacionados con el almacenamiento de SQL Server Páginas Extensiones Resumen 4. Diseño y normalización de bases de datos ¿Qué es la normalización? Conceptos fundamentales de la normalización Integridad de entidad Integridad de dominio Integridad referencial Integridad definida por el usuario Primera forma normal Definición de la Primera forma normal Identificación de una clave principal Claves candidatas Elección de una buena clave principal Claves suplentes Segunda forma normal Claves externas y relaciones Tercera forma normal Forma normal de Boyce-Codd Normalización avanzada Cuarta forma normal Quinta forma normal Desnormalización Toma de decisiones Herramientas para la normalización en SQL Server Columnas de identidad Restricciones Restricciones UNIQUE Restricciones DEFAULT Restricciones CHECK Integridad referencial declarativa (DRI) Claves principales Claves externas Integridad referencial en cascada Desencadenadores Resumen Parte II. Transact-SQL 5. Información general sobre Transact-SQL y fundamentos básicos ¿Qué es Transact-SQL? ANSI SQL Dialectos de SQL Opciones de configuración de SQL Utilización de SET para ofrecer compatibilidad con ANSI Utilización de ALTER DATABASE para cambiar las opciones El procedimiento almacenado sp_dboption El procedimiento almacenado sp_dbcmptlevel Sintaxis y convenciones de T-SQL Lectura de los diagramas de sintaxis Identificadores válidos Referencia a objetos Palabras reservadas Tipos de datos Enteros Texto Decimal Dinero Coma flotante Fecha Datos binarios Tipos de datos especiales Sinónimos de los tipos de datos Operadores Operadores disponibles Precedencia y agrupación de operadores Comodines Variables Variables globales del sistema Variables locales Funciones Generación de identificadores exclusivos globales (GUID) Funciones de cadena Funciones de fecha y hora Funciones matemáticas Funciones del sistema y de metadatos Funciones definidas por el usuario Ejecución de código T-SQL Utilización de SQL Server Management Studio Creación de una consulta Guardado de una consulta Apertura de una consulta guardada Visualización de los resultados Visualización del plan de ejecución Creación de una vista Creación de un procedimiento almacenado Empleo de las utilidades de línea de comandos Utilización de OSQL Utilización de SQLCMD Resumen 6. Consultas SELECT Utilización de consultas SELECT básicas Limitación de los registros con la cláusula WHERE Utilización de combinaciones INNER JOIN Combinación de varias tablas OUTER JOIN Conversión de los conjuntos de resultados en informes Utilización de ORDER BY Utilización de GROUP BY y HAVING Utilización de ROLLUP Utilización de CUBE y GROUPING Utilización de TOP N y TOP N% Utilización de OVER Búsqueda de texto completo Instalación y configuración de la búsqueda de texto completo Ejecución de búsquedas de texto completo Administración de la búsqueda de texto completo Consultas en servidores vinculados Consultas XML Resumen 7. Consultas de acción ¿Qué son las consultas de acción? Consultas de eliminación Sintaxis de DELETE Limitaciones de DELETE Ejemplos de DELETE Sintaxis de TRUNCATE TABLE Limitaciones de TRUNCATE TABLE Ejemplo de TRUNCATE TABLE Consultas de actualización Sintaxis de UPDATE Limitaciones de UPDATE Ejemplos de UPDATE Consultas de inserción Sintaxis de INSERT Limitaciones de INSERT Ejemplos de INSERT Sintaxis de SELECT INTO Limitaciones de SELECT INTO Ejemplos de SELECT INTO Resumen 8. Temas avanzados de Transact-SQL Transacciones ¿Qué son las transacciones? Las propiedades ACID Atomicidad Coherencia Aislamiento Durabilidad Utilización de las transacciones BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION @@TRANCOUNT @@ERROR Ejemplo de transacción Transacciones distribuidas Microsoft DTC BEGIN DISTRIBUTED TRANSACTION Prácticas recomendables para las transacciones Funciones de conjuntos de filas CONTAINSTABLE FREETEXTTABLE OPENQUERY OPENROWSET OPENDATASOURCE OPENXML Introducción a XPath Sintaxis de OPENXML Ejemplos de OPENXML Cursores DECLARE CURSOR OPEN y @@CURSOR_ROWS FETCH y @@FETCH_STATUS CLOSE DEALLOCATE Ejemplo de cursor Utilización de tablas del sistema y vistas de esquema de información ¿Qué contienen las tablas del sistema? Ejemplos de consultas de tablas del sistema Vistas de esquema de información Sugerencias para el optimizador Sugerencias de tabla Sugerencias de combinación Sugerencias de consulta Sugerencias de vista Resumen Parte III. SQL Server en profundidad 9. Utilización de SQL Server Management Studio Introducción a SQL Server Management Studio La ventana Servidores registrados Grupos de servidores Creación de un grupo de servidores Administración de los servidores de un grupo Iconos de servidores La ventana Explorador de objetos Conexión a un servidor mediante el Explorador de objetos Estructura de carpetas y uso Nodos del Explorador de objetos Página Resumen Nodo Bases de datos Bases de datos Nodo Seguridad Inicios de sesión Funciones del servidor Credenciales Nodo Objetos de servidor Dispositivos de copia de seguridad Extremos Servidores vinculados Desencadenadores Nodo Réplica Carpeta Publicaciones locales Carpeta Suscripciones locales Nodo Administración Planes de mantenimiento Registros de SQL Server Monitor de actividad Correo electrónico de base de datos Coordinador de transacciones distribuidas Búsqueda de texto Heredado Notification Services Agente SQL Server Trabajos Monitor de actividad de trabajo Alertas Operadores Servidores proxy Registro de errores Otros tipos de servidor Analysis Services Servidor de Integration Services (SSIS) Servidor de Reporting Services SQL Server Mobile Acciones de SQL Server Explorador de plantillas Explorador de soluciones Soluciones Creación de una nueva solución Proyectos Desplazamiento de elementos Herramientas externas Resumen 10. Bases de datos Fundamentos básicos de las bases de datos Planificación de la capacidad Creación de bases de datos Creación de bases de datos con SQL Server Management Studio Creación de bases de datos con Transact-SQL Modificación de bases de datos Configuración de las opciones de base de datos Cambio el tamaño de una base de datos Expansión de un archivo de datos Adición de archivos de datos secundarios y de registro de transacciones Adición de grupos de archivos Reducción de los archivos de datos Eliminación de una base de datos Instantáneas de base de datos Resumen 11. Tablas Planificación de las tablas Tipos de datos integrados Tipos de datos definidos por el usuario Columnas calculadas Particiones de tablas Creación de tablas Restricción de los datos Imposición de la integridad de dominio Utilización de restricciones CHECK Utilización de restricciones DEFAULT Imposición de la integridad de entidad Utilización de claves principales Utilización de restricciones UNIQUE Imposición de la integridad referencial Utilización de claves externas Utilización de la integridad referencial en cascada Utilización de diagramas de bases de datos Resumen 12. Indización Arquitectura de los índices Introducción a los montones Introducción a los índices agrupados Acceso a datos con un índice agrupado Modificación de datos con un índice agrupado Introducción a los índices no agrupados Acceso a datos con un índice no agrupado Modificación de datos con un índice no agrupado Creación de índices Creación de índices con SQL Server Management Studio Creación de índices con el Asistente para la optimización del motor de base de datos Resumen 13. Vistas Utilización de vistas de particiones de tablas Creación de una vista con el Diseñador de vistas Modificación de una vista con el Diseñador de vistas Utilización de alias en una vista Organización del conjunto de resultados Utilización de vistas para combinar tablas Combinación de dos tablas en una vista Combinación de varias tablas en una vista Modificación de datos mediante una vista Trabajo con vistas indizadas Consideraciones Creación de vistas indizadas Optimización de vistas indizadas con funciones en línea definidas por el usuario Utilización de vistas con particiones distribuidas Utilización de vistas de esquema de información Utilización de vistas de catálogo Resumen 14. Procedimientos almacenados Introducción a los procedimientos almacenados Introducción a los procedimientos almacenados definidos por el usuario Procedimientos almacenados básicos Utilización de parámetros de entrada Utilización de parámetros de salida Optimización de procedimientos almacenados Protección de los procedimientos almacenados Procedimientos almacenados del sistema y extendidos Resumen 15. Utilización de desencadenadores Introducción a los desencadenadores Trabajo con desencadenadores INSERT Trabajo con desencadenadores DELETE Trabajo con desencadenadores UPDATE Trabajo con desencadenadores INSTEAD OF Consideraciones avanzadas Combinación de tipos de desencadenadores Notificación de errores con RAISERROR() Desencadenadores recursivos Utilización de desencadenadores DDL Resumen Parte IV. Administración de SQL Server 16. Tareas administrativas básicas Copia de seguridad de los datos Cómo funcionan las copias de seguridad Creación de un dispositivo de copia de seguridad Realización de una copia de seguridad completa Realización de copias de seguridad diferenciales Realización de copias de seguridad del registro de transacciones Realización de copias de seguridad de grupos de archivos Realización de copias de seguridad en varios dispositivos Restauración de bases de datos Restauraciones estándar Restauraciones a un momento dado Restauraciones por etapas Definición de una estrategia de copia de seguridad Sólo copias de seguridad completas Copias de seguridad completas y diferenciales Copias de seguridad completas y del registro de transacciones Copias de seguridad completas, diferenciales y del registro de transacciones Copias de seguridad de grupos de archivos Mantenimiento de los índices Introducción a DM_DB_INDEX_PHYSICAL_STATS Reorganización y regeneración de índices Lectura de los registros Copia de bases de datos Resumen 17. Administración automatizada Fundamentos de la automatización Configuración del Correo electrónico de bases de datos Creación de operadores Creación de trabajos Creación de trabajos de servidor local Creación de trabajos multiservidor Creación de alertas Alertas de eventos basadas en errores estándar Alertas de eventos basadas en errores personalizados Alertas de rendimiento Alertas WMI Utilización del Asistente para planes de mantenimiento Resumen 18. Seguridad y SQL Server 2005 Introducción a los modos de seguridad Modo de autenticación de Windows Modo mixto Configuración del modo de autenticación Inicios de sesión de SQL Server Inicios de sesión estándar Inicios de sesión de Windows Elementos comunes de todos los inicios de sesión Funciones fijas del servidor Creación de cuentas de usuario de base de datos Introducción a los permisos Permisos de instrucción Permisos de objeto Funciones de base de datos Funciones fijas de base de datos Funciones personalizadas de base de datos Funciones de aplicación Estados de los permisos Conceder Revocar Denegar Cadenas de propiedad Seguridad en varios servidores Supervisión de los inicios de sesión de SQL Server con SQL Profiler Errores y advertencias de clase de eventos Servidor de clase de evento Objetos de clase de evento Creación de un plan de seguridad Resumen Parte V. Desarrollo con SQL Server 19. Integración de SQL Server con Microsoft .NET Introducción a .NET y el CLR CLR (Common Language Runtime) Ejecución administrada El sistema de tipos comunes Interoperabilidad entre lenguajes La biblioteca de clases de .NET Framework Espacios de nombres Ensamblados Dominios de aplicación Seguridad Utilización de código .NET en SQL Server Integración de CLR en SQL Server Escritura de funciones CLR definidas por el usuario Escritura de funciones definidas por el usuario de valor escalar Escritura de funciones definidas por el usuario de valores de tabla Escritura de procedimientos almacenados CLR Escritura de desencadenadores CLR Escritura de tipos CLR definidos por el usuario Utilización del espacio de nombres Sql Utilización del proveedor administrado en curso Utilización del objeto SqlPipe Resumen 20. ADO.NET y SQL Server Espacios de nombres y clases ADO.NET Introducción a DataSet Introducción al proveedor de datos para SQL Server Introducción a los tipos SQL Creación y administración de conexiones Generación de cadenas de conexión Control de la agrupación de conexiones Utilización del objet
o SqlCommand Ejecución de una consulta Utilización de parámetros Obtención de un solo valor Utilización del objeto SqlDataReader Apertura de un objeto SqlDataReader Obtención de datos Utilización de los objetos DataSet y SqlDataAdapter Configuración de SqlDataAdapter Relleno del DataSet Modificación del DataSet Edición de datos Adición de datos nuevos Eliminación de datos Actualización de la base de datos Un ejemplo de interfaz de usuario Resumen 21. Programación con SMO y RMO ¿Qué es SMO? El modelo de objetos SMO Los objetos SMO principales El objeto Server Propiedades Métodos Eventos El objeto Configuration El objeto Database El objeto DatabaseOptions El objeto StoredProcedure El objeto Table El objeto Column El objeto Alert Ejemplo de código SMO Creación y conexión de un objeto Server Creación de una base de datos Cambio de una opción de configuración Creación de una tabla Eliminación de una tabla Creación y ejecución de un procedimiento almacenado Creación de una alerta Utilización de RMO Resumen 22. Integration Services ¿Qué es Integration Services? Datos de la instalación de SSIS Servicio SSIS Business Intelligence Development Studio Ventana Diseñador Explorador de soluciones Ventana Propiedades Cuadro de herramientas Otras ventanas Creación y diseño de paquetes Creación de un proyecto Contenedores Creación de paquetes con el Asistente para importación y exportación Creación de paquetes con el Diseñador SSIS Inserción de tareas de flujo de control Selección de un origen de flujo de datos Inserción de transformaciones en un flujo de datos Selección del destino de flujo de datos Guardado de paquetes Ejecución de paquetes Ejecución de paquetes en el Diseñador SSIS Ejecución de paquetes con la utilidad DTEXEC Ejecución de paquetes con Management Studio Ejecución de paquetes como un trabajo programado del Agente SQL Server Otras operaciones de diseño Implementación del registro Puntos de comprobación Variables Expresiones Expresiones de propiedad Consultas Controladores de eventos Implementación de paquetes Configuraciones Creación de una utilidad de implementación Instalación de paquetes Para implementar paquetes en el sistema de archivos Para implementar paquetes en SQL Server Migración de paquetes DTS 2000 Utilización del Asistente para migración de paquetes Ejecución del Asistente para migración de paquetes en Management Studio Ejecución del Asistente para migración de paquetes en BIDS Administración de paquetes Supervisión de los paquetes en ejecución Administración de los almacenes de paquetes Importación y exportación de paquetes Resumen Parte VI. Temas avanzados 23. Bloqueo ¿Por qué bloquear? Actualizaciones perdidas Dependencias sin confirmar Análisis incoherente Lecturas ficticias Simultaneidad optimista y pesimista Niveles de aislamiento Mecanismos de bloqueo Granularidad de bloqueo Modos de bloqueo Concentración de bloqueos Bloqueo dinámico Visualización los bloqueos actuales Mediante sys.dm_tran_locks Mediante Management Studio Interbloqueos Personalización del comportamiento de los bloqueos Establecimiento del tiempo de espera de bloqueo Establecimiento del nivel de aislamiento de transacciones Sugerencias de bloqueo Bloqueos de aplicación sp_getapplock sp_releaseapplock Resumen 24. Supervisión y optimización de SQL Server 2005 Utilización del Monitor de sistema Utilización del Editor de consultas de Management Studio Supervisión con SQL Profiler Reproducción de un archivo de traza Utilización del Asistente para la optimización del motor de base de datos Trucos y técnicas Establecimiento de una línea de base Archivado de datos y seguimiento de las tendencias Técnicas de optimización Consultas y procedimientos almacenados Tempdb Regulador de consultas (Query Governor) Establecimiento de marcas de traza RAID Adición de memoria Configuración manual del uso de memoria Resumen 25. Réplica Introducción a la réplica La metáfora de publicador/suscriptor Tipos de réplica Revisión de las transacciones distribuidas Réplica transaccional Réplica de instantáneas Réplica de mezcla Agentes de réplica Modelos de réplica Un publicador, varios suscriptores Varios publicadores, un suscriptor Varios publicadores, varios suscriptores Distribuidor remoto Réplica heterogénea Instalación de la réplica Habilitación de una base de datos para réplica Creación y suscripción a una publicación de instantáneas Creación de una publicación de instantáneas Creación de una suscripción de instantáneas Prueba de la réplica de instantáneas Creación y suscripción a una publicación transaccional Creación de una publicación transaccional Creación de una suscripción transaccional Prueba de la réplica transaccional Creación y suscripción a una publicación transaccional con suscripciones actualizables Creación de una publicación transaccional con suscripciones actualizables Creación de una suscripción transaccional actualizable Antes de empezar: un apunte sobre la seguridad Creación de la suscripción Prueba de la réplica transaccional con suscripciones actualizables Creación y suscripción a una publicación de mezcla Creación de una publicación de mezcla Creación de una suscripción de mezcla Prueba de la réplica de mezcla Prueba de la resolución de conflictos Utilización del Monitor de réplica Configuración de la sincronización Web para suscripciones de extracción a réplicas de mezcla Resumen 26. Analysis Services Introducción a OLAP Terminología de Analysis Services Cubos y sus partes MOLAP, ROLAP y HOLAP Particiones y cubos virtuales Utilización de Analysis Services Business Intelligence Development Studio Management Studio Creación de un proyecto de Analysis Services Creación de un cubo Utilización del Diseñador de cubos Implementación de un cubo Procesamiento de un cubo Examen del cubo Utilización del Asistente para dimensiones Creación de una dimensión estándar utilizando una vista de origen de datos existente Creación de una dimensión estándar sin usar una vista de origen de datos existente Creación de una dimensión de tiempo Creación de una dimensión de tiempo de servidor Creación de dimensiones vinculadas Minería de datos Antes de comenzar Utilización del Asistente para minería de datos Implementación de Analysis Services Planificación de la implementación Utilización de una secuencia de comandos XML Utilización del Asistente para sincronizar bases de datos Utilización del Asistente para la implementación de Analysis Services Creación de un proyecto de Analysis Services en SQL Server Management Studio Resumen 27. Notification Services Arquitectura Cómo funciona: Vista sencilla Cómo funciona: Vista detallada Arquitectura de la administración de suscripciones Arquitectura de la colección de eventos Estructura de programación de Notification Services Componentes de Notification Services Consideraciones de configuración en el desarrollo Crear una aplicación: Visión general Crear un archivo de configuración de instancia Crear el archivo de definición de la aplicación Implementar y administrar Notification Services con Management Studio Resumen 28. Reporting Services Usos de Reporting Services Generalidades de los informes Ciclo de vida del informe Términos clave Componentes clave Crear informes Diseñador de informes Crear un informe con el Asistente para informes Modificar un informe Crear un informe con el Diseñador de informes Crear un informe con parámetros Importar un informe de Microsoft Access Publicar un informe en el Servidor de informes Crear un modelo de informe Crear un informe con el Generador de informes Administración de informes Publicar los informes de ejemplo Utilizar el Administrador de informes para administrar informes Trabajar con carpetas Mis Informes Administrar informes publicados Ver, mover y eliminar un informe Configurar las propiedades del informe Utilizar Management Studio para administrar informes Trabajar con carpetas Trabajar con informes publicados Envío de informes Suscripciones Crear una suscripción estándar con la entrega a
recursos compartidos de archivos Configurar el Administrador de informes para el envío de mensajes de correo electrónico Crear una suscripción controlada por datos entregada por correo electrónico Programaciones compartidas Crear un informe compartido con el Administrador de informes Trabajos Abrir la página Administrar trabajos con el Administrador de informes Administrar trabajos con Management Studio Imprimir informes Exportar un informe Exportar un informe Imprimir un informe para otra aplicación Seguridad de Reporting Services Funciones Función predefinida Personalizar funciones Asignaciones de función Administrar asignaciones de función con el administrador de informes Administrar asignaciones de función con Management Studio Herramienta de configuración del Servidor de informes Opciones de la herramienta de configuración del Servidor de informes Resumen 29. Service Broker Introducción a Service Broker DDL y DML de TSQL Mensajería Conversaciones Grupos de conversación Mensajes transaccionales en colas asincrónicas Activación Entrega de mensajes Extremos y redes Reenvío de mensajes Transporte de mensajes Programación de Service Broker Creación de una aplicación Service Broker Crear un procedimiento almacenado para lectura de colas Administrar Service Broker Administrar aplicaciones y colas Instalar una aplicación Mover una aplicación Iniciar y detener una aplicación Copias de seguridad y restauración de aplicaciones Service Broker Desinstalar una aplicación Mensajes tóxicos Seguridad de Service Broker Opciones de configuración del sistema Vistas de catálogo de Service Broker Resumen 30. Solución de problemas Solución de problemas generales Solución de problemas de configuración Solución de problemas de bases de datos DBCC Reparar bases de datos desconectadas Solución de problemas de copia de seguridad y restauración Solución de problemas de conectividad de cliente Solución de problemas de replicado Seguridad y réplica Los suscriptores no obtienen datos Recuperación de servidores Solución de problemas de tareas y alertas Solucionar problemas de conectividad de correo Solución de problemas de los servicios (SQL Server y Agente de SQL Server) Resumen A. Referencia de T-SQL Crear una base de datos Instrucción de cursor Opciones de base de datos Eliminar registros Búsqueda de texto completo Inserción de registros Recuperar registros Conjuntos de filas Transacciones Actualizar registros Funciones definidas por el usuario Índice alfabético