Contenidos de Los Libros
Contenidos de Los Libros
Contenidos de Los Libros
Colección
Recursos Informáticos
Contenido
Contenido 1
Capítulo 1
Presentación
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2. Presentación de SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 ¿Qué es un SGBDR? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Modo de funcionamiento cliente/servidor . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Las posibles plataformas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Los componentes de SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. Arquitectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1 Administración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4. Base de datos SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1 Objetos de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Bases de datos de sistema y tablas de sistema . . . . . . . . . . . . . . . . . . . 24
4.3 Las tablas de sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4 Extracción de metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5 Las tareas del administrador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Capítulo 2
Instalación y configuración
1. Instalación de SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1 Las ediciones de SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.2 Desarrollo del proceso de instalación. . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.2.1 Elección de los componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.2.2 Nombre de la instancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.2.3 Los servicios de SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.2.4 Parámetros de intercalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.2.5 Modo de autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.2.6 Configuración del motor de base de datos . . . . . . . . . . . . . . . . . 51
2 SQL Server 2014
Administración de una base de datos transaccional
Capítulo 3
Gestión de la base de datos
1. Nociones generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1 Relaciones entre la base de datos y la organización física . . . . . . . . . 103
1.2 El concepto de transacción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
1.2.1 ¿Qué es una transacción? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
1.2.2 Las sentencias Transact SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.3 Los archivos de diario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
1.3.1 El cometido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
1.3.2 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
1.3.3 Los puntos de sincronización . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Contenido 3
Capítulo 4
Gestión de la seguridad del acceso
1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
2. Gestión de los accesos al servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
2.1 Modo de seguridad de Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
2.2 Modo de seguridad mixta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
2.2.1 Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
2.2.2 Principio de funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
2.3 Base de datos predeterminada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
2.4 ¿Cómo elegir un modo de seguridad? . . . . . . . . . . . . . . . . . . . . . . . . . 184
2.5 Administrar una conexión en SQL Server . . . . . . . . . . . . . . . . . . . . . . 186
2.5.1 En modo de seguridad de Windows . . . . . . . . . . . . . . . . . . . . . 187
2.5.2 En modo de seguridad mixto. . . . . . . . . . . . . . . . . . . . . . . . . . . 189
2.6 Información de identificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
2.7 Activar y desactivar una conexión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
2.8 Información relativa a las conexiones . . . . . . . . . . . . . . . . . . . . . . . . . 198
3. Gestión de los usuarios de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . 199
3.1 Crear un usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
3.2 Información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Contenido 5
Capítulo 5
Tareas planificadas
1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
2. Configuración de los servicios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
2.1 Cuenta de inicio para SQL Server Agent . . . . . . . . . . . . . . . . . . . . . . . 273
2.1.1 Configuración del servicio en Windows . . . . . . . . . . . . . . . . . . 274
2.1.2 Configuración del servicio en SQL Server
Configuration Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
2.1.3 La seguridad de SQL Server Agent . . . . . . . . . . . . . . . . . . . . . . 278
2.2 Configuración de la mensajería electrónica. . . . . . . . . . . . . . . . . . . . . 279
2.2.1 Configuración desde SQL Management Studio. . . . . . . . . . . . 280
2.2.2 Probar el servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
3. Los operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
3.1 Creación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
3.2 Modificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
3.3 Eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
4. Los trabajos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
4.1 Implantación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
4.2 Definición de las etapas de un trabajo . . . . . . . . . . . . . . . . . . . . . . . . . 294
4.2.1 Transact SQL (TSQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
4.2.2 Comando del sistema operativo (CMDEXEC) . . . . . . . . . . . . 295
4.2.3 PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
4.2.4 Replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
4.3 Encadenamientos entre las etapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
4.4 La planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
4.5 Ejemplo de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5. Las alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
5.1 Presentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
5.1.1 ¿Cómo registrar la información en el diario de Aplicación? . . 302
5.1.2 ¿Cómo reacciona el agente SQL Server?. . . . . . . . . . . . . . . . . . 302
Contenido 7
Capítulo 6
Transferencia de datos
1. Importación y exportación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
1.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
1.2 Las herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
1.2.1 SSIS (SQL Server Integration Services) . . . . . . . . . . . . . . . . . . 315
1.2.2 Replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.2.3 BCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.2.4 SELECT INTO e INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.2.5 Los criterios de selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
2. La herramienta BCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
2.1 La sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
2.2 El uso de bcp en modo interactivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
3. SSIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
3.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
3.2 Asistentes de importación y exportación . . . . . . . . . . . . . . . . . . . . . . 321
4. Adjuntar y separar una base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
4.1 Separación de una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
4.2 Adjuntar una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Capítulo 7
Service Broker
1. Presentación de Service Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1 La estructura de Service Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
1.2 El tipo de mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.3 El contrato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.4 La cola de espera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
8 SQL Server 2014
Administración de una base de datos transaccional
Capítulo 8
Replicación
1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
2. Las necesidades para la replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
2.1 Coherencia de los datos replicados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
2.1.1 Coherencia de las transacciones . . . . . . . . . . . . . . . . . . . . . . . . 367
2.1.2 Convergencia de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
2.2 Autonomía de los sitios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
2.3 Particionamiento de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
2.4 Tipos de replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
3. Los modelos de replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
3.1 Los principales componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
3.1.1 El editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
3.1.2 El distribuidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
3.1.3 Los suscriptores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
3.1.4 Los agentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
3.1.5 Los elementos que participan en la replicación . . . . . . . . . . . . 375
3.2 Replicación de instantáneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
3.3 Replicación transaccional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Contenido 9
Capítulo 9
Copia de seguridad
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
2. Planificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
2.1 Preguntas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
10 SQL Server 2014
Administración de una base de datos transaccional
Capítulo 10
Restauración
1. Descripción general del proceso de restauración . . . . . . . . . . . . . . . . . . . . . 461
1.1 La restauración automática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
1.2 Operaciones ejecutadas automáticamente por SQL Server . . . . . . . . 462
1.3 Operaciones preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
1.3.1 La verificación de las copias de seguridad . . . . . . . . . . . . . . . . . 462
1.3.2 Las tareas específicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Contenido 11
Capítulo 11
Optimización
1. Auditoría de la actividad de SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
1.1 Definir una auditoría en el servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . 488
1.2 Definir una auditoría en la base de datos . . . . . . . . . . . . . . . . . . . . . . 490
1.3 Visualizar el registro de auditoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
1.4 Auditoría C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
2. Generador de perfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
2.1 Capturar la actividad actual del servidor. . . . . . . . . . . . . . . . . . . . . . . 495
2.2 Utilizar los datos capturados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
3. Monitor de rendimiento (monitor de sistema) . . . . . . . . . . . . . . . . . . . . . . 502
4. Optimización de la memoria y de la unidad central . . . . . . . . . . . . . . . . . . 506
12 SQL Server 2014
Administración de una base de datos transaccional
Anexo
1. Puesta en marcha de la base de datos GESCOM . . . . . . . . . . . . . . . . . . . . . 547
2. Recursos en la Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
3. Glosario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Ediciones ENI
Colección
Recursos Informáticos
Contenido
Contenido 1
Prólogo
Capítulo 1
El modelo relacional
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2. Recordatorio sobre el almacenamiento de datos . . . . . . . . . . . . . . . . . 9
2.1 Las diferentes categorías de datos . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 Los datos básicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2 Los datos cambiantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Los datos de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.4 Los datos almacenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 La organización de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Directa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Secuencial indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Base de datos jerárquica . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.5 Base de datos relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3. El modelo relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Conceptos y definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Reglas principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Normalización del esquema relacional . . . . . . . . . . . . . . . . . . . . 19
4. El álgebra relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Etapas de la resolución de un problema . . . . . . . . . . . . . . . . . . . 31
2 SQL Server 2014
SQL, Transact SQL
Capítulo 2
Implementación de bases de datos
1. Presentación de SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2. Administrar una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1 Administrar el espacio de almacenamiento . . . . . . . . . . . . . . . . 46
2.2 Administrar el objeto DATABASE . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Crear una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.2.2 Modificar el tamaño de los archivos . . . . . . . . . . . . . . . . . 54
2.2.3 Eliminar una base de datos . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.4 Renombrar una base de datos . . . . . . . . . . . . . . . . . . . . . . 58
2.2.5 Configurar una base de datos . . . . . . . . . . . . . . . . . . . . . . 58
2.3 Las bases de datos en memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.3.1 Crear una base de datos en memoria. . . . . . . . . . . . . . . . . 66
2.3.2 Crear una tabla en memoria . . . . . . . . . . . . . . . . . . . . . . . 67
3. Administrar tablas e índices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1 Identificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.2 Los tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.1 Tipos de datos de sistema . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.2 Tipos de datos definidos por el usuario. . . . . . . . . . . . . . . 78
3.3 Administrar las tablas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.1 Crear una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.3.2 Modificar una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.3.3 Eliminar una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.3.4 Nombre completo de una tabla . . . . . . . . . . . . . . . . . . . . . 91
3.3.5 Columnas calculadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4. Implementación de la integridad de los datos . . . . . . . . . . . . . . . . . . 92
4.1 Los valores por defecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.2 Las reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.3 La propiedad IDENTITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.4 Las restricciones de integridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.4.1 NOT NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.4.2 PRIMARY KEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Contenido 3
Capítulo 3
Las órdenes de SQL
1. Aspectos generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
1.1 Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
1.2 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
1.3 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.3.1 Funciones de agregación. . . . . . . . . . . . . . . . . . . . . . . . . . 148
1.3.2 Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . 149
1.3.3 Funciones trigonométricas. . . . . . . . . . . . . . . . . . . . . . . . 150
1.3.4 Funciones logarítmicas. . . . . . . . . . . . . . . . . . . . . . . . . . . 151
1.3.5 Funciones diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
1.3.6 Funciones de tipo fecha . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.3.7 Funciones de tratamiento de cadenas de caracteres . . . . 155
1.3.8 Funciones de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
1.3.9 Funciones de conversión de tipos . . . . . . . . . . . . . . . . . . 161
1.3.10Funciones lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4 SQL Server 2014
SQL, Transact SQL
2. El SQL-DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
2.1 Creación de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
2.2 Modificación de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3 Eliminar registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
2.4 Extracción de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
2.5 Operaciones del álgebra relacional. . . . . . . . . . . . . . . . . . . . . . . 183
2.5.1 Selección de columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
2.5.2 Restricción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
2.5.3 Cálculos sencillos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
2.5.4 Proyección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
2.5.5 Cálculos agregados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
2.5.6 Producto cartesiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
2.5.7 Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
2.5.8 Join externo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
2.5.9 ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
2.5.10UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
2.5.11EXCEPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
2.5.12INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
2.5.13Extraer solo los primeros registros. . . . . . . . . . . . . . . . . . 206
2.6 Consulta de creación de tablas . . . . . . . . . . . . . . . . . . . . . . . . . 209
2.7 Forzar el optimizador de consultas . . . . . . . . . . . . . . . . . . . . . . 211
2.8 Tablas CTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
2.9 Generación de registros estadísticos . . . . . . . . . . . . . . . . . . . . . 213
2.10 Subconsultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
2.11 PIVOT y UNPIVOT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
2.12 MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
2.13 Las secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2.13.1Crear una secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2.13.2Usar una secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
3. Gestión de las vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Contenido 5
Capítulo 4
Transact SQL: el lenguaje procedimental
1. El SQL procedimental. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1 Gestión de las variables de usuario . . . . . . . . . . . . . . . . . . . . . . 248
1.2 Variables de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.3 Las transacciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
1.4 Las transacciones de validación diferida . . . . . . . . . . . . . . . . . . 264
1.5 Gestión de los lotes y scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
1.6 Control de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.6.1 RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.6.2 PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.6.3 CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.6.4 BEGIN ... END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.6.5 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
1.6.6 WHILE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
1.6.7 OUTPUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.7 Gestión de cursores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.7.1 DECLARE CURSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
1.7.2 OPEN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
1.7.3 FETCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.7.4 CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.7.5 DEALLOCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.8 Gestión de excepciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1.8.1 Los mensajes de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1.8.2 Activación de un error . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.8.3 Definir un mensaje de error . . . . . . . . . . . . . . . . . . . . . . . 284
1.8.4 Gestión de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
2. Gestión de los procedimientos almacenados . . . . . . . . . . . . . . . . . . 292
3. Las funciones definidas por el usuario. . . . . . . . . . . . . . . . . . . . . . . . 296
3.1 Creación de una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
3.2 Modificación de una función . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
3.3 Eliminar una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
3.4 CROSS APPLY y OUTER APPLY . . . . . . . . . . . . . . . . . . . . . . . 303
6 SQL Server 2014
SQL, Transact SQL
Capítulo 5
Gestión de los datos distribuidos
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
2. SQL Server Integration Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
2.1 Principios básicos de funcionamiento . . . . . . . . . . . . . . . . . . . . 335
2.2 El asistente de importación y exportación . . . . . . . . . . . . . . . . 337
2.3 El resto de utilidades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
2.3.1 Utilidad de ejecución de paquetes . . . . . . . . . . . . . . . . . . 348
2.3.2 Las utilidades en línea de comandos . . . . . . . . . . . . . . . . 349
3. Mover una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
3.1 Desvincular una base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . 351
3.1.1 Desde SQL Server Management Studio . . . . . . . . . . . . . 351
3.1.2 Desde Transact SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
3.2 Vincular una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
3.2.1 Desde SQL Server Management Studio . . . . . . . . . . . . . 355
3.2.2 Desde Transact SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
3.3 Mover una base de datos o archivos . . . . . . . . . . . . . . . . . . . . . 358
4. El programa BCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5. Los servidores remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.1 Gestión de los servidores remotos . . . . . . . . . . . . . . . . . . . . . . . 364
5.1.1 Añadir un servidor vinculado. . . . . . . . . . . . . . . . . . . . . . 365
5.1.2 Eliminar un servidor vinculado . . . . . . . . . . . . . . . . . . . . 367
5.2 Gestión de los usuarios remotos . . . . . . . . . . . . . . . . . . . . . . . . 368
5.3 Uso de los recursos remotos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
5.4 Los sinónimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Contenido 7
Capítulo 6
Los tipos avanzados
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
2. Trabajar con el formato XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
2.1 El tipo XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
2.2 Trabajar con una columna de tipo XML. . . . . . . . . . . . . . . . . . 383
2.2.1 Las operaciones DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
2.2.2 Los métodos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . 385
2.3 Indexar una columna de tipo XML . . . . . . . . . . . . . . . . . . . . . . 389
2.3.1 Índice principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
2.3.2 Índices secundarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
2.4 XQuery y Xpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
2.5 FOR XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
2.6 OpenXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
2.7 OPENROWSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
3. Tablas value parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
4. Las estructuras jerárquicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
4.1 HierarchyId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
4.2 Los índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
4.3 Los métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
5. Los datos FILESTREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6. Los datos espaciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Capítulo 7
Common Language Runtime (CLR)
1. SQL Server y CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
1.1 ¿Transact SQL o CLR? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
1.2 Trabajar con el código CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
1.2.1 Acceder a recursos externos . . . . . . . . . . . . . . . . . . . . . . . 431
1.2.2 Las instrucciones SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.2.3 Los tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
8 SQL Server 2014
SQL, Transact SQL
Anexos
1. Diagrama de base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
2. Sitios de Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
3. Script de creación de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . 460
4. Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465