Está en la página 1de 22

Ediciones ENI

SQL Server 2014


Administración
de una base de datos transaccional
con SQL Server Management Studio

Colección
Recursos Informáticos

Contenido
Contenido 1

Podrá descargar algunos elementos de este libro en la página web


de Ediciones ENI: http://www.ediciones-eni.com.
Escriba la referencia ENI del libro RIT14SQLA en la zona de búsqueda
y valide. Haga clic en el título y después en el botón de descarga.

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

1.2.7 Resumen del proceso de instalación . . . . . . . . . . . . . . . . . . . . . . 53


1.3 Gestion de la red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.4 Modos de licencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.5 SQL Server y la virtualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.6 Ejecutar el programa de instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.7 Las bases de datos de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2. Comprobación de la instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.1 Verificar los elementos instalados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.2 Verificar el arranque de los servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3. Las herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4. La configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1 Los servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2 SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.3 Configuración del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4 La gestión de los procesos de SQL Server. . . . . . . . . . . . . . . . . . . . . . . . 82
4.5 La gestión de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.6 La documentación on-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5. El servicio de texto completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.1 El catálogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.2 La lista de palabras irrelevantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.3 Encontrar la información relativa a los índices de texto completo . . 100
6. Instalación de un componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

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

1.4 Los archivos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116


1.4.1 Su cometido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
1.4.2 Estructura de los archivos de datos. . . . . . . . . . . . . . . . . . . . . . 117
1.4.3 Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
2. Creación, administración y eliminación de una base de datos . . . . . . . . . . 120
2.1 Crear una base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
2.1.1 Sintaxis Transact SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.1.2 Uso de SQL Server Management Studio . . . . . . . . . . . . . . . . . 123
2.2 Gestionar una base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.2.1 Aumentar el espacio de disco disponible
para una base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.2.2 Liberar el espacio en disco que usan
los archivos de datos vacíos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
2.2.3 Configuración de la base de datos . . . . . . . . . . . . . . . . . . . . . . 135
2.3 Eliminar una base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2.3.1 Transact SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
2.3.2 SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . 144
2.4 Las bases de datos de relación continente-contenido . . . . . . . . . . . . . 144
3. Establecer grupos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.1 Creación de un grupo de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.2 Añadir archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
3.3 Utilización de un grupo de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4. Instrucciones INSERT, SELECT... INTO . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5. Estructura de los índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.1 Los índices ordenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.2 Los índices no ordenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.3 Los índices de recubrimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.4 Indexar las columnas calculadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.5 Indexar las vistas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.6 Los índices filtrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.7 Los índices XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.7.1 Índice principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.7.2 Índice secundario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.8 Los índices espaciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4 SQL Server 2014
Administración de una base de datos transaccional

6. La partición de tablas y de índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165


6.1 La función de partición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
6.2 El esquema de partición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.3 La tabla con particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.4 Los índices con particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7. Compresión de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
8. Cifrado de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.1 Dimensionar los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.2 Nombrar la base de datos y los archivos de manera explícita . . . . . . 176
9.3 Ubicación de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.4 Uso de los grupos de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.5 Nivel de compatibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.6 Establecer el parámetro FillFactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

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

3.3 Establecer la lista de conexiones y usuarios . . . . . . . . . . . . . . . . . . . . 205


3.4 Modificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
3.5 Eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
4. Administración de los esquemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
4.1 Creación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
4.2 Modificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
4.3 Eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.4 La información relativa a los esquemas. . . . . . . . . . . . . . . . . . . . . . . . 218
5. Administración de los permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5.1 Permisos de uso de las instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.1.1 Autorizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.1.2 Retirar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.1.3 Prohibir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.2 Derechos de utilización de los objetos. . . . . . . . . . . . . . . . . . . . . . . . . 226
5.2.1 Autorizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.2.2 Retirar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
5.2.3 Prohibir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.3 Derechos a nivel de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 234
5.4 Derechos a nivel del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
5.5 Consultar las vistas de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
6. Contexto de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
7. Los roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
7.1 Roles de servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
7.1.1 Los roles predeterminados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
7.1.2 Crear un rol de servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
7.1.3 Asignar los roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.2 Roles de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
7.2.1 El rol public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
7.2.2 Los roles predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
7.2.3 Los roles de base de datos definidos por los usuarios . . . . . . . 258
7.2.4 Creación de un rol de base de datos . . . . . . . . . . . . . . . . . . . . . 260
7.2.5 Administración de miembros de un rol . . . . . . . . . . . . . . . . . . 262
7.2.6 Eliminación de un rol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
7.3 Roles de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.3.1 Creación de un rol de aplicación . . . . . . . . . . . . . . . . . . . . . . . . 265
7.3.2 Eliminar un rol de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . 266
6 SQL Server 2014
Administración de una base de datos transaccional

7.3.3 Modificar un rol de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . 267


7.3.4 Activación de un rol de aplicación . . . . . . . . . . . . . . . . . . . . . . 268

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

5.2 Gestión de las alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302


5.2.1 Como respuesta a errores de SQL Server . . . . . . . . . . . . . . . . . 303
5.2.2 La transferencia de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
5.2.3 Implantación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
5.2.4 En respuesta a los errores de usuario . . . . . . . . . . . . . . . . . . . . 309
5.2.5 Como respuesta a umbrales de rendimiento . . . . . . . . . . . . . . 311

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

1.5 El servicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335


1.6 La conversación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2. Establecimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.1 Activar Service Broker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.2 Tipos de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
2.3 Contratos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
2.4 Colas de espera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
2.5 Servicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
3. Utilizar Service Broker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
3.1 Enviar un mensaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
3.2 Leer un mensaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
3.3 Comprobar el tipo de mensaje y finalizar la conversación. . . . . . . . . 350
4. Los certificados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5. Service Broker entre dos bases distintas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

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

3.4 Replicación de fusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379


3.5 Los modelos físicos de replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
3.5.1 Editor central-suscriptores múltiples . . . . . . . . . . . . . . . . . . . . 379
3.5.2 Suscriptor central-editores múltiples . . . . . . . . . . . . . . . . . . . . 381
3.5.3 Editores múltiples-suscriptores múltiples . . . . . . . . . . . . . . . . 382
4. Planificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
4.1 Opciones generales de planificación . . . . . . . . . . . . . . . . . . . . . . . . . . 384
4.1.1 Opción NOT FOR REPLICATION . . . . . . . . . . . . . . . . . . . . . 384
4.1.2 Tipo de datos uniqueidentifier . . . . . . . . . . . . . . . . . . . . . . . . . 384
4.1.3 Filtrado de los datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
4.2 Replicación de instantáneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
4.3 Replicación transaccional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
4.4 Replicación de fusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
5. El acceso a la red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
6. Puesta en marcha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
6.1 El distribuidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
6.1.1 Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
6.1.2 El establecimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
6.2 El editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
6.3 Las publicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
6.4 Las suscripciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
6.4.1 Utilización de los asistentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
6.4.2 Vigilar la replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
6.4.3 Eliminación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
7. El acceso a los datos remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
7.1 Añadir un servidor asociado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
7.2 Gestionar los usuarios remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
7.3 Ejecución de una consulta distribuida . . . . . . . . . . . . . . . . . . . . . . . . . 423

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

2.2 Elegir una estrategia de copia de seguridad . . . . . . . . . . . . . . . . . . . . . 427


2.2.1 Copia de seguridad de una base de datos . . . . . . . . . . . . . . . . . 427
2.2.2 Copia de seguridad del diario de transacciones . . . . . . . . . . . . 428
2.2.3 Las copias de seguridad diferenciales . . . . . . . . . . . . . . . . . . . . 431
2.2.4 Las copias de seguridad por grupos de archivos . . . . . . . . . . . . 431
2.2.5 Las combinaciones posibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
3. Establecimiento de las copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.1 Los modos de recuperación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.2 El destino de las copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.2.1 Disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.2.2 Bandas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.3 Los principales parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.3.1 Los permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.3.2 La copia de seguridad de las bases de datos de sistema . . . . . . 437
3.3.3 La copia de seguridad de las bases de datos de usuario . . . . . . 437
3.3.4 Los archivos de copia de seguridad . . . . . . . . . . . . . . . . . . . . . . 438
3.4 La instrucción BACKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
3.4.1 Copia de seguridad completa . . . . . . . . . . . . . . . . . . . . . . . . . . 446
3.4.2 Copia de seguridad diferencial. . . . . . . . . . . . . . . . . . . . . . . . . . 447
3.4.3 Copia de seguridad del registro de transacciones . . . . . . . . . . . 449
3.4.4 Copia de seguridad de archivo o de grupo de archivos . . . . . . 451
3.4.5 La copia de seguridad en varios archivos . . . . . . . . . . . . . . . . . 452
3.5 La replicación en espejo de las copias de seguridad . . . . . . . . . . . . . . . 454
3.6 Verificar la integridad de una copia de seguridad . . . . . . . . . . . . . . . . 455
3.7 Comprimir las copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

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

2. Restauración de las copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467


2.1 La instrucción RESTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
2.2 Las opciones de la instrucción RESTORE . . . . . . . . . . . . . . . . . . . . . . 469
2.3 La restauración de los diferentes tipos de copia de seguridad . . . . . . 470
2.3.1 A partir de una copia de seguridad completa . . . . . . . . . . . . . . 470
2.3.2 A partir de una copia de seguridad diferencial . . . . . . . . . . . . . 472
2.3.3 A partir de una copia de seguridad del diario
de transacciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
2.3.4 A partir de una copia de seguridad de archivo
o de un grupo de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
2.4 Restauración de las bases de datos de sistema dañadas . . . . . . . . . . . 478
2.4.1 Restauración a partir de una copia de seguridad . . . . . . . . . . . 478
2.4.2 Reconstrucción de bases de datos de sistema . . . . . . . . . . . . . 478
2.5 Restauración en línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
3. Servidor de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
3.1 Instalación del servidor de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . 481
3.2 Uso del servidor de seguridad en modo de solo lectura . . . . . . . . . . . 481
3.3 Puesta en marcha de un servidor de seguridad . . . . . . . . . . . . . . . . . . 482
3.4 Cómo trabajar con el servidor de seguridad . . . . . . . . . . . . . . . . . . . . 485
3.4.1 Conexión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
3.4.2 Restauración del servidor de producción . . . . . . . . . . . . . . . . . 486
3.4.3 Restablecimiento del ordenador SQL Server de seguridad . . . 486

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

5. Limitación de los recursos utilizados por una consulta. . . . . . . . . . . . . . . . 510


6. El plan de ejecución de una consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
7. Plan de mantenimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
8. Asistente de configuración del motor de base de datos. . . . . . . . . . . . . . . . 517
8.1 Inicialización del asistente de configuración . . . . . . . . . . . . . . . . . . . . 518
8.2 Análisis de una carga de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
9. Los triggers DDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
10. Los triggers de conexión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
11. PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
11.1 El proveedor PowerShell SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . 528
11.2 Los applets de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
11.2.1 Encode-SqlName, Decode-SqlName . . . . . . . . . . . . . . . . . . . . . 532
11.2.2 Invoke-PolicyEvaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
11.2.3 Invoke-Sqlcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
11.2.4 Convert-UrnToPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
11.3 SMO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
12. La gestión de las reglas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
12.1 Las condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
12.2 Las estrategias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
12.3 Puesta en marcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
13. Creación de copia en espejo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
13.1 Principios de funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
13.2 Puesta en marcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

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

SQL Server 2014


SQL, Transact SQL
Diseño y creación de una base de datos
(con ejercicios prácticos corregidos)

Colección
Recursos Informáticos

Contenido
Contenido 1

Podrá descargar algunos elementos de este libro en la página web


de Ediciones ENI: http://www.ediciones-eni.com.
Escriba la referencia ENI del libro RIT14SQL en la zona de búsqueda
y valide. Haga clic en el título y después en el botón de descarga.

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

4.4.3 UNIQUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101


4.4.4 REFERENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.4.5 DEFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.6 CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5. Administrar los índices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.1 Crear un índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.2 Eliminar un índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.3 Reconstruir un índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.4 Las estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.5 Información sobre los índices . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6. Monitorizar y verificar las bases de datos y los objetos . . . . . . . . . . 130
7. Los esquemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8. Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

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

4. Ejecutar procedimientos y funciones . . . . . . . . . . . . . . . . . . . . . . . . 304


5. El contexto de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
6. Los triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
7. La depuración del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

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

1.2.4 El acceso a los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432


1.2.5 Localización del código. . . . . . . . . . . . . . . . . . . . . . . . . . . 432
2. Definir el código CLR gestionado en SQL Server . . . . . . . . . . . . . . . 433
2.1 Activar el soporte del código CLR . . . . . . . . . . . . . . . . . . . . . . . 433
2.2 Trabajar con Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
2.3 Tipos de datos personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . 435
2.4 Procedimientos almacenados . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
2.5 Triggers de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
2.6 Funciones de cálculo agregado . . . . . . . . . . . . . . . . . . . . . . . . . . 444
3. SMO y PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
3.1 SMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
3.2 Generar un script de inserción de datos . . . . . . . . . . . . . . . . . . 449
3.3 Crear una base de datos con SMO . . . . . . . . . . . . . . . . . . . . . . 451
3.4 Crear una tabla con SMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
3.5 Modificar una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

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

También podría gustarte