Sei sulla pagina 1di 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 1
Introduccin a las bases de
datos

2007

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 2 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 3 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 4 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 5 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 6 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 7 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 8 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 9 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 10 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 11 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 12 de 630

Unidad 1: Introduccin a las bases de datos


Objetivos
Dar una visin acerca de los conceptos bsicos de una base
de datos:
Qu es una base de datos?
Objetos de una base de datos
Tipo de datos

Pgina 13 de 630

Concepto de Bases de Datos


Una base de datos se puede definir como un conjunto de informacin que
pertenece al mismo contexto, que se encuentra agrupada almacenada para
su uso posterior.
En este sentido, una biblioteca puede considerarse una base de datos
compuesta en su mayora por documentos y textos impresos en papel e
indexados para su consulta.
En la actualidad, y gracias al desarrollo tecnolgico de campos como la
informtica y la electrnica, la mayora de las bases de datos tienen formato
electrnico, que ofrece un amplio rango de soluciones al problema de
almacenar datos.
Las aplicaciones ms usuales de bases de datos, son para la gestin de
empresas e instituciones pblicas. Tambin son ampliamente utilizadas en
entornos cientficos con el objeto de almacenar la informacin experimental.

Algunos conceptos de bases de datos:


Base de Datos: es la coleccin de datos usados por el sistema de
aplicaciones de una determinada empresa.
Base de Datos: es un conjunto de informacin relacionada que se encuentra
agrupada o estructurada. Un archivo por s mismo no constituye una base de
datos, sino ms bien la forma en que est organizada la informacin es la
que da origen a la base de datos.
Base de Datos: coleccin de datos organizada para dar servicio a muchas
aplicaciones al mismo tiempo al combinar los datos de manera que parezcan
estar en una sola ubicacin

Tipos de bases de datos


Las bases de datos pueden clasificarse de varias maneras, de acuerdo al
criterio elegido para su clasificacin:
Segn la variabilidad de los datos almacenados
Bases de datos estticas. stas son bases de datos de slo lectura,
utilizadas primordialmente para almacenar datos histricos que
posteriormente se pueden utilizar para estudiar el comportamiento de un
conjunto de datos a travs del tiempo, realizar proyecciones y tomar
decisiones.
Bases de datos dinmicas. stas son bases de datos donde la informacin
almacenada se modifica con el tiempo, permitiendo operaciones como
actualizacin y adicin de datos, adems de las operaciones fundamentales
de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un
Pgina 14 de 630

sistema de informacin de una tienda de abarrotes, una farmacia, un


videoclub, etc.
Segn el contenido
Bases de datos bibliogrficas. Solo contienen un surrogante
(representante) de la fuente primaria, que permite localizarla. Un registro
tpico de una base de datos bibliogrfica contiene informacin sobre el autor,
fecha de publicacin, editorial, ttulo, edicin, de una determinada
publicacin, etc. Puede contener un resumen o extracto de la publicacin
original, pero nunca el texto completo, porque sino estaramos en presencia
de una base de datos a texto completo (o de fuentes primarias) [ver ms
abajo]. Como su nombre lo indica, el contenido son cifras o nmeros. Por
ejemplo, una coleccin de resultados de anlisis de laboratorio, entre otras.
Bases de datos de texto completo. Almacenan las fuentes primarias, como
por ejemplo, todo el contenido de todas las ediciones de una coleccin de
revistas cientficas.
Directorios. Un ejemplo son las guas telefnicas en formato electrnico.
Banco de imgenes, audio, video, multimedia, etc.
Bases de datos o "bibliotecas" de informacin Biolgica. Son bases de
datos que almacenan diferentes tipos de informacin proveniente de las
ciencias de la vida o mdicas.

Modelos de bases de datos


Adems de la clasificacin por la funcin de las bases de datos, stas
tambin se pueden clasificar de acuerdo a su modelo de administracin de
datos.
Un modelo de datos es bsicamente una "descripcin" de algo conocido
como contenedor de datos (algo en donde se guarda la informacin), as
como de los mtodos para almacenar y recuperar informacin de esos
contenedores. Los modelos de datos no son cosas fsicas: son abstracciones
que permiten la implementacin de un sistema eficiente de base de datos;
por lo general se refieren a algoritmos, y conceptos matemticos. Algunos
modelos con frecuencia utilizados en las bases de datos son:
Bases de datos jerrquicas. stas son bases de datos que, como su
nombre indica, almacenan su informacin en una estructura jerrquica. En
este modelo los datos se organizan en una forma similar a un rbol (visto al
revs), en donde un nodo padre de informacin puede tener varios hijos. El
nodo que no tiene padres es llamado raz, y a los nodos que no tienen hijos
se los conoce como hojas.

Las bases de datos jerrquicas son especialmente tiles en el caso de


aplicaciones que manejan un gran volumen de informacin y datos
muy compartidos permitiendo crear estructuras estables y de gran
rendimiento.
Pgina 15 de 630

Una de las principales limitaciones de este modelo es su incapacidad


de representar eficientemente la redundancia de datos.

Base de datos de red. ste es un modelo ligeramente distinto del jerrquico;


su diferencia fundamental es la modificacin del concepto de nodo: se
permite que un mismo nodo tenga varios padres (posibilidad no permitida en
el modelo jerrquico).

Fue una gran mejora con respecto al modelo jerrquico, ya que ofreca
una solucin eficiente al problema de redundancia de datos; pero, aun
as, la dificultad que significa administrar la informacin en una base
de datos de red ha significado que sea un modelo utilizado en su
mayora por programadores ms que por usuarios finales.

Base de datos relacional. ste es el modelo ms utilizado en la actualidad


para modelar problemas reales y administrar datos dinmicamente. Este tipo
de base se detalla en la unidad 2.
Bases de datos orientadas a objetos. Este modelo, bastante reciente, y
propio de los modelos informticos orientados a objetos, trata de almacenar
en la base de datos los objetos completos (estado y comportamiento).
Bases de datos documentales. Permiten la indexacin a texto completo, y
en lneas generales realizar bsquedas ms potentes. Tesaurus es un
sistema de ndices optimizado para este tipo de bases de datos.
Base de datos deductivas. Un sistema de base de datos deductivas, es
un sistema de base de datos pero con la diferencia que permite hacer
deducciones a travs de inferencias. Se basa principalmente en reglas y
hechos que son almacenados en la base de datos. Tambin las bases de
datos deductivas son llamadas base de datos lgicas, a raz de que se basan
en lgica matemtica.
Bases de datos distribuidas. La base de datos est almacenada en varias
computadoras conectadas en red. Surgen debido a la existencia fsica de
organismos descentralizados. Esto les da la capacidad de unir las bases de
datos de cada localidad y acceder as, por ejemplo a distintas universidades,
sucursales de tiendas, etctera.
Definicin de Base de datos
Almacn de datos relacionados con diferentes modos de organizacin. Una
base de datos representa algunos aspectos del mundo real, aquellos que le
interesan al diseador. Se disea y almacena datos con un propsito
especfico.

Pgina 16 de 630

De forma sencilla podemos indicar que una base de datos no es ms que un


conjunto de informacin relacionada que se encuentra agrupada o
estructurada.
El archivo por s mismo, no constituye una base de datos, sino ms bien la
forma en que est organizada la informacin es la que da origen a la base de
datos. Las bases de datos manuales, pueden ser difciles de gestionar y
modificar. Por ejemplo, en una gua de telfonos no es posible encontrar el
nmero de una persona si no sabemos su apellido, aunque conozcamos su
domicilio.
Del mismo modo, en un archivo de pacientes en el que la informacin est
ordenada por el nombre de los mismos, ser una tarea bastante engorrosa
encontrar todos los pacientes que viven en una zona determinada. Los
problemas expuestos anteriormente se pueden resolver creando una base de
datos informatizada.
Desde el punto de vista informtico, una base de datos es un sistema
formado por un conjunto de datos almacenados en discos que permiten el
acceso directo a ellos y un conjunto de programas que manipulan ese
conjunto de datos.
Desde el punto de vista ms formal, podramos definir una base de datos
como un conjunto de datos estructurados, fiables y homogneos,
organizados independientemente en mquina, accesibles a tiempo real,
compartibles por usuarios concurrentes que tienen necesidades de
informacin diferente y no predecible en el tiempo.
La idea general es que estamos tratando con una coleccin de datos que
cumplen las siguientes propiedades:
Estn estructurados independientemente de las aplicaciones y del soporte de
almacenamiento que los contiene.
Presentan la menor redundancia posible.
Son compartidos por varios usuarios y/o aplicaciones.

Pgina 17 de 630

Sistema de gestin de base de datos


Los Sistemas de gestin de base de datos son un tipo de software muy
especfico, dedicado a servir de interfaz entre la base de datos, el usuario y
las aplicaciones que la utilizan.
Se compone de un lenguaje de definicin de datos, de un lenguaje de
manipulacin de datos y de un lenguaje de consulta.
En los textos que tratan este tema, o temas relacionados, se mencionan los
trminos SGBD y DBMS, siendo ambos equivalentes, y acrnimos,
respectivamente, de Sistema Gestor de Bases de Datos y DataBase
Management System, su expresin inglesa.

Propsito
El propsito general de los sistemas de gestin de base de datos es el de
manejar de manera clara, sencilla y ordenada un conjunto de datos.

Objetivos
Existen distintos objetivos que deben cumplir los DBMS:
Abstraccin de la informacin. Los DBMS ahorran a los usuarios detalles
acerca del almacenamiento fsico de los datos. Da lo mismo si una base de
datos ocupa uno o cientos de archivos, este hecho se hace transparente al
usuario. As, se definen varios niveles de abstraccin.
Independencia. La independencia de los datos consiste en la capacidad de
modificar el esquema (fsico o lgico) de una base de datos sin tener que
realizar cambios en las aplicaciones que se sirven de ella.
Redundancia mnima. Un buen diseo de una base de datos lograr evitar
la aparicin de informacin repetida o redundante. Lo ideal es lograr una
redundancia nula; no obstante, en algunos casos la complejidad de los
clculos hace necesaria la aparicin de redundancias.
Consistencia. En aquellos casos en los que no se ha logrado esta
redundancia nula, ser necesario vigilar que aquella informacin que aparece
repetida se actualice de forma coherente, es decir, que todos los datos
repetidos se actualicen de forma simultnea.
Seguridad. La informacin almacenada en una base de datos puede llegar a
tener un gran valor. Los DBMS deben garantizar que esta informacin se
encuentra asegurada frente a usuarios malintencionados, que intenten leer
informacin privilegiada; frente a ataques que deseen manipular o destruir la
informacin; o simplemente ante las torpezas de algn usuario autorizado
pero despistado. Normalmente, los DBMS disponen de un complejo sistema
de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas
categoras de permisos.

Pgina 18 de 630

Integridad. Se trata de adoptar las medidas necesarias para garantizar la


validez de los datos almacenados. Es decir, se trata de proteger los datos
ante fallos de hardware, datos introducidos por usuarios descuidados, o
cualquier otra circunstancia capaz de corromper la informacin almacenada.
Respaldo y recuperacin. Los DBMS deben proporcionar una forma
eficiente de realizar copias de seguridad de la informacin almacenada en
ellos, y de restaurar a partir de estas copias los datos.
Control de la concurrencia. En la mayora de entornos (excepto quizs el
domstico), lo ms habitual es que sean muchas las personas que acceden a
una base de datos, bien para recuperar informacin, bien para almacenarla. Y
es tambin frecuente que dichos accesos se realicen de forma simultnea.
As pues, un DBMS debe controlar este acceso concurrente a la informacin,
que podra derivar en inconsistencias.
Tiempo de respuesta. Lgicamente, es deseable minimizar el tiempo que el
DBMS tarda en darnos la informacin solicitada y en almacenar los cambios
realizados.

Ventajas
1.
2.
3.
4.

Facilidad de manejo de grandes volumen de informacin.


Gran velocidad en muy poco tiempo.
Independencia del tratamiento de informacin.
Seguridad de la informacin (acceso a usuarios autorizados),
proteccin de informacin, de modificaciones, inclusiones, consulta.
5. No hay duplicidad de informacin, comprobacin de informacin en el
momento de introducir la misma.
6. Integridad referencial el terminar los registros.

Base de datos OLTP


Las bases de datos relacionales de procesamiento de transacciones en lnea
(OLTP) son ptimas para administrar datos que cambian. Suelen tener varios
usuarios que realizan transacciones al mismo tiempo que cambian los datos
en tiempo real. Aunque las solicitudes de datos realizadas individualmente
por los usuarios suelen hacer referencia a pocos registros, muchas de estas
solicitudes se producen al mismo tiempo.
Las bases de datos OLTP estn diseadas para permitir que las aplicaciones
transaccionales escriban slo los datos necesarios para controlar una sola
transaccin lo antes posible. Las bases de datos OLTP se caracterizan en
general por lo siguiente:
Admiten el acceso simultneo de muchos usuarios que agregan y modifican
datos con regularidad.
Representan el estado en cambio constante de una organizacin, pero no
guardan su historial.
Pgina 19 de 630

Contienen muchos datos, incluidos todos los datos utilizados para comprobar
transacciones.
Tienen estructuras complejas.
Se ajustan para dar respuesta a la actividad transaccional.
Proporcionan la infraestructura tecnolgica necesaria para admitir las
operaciones diarias de la empresa.
Las transacciones individuales se completan rpidamente y se tiene acceso a
cantidades de datos relativamente pequeas. Los sistemas OLTP estn
diseados y ajustados para procesar cientos o miles de transacciones que se
indican al mismo tiempo.
Los datos en los sistemas OLTP estn organizados bsicamente para admitir
transacciones, como por ejemplo:
Registrar un pedido de una terminal punto de venta o especificado a travs
de un sitio Web.
Realizar un pedido de ms provisiones cuando las cantidades de inventario
descienden hasta determinado nivel.
Hacer un seguimiento de componentes desde su ensamblaje hasta un
producto final en un proceso de fabricacin.
Registrar datos de empleados.

Pgina 20 de 630

Objetos de la base de datos


Tablas
En una base de datos la informacin se organiza en tablas, que son filas y
columnas similares a las de los libros contables o a las de las hojas de
clculo.
Una base de datos simple puede que slo contenga una tabla, pero
generalmente las bases de datos necesitan varias tablas. Por ejemplo, podra
existir una base de datos con las siguientes tablas: una tabla con informacin
sobre productos, otra con informacin sobre pedidos y una tercera con
informacin sobre clientes.

Cada fila de la tabla recibe tambin el nombre de registro (o tupla) y cada


columna se denomina tambin campo.
Un registro es una forma lgica y coherente de combinar informacin sobre
algn tema.
Un campo es un elemento nico de informacin: un tipo de elemento que
aparece en cada registro.
En la tabla Productos, por ejemplo, cada fila o registro contendra informacin
sobre un producto, y cada columna contendra algn dato sobre ese
producto, como su nombre o el precio.

Pgina 21 de 630

Adems de la funcin estndar de las tablas bsicas definidas por el usuario,


SQL Server 2005 proporciona los siguientes tipos de tabla que permiten llevar
a cabo objetivos especiales en una base de datos:
Tablas con particiones
Tablas temporales
Tablas del sistema
Tablas con particiones
Las tablas con particiones son tablas cuyos datos se han dividido
horizontalmente entre unidades que pueden repartirse por ms de un grupo
de archivos de una base de datos. Las particiones facilitan la administracin
de las tablas y los ndices grandes porque permiten obtener acceso y
administrar subconjuntos de datos con rapidez y eficacia al mismo tiempo
que mantienen la integridad del conjunto. En un escenario con particiones,
las operaciones como, por ejemplo, la carga de datos de un sistema OLTP a
un sistema OLAP, pueden realizarse en cuestin de segundos en lugar de
minutos u horas en otras versiones. Las operaciones de mantenimiento que
se realizan en los subconjuntos de datos tambin se realizan de forma ms
eficaz porque slo afectan a los datos necesarios en lugar de a toda la tabla.
Tiene sentido crear una tabla con particiones si la tabla es muy grande o se
espera que crezca mucho, y si alguna de las dos condiciones siguientes es
verdadera:
La tabla contiene, o se espera que contenga, muchos datos que se utilizan de
manera diferente.
Las consultas o las actualizaciones de la tabla no se realizan como se
esperaba o los costos de mantenimiento son superiores a los perodos de
mantenimiento predefinidos.
Las tablas con particiones admiten todas las propiedades y caractersticas
asociadas con el diseo y consulta de tablas estndar, incluidas las
restricciones, los valores predeterminados, los valores de identidad y marca
de hora, los desencadenadores y los ndices. Por lo tanto, si desea
implementar una vista con particiones que sea local respecto a un servidor,
debe implementar una tabla con particiones.
Tablas temporales
Hay dos tipos de tablas temporales: locales y globales. Las tablas temporales
locales son visibles slo para sus creadores durante la misma conexin a una
instancia de SQL Server como cuando se crearon o cuando se hizo
referencia a ellas por primera vez. Las tablas temporales locales se eliminan
cuando el usuario se desconecta de la instancia de SQL Server. Las tablas
temporales globales estn visibles para cualquier usuario y conexin una vez
creadas, y se eliminan cuando todos los usuarios que hacen referencia a la
tabla se desconectan de la instancia de SQL Server.

Pgina 22 de 630

Tablas del sistema


SQL Server almacena los datos que definen la configuracin del servidor y de
todas sus tablas en un conjunto de tablas especial, conocido como tablas del
sistema. Los usuarios no pueden consultar ni actualizar directamente las
tablas del sistema si no es a travs de una conexin de administrador
dedicada (DAC) que slo debera utilizarse bajo la supervisin de los
servicios de atencin al cliente de Microsoft. Las tablas de sistema se
cambian normalmente en cada versin nueva de SQL Server. Puede que las
aplicaciones que hacen referencia directamente a las tablas del sistema
tengan que escribirse de nuevo para poder actualizarlas a una versin nueva
de SQL Server con una versin diferente de las tablas de sistema. La
informacin de las tablas del sistema est disponible a travs de las vistas de
catlogo.
Importante
Las tablas del sistema de SQL Server 2005 Database
Engine (Motor de base de datos de SQL Server 2005)
se han implementado como vistas de slo lectura para
ofrecer compatibilidad con versiones anteriores a SQL
Server 2005. No puede trabajar directamente con los
datos de estas tablas del sistema. Recomendamos
obtener acceso a los metadatos de SQL Server
mediante las vistas de catlogo.

Vistas
Una vista es una tabla virtual cuyo contenido est definido por una consulta.
Al igual que una tabla real, una vista consta de un conjunto de columnas y
filas de datos con un nombre. Sin embargo, a menos que est indizada, una
vista no existe como conjunto de valores de datos almacenados en una base
de datos. Las filas y las columnas de datos proceden de tablas a las que se
hace referencia en la consulta que define la vista y se producen de forma
dinmica cuando se hace referencia a la vista.
Una vista acta como filtro de las tablas subyacentes a las que se hace
referencia en ella. La consulta que define la vista puede provenir de una o de
varias tablas, o bien de otras vistas de la base de datos actual u otras bases
de datos. Asimismo, es posible utilizar las consultas distribuidas para definir
vistas que utilicen datos de orgenes heterogneos. Esto puede resultar de
utilidad, por ejemplo, si se desea combinar datos de estructura similar que
proceden de distintos servidores, cada uno de los cuales almacena los datos
para una regin distinta de la organizacin.
No existe ninguna restriccin a la hora de consultar vistas y muy pocas
restricciones a la hora de modificar los datos de stas.
En esta ilustracin se muestra una vista basada en dos tablas:

Pgina 23 de 630

Tipos de vistas
En SQL Server 2005, se pueden crear vistas estndar, vistas indizadas y
vistas con particiones.
Vistas estndar
La combinacin de datos de una o ms tablas mediante una vista estndar
permite satisfacer la mayor parte de las ventajas de utilizar vistas. stas
incluyen centrarse en datos especficos y simplificar la manipulacin de
datos.
Vistas indizadas
Una vista indizada es una vista que se ha materializado. Esto significa que se
ha calculado y almacenado. Se puede indizar una vista creando un ndice
agrupado nico en ella. Las vistas indizadas mejoran de forma considerable
el rendimiento de algunos tipos de consultas. Las vistas indizadas funcionan
mejor para consultas que agregan muchas filas. No son adecuadas para
conjuntos de datos subyacentes que se actualizan frecuentemente
Vistas con particiones
Una vista con particiones rene datos horizontales con particiones de un
conjunto de tablas miembro en uno o ms servidores. Esto hace que los
datos aparezcan como si fueran de una tabla. Una vista que rene tablas
miembro en la misma instancia de SQL Server es una vista con particiones
local.
Escenarios de utilizacin de vistas
Las vistas suelen utilizarse para centrar, simplificar y personalizar la
percepcin de la base de datos para cada usuario. Las vistas pueden
emplearse como mecanismos de seguridad, que permiten a los usuarios
obtener acceso a los datos por medio de la vista, pero no les conceden el
Pgina 24 de 630

permiso de obtener acceso directo a las tablas base subyacentes a la vista.


Las vistas pueden utilizarse para proporcionar una interfaz compatible con
versiones anteriores con el fin de emular una tabla que exista pero cuyo
esquema ha cambiado.
Para centrarse en datos especficos
Las vistas permiten a los usuarios centrarse en datos de su inters y en
tareas especficas de las que son responsables. Los datos innecesarios o
sensibles pueden quedar fuera de la vista.
Para simplificar la manipulacin de datos
Las vistas permiten simplificar la forma en que los usuarios trabajan con los
datos. Las combinaciones, proyecciones, consultas UNION y consultas
SELECT que se utilizan con frecuencia pueden definirse como vistas para
que los usuarios no tengan que especificar todas las condiciones y
calificaciones cada vez que realicen una operacin adicional en los datos.
Por ejemplo, es posible crear como vista una consulta compleja que se utilice
para la elaboracin de informes y que realice subconsultas, combinaciones
externas y agregaciones para recuperar datos de un grupo de tablas. La vista
simplifica el acceso a los datos ya que evita la necesidad de escribir o enviar
la consulta subyacente cada vez que se genera el informe; en lugar de eso,
se realiza una consulta en la vista. Tambin puede crear funciones en lnea
definidas por el usuario que funcionen de manera lgica como vistas con
parmetros o como vistas con parmetros de condiciones de bsqueda de
clusulas WHERE u otras partes de la consulta.
Para proporcionar compatibilidad con versiones anteriores
Las vistas permiten crear una interfaz compatible con versiones anteriores
para una tabla cuando su esquema cambia. Por ejemplo, una aplicacin
puede haber hecho referencia a una tabla no normalizada que tiene el
siguiente esquema:
Empleados(Nombre, FechaNacimiento, Sueldo, Departamento, Edificio)
Para evitar el almacenamiento redundante de datos en la base de datos,
puede normalizar la tabla dividindola en las dos siguientes tablas:
Empleados2(Nombre, FechaNacimiento, Sueldo, Id_Dep)
Departamento(Id_Dep, Edificio)
Para proporcionar una interfaz compatible con versiones anteriores que siga
haciendo referencia a los datos de Empleados, puede eliminar la tabla
Empleados antigua y reemplazarla por la siguiente vista:
CREATE VIEW Employee AS
SELECT Name, BirthDate, Salary, BuildingName
FROM Employee2 e, Department d
WHERE e.DeptId = d.DeptId

Pgina 25 de 630

Las aplicaciones que realizaban consultas en la tabla Empleados, ahora


pueden obtener sus datos desde la vista Empleados. No es necesario
cambiar la aplicacin si slo lee desde Empleados. A veces, las aplicaciones
que actualizan Empleados tambin pueden admitirse agregando
desencadenadores INSTEAD OF a la nueva vista para asignar operaciones
INSERT, DELETE y UPDATE en la vista a las tablas subyacentes.
Para personalizar datos
Las vistas permiten que varios usuarios puedan ver los datos de modo
distinto, aunque estn utilizando los mismos simultneamente. Esto resulta
de gran utilidad cuando usuarios que tienen distintos intereses y
calificaciones trabajan con la misma base de datos. Por ejemplo, es posible
crear una vista que recupere nicamente los datos para los clientes con los
que trabaja el responsable comercial de una cuenta. La vista puede
determinar qu datos deben recuperarse en funcin del identificador de inicio
de sesin del responsable comercial que utilice la vista.
Para exportar e importar datos
Es posible utilizar vistas para exportar datos a otras aplicaciones. Por
ejemplo, es posible que quiera utilizar la informacin de varias tablas para
analizar los datos mediante Microsoft Excel. Para ello, puede crear una vista
a partir de las tablas. A continuacin, puede utilizar la herramienta bcp para
exportar los datos definidos por la vista.
Para combinar datos de particiones entre servidores
El operador de conjuntos UNION de Transact-SQL puede utilizarse dentro de
una vista para combinar los resultados de dos o ms consultas de tablas
distintas en un solo conjunto. Esta combinacin se muestra al usuario como
una tabla nica denominada vista con particiones. Por ejemplo, si una tabla
contiene datos de ventas de Washington y otra tabla contiene datos de
ventas de California, podra crearse una vista a partir de la UNION de ambas
tablas. La vista representada incluye los datos de ventas de ambas zonas.

ndices
Al igual que el ndice de un libro, el ndice de una base de datos permite
encontrar rpidamente informacin especfica en una tabla o vista indizada.
Un ndice contiene claves generadas a partir de una o varias columnas de la
tabla o la vista y punteros que asignan la ubicacin de almacenamiento de los
datos especificados. Puede mejorar notablemente el rendimiento de las
aplicaciones y consultas de bases de datos creando ndices correctamente
diseados para que sean compatibles con las consultas. Los ndices pueden
reducir la cantidad de datos que se deben leer para devolver el conjunto de
resultados de la consulta. Los ndices tambin pueden exigir la unicidad en
las filas de una tabla, lo que se garantiza la integridad de los datos de la
tabla.

Pgina 26 de 630

Tipo de ndices
Tipo de ndice
Agrupado

No agrupado

nico

ndice con
columnas incluidas
Vistas indizadas

Texto

XML

Descripcin
Un ndice agrupado ordena y almacena las filas de
datos de la tabla o vista por orden en funcin de la
clave del ndice agrupado. El ndice agrupado se
implementa como una estructura de rbol b que admite
la recuperacin rpida de las filas a partir de los valores
de las claves del ndice agrupado.
Los ndices no agrupados se pueden definir en una
tabla o vista con un ndice agrupado o en un montn.
Cada fila del ndice no agrupado contiene un valor de
clave no agrupada y un localizador de fila. Este
localizador apunta a la fila de datos del ndice agrupado
o el montn que contiene el valor de clave. Las filas del
ndice se almacenan en el mismo orden que los valores
de la clave del ndice, pero no se garantiza que las filas
de datos estn en un determinado orden a menos que
se cree un ndice agrupado en la tabla.
Un ndice nico garantiza que la clave de ndice no
contenga valores duplicados y, por tanto, cada fila de la
tabla o vista es en cierta forma nica.
Tanto los ndices agrupados como los no agrupados
pueden ser nicos.
ndice no agrupado que se extiende para incluir
columnas sin clave adems de las columnas de clave.
Un ndice en una vista materializa (ejecuta) la vista, y el
conjunto de resultados se almacena de forma
permanente en un ndice agrupado nico, del mismo
modo que se almacena una tabla con un ndice
agrupado. Los ndices no agrupados de la vista se
pueden agregar una vez creado el ndice agrupado.
Tipo especial de ndice funcional basado en smbolos
(token) que crea y mantiene el servicio del Motor de
texto completo de Microsoft para SQL Server
(MSFTESQL). Proporciona la compatibilidad adecuada
para bsquedas de texto complejas en datos de
cadenas de caracteres.
Representacin dividida y permanente de los objetos
XML binarios grandes (BLOB) de la columna de tipo de
datos xml.

Procedimientos Almacenados
Cuando crea una aplicacin con Microsoft SQL Server 2005, el lenguaje de
programacin Transact-SQL es la principal interfaz de programacin entre las
aplicaciones y la base de datos de Microsoft SQL Server. Cuando utiliza

Pgina 27 de 630

programas Transact-SQL, dispone de dos mtodos para almacenar y ejecutar


los programas.
Puede almacenar los programas localmente y crear aplicaciones que envan
los comandos a SQL Server y procesan los resultados.
Puede almacenar los programas como procedimientos almacenados en SQL
Server y crear aplicaciones que ejecutan los procedimientos almacenados y
procesan los resultados.
Los procedimientos almacenados de Microsoft SQL Server son similares a los
procedimientos de otros lenguajes de programacin en el sentido en que
pueden:
Aceptar parmetros de entrada y devolver varios valores en forma de
parmetros de salida al lote o al procedimiento que realiza la llamada.
Contener instrucciones de programacin que realicen operaciones en la base
de datos, incluidas las llamadas a otros procedimientos.
Devolver un valor de estado a un lote o a un procedimiento que realiza una
llamada para indicar si la operacin se ha realizado correctamente o se han
producido errores (y el motivo de stos).
Puede utilizar la instruccin EXECUTE de Transact-SQL para ejecutar un
procedimiento almacenado. Los procedimientos almacenados difieren de las
funciones en que no devuelven valores en lugar de sus nombres ni pueden
utilizarse directamente en una expresin.
Utilizar procedimientos almacenados en SQL Server en vez de programas
Transact-SQL almacenados localmente en equipos cliente presenta las
siguientes ventajas:
Se registran en el servidor.
Pueden incluir atributos de seguridad (como permisos) y cadenas de
propiedad; adems se les pueden asociar certificados. Los usuarios pueden
disponer de permiso para ejecutar un procedimiento almacenado sin
necesidad de contar con permisos directos en los objetos a los que se hace
referencia en el procedimiento.
Mejoran la seguridad de la aplicacin. Los procedimientos almacenados con
parmetros pueden ayudar a proteger la aplicacin ante ataques por
inyeccin de cdigo SQL.
Permiten una programacin modular. Puede crear el procedimiento una vez y
llamarlo desde el programa tantas veces como desee. As, puede mejorar el
mantenimiento de la aplicacin y permitir que las aplicaciones tengan acceso
a la base de datos de manera uniforme.
Constituyen cdigo con nombre que permite el enlace diferido. Esto
proporciona un nivel de direccionamiento indirecto que facilita la evolucin del
cdigo.

Pgina 28 de 630

Pueden reducir el trfico de red. Una operacin que necesite centenares de


lneas de cdigo Transact-SQL puede realizarse mediante una sola
instruccin que ejecute el cdigo en un procedimiento, en vez de enviar
cientos de lneas de cdigo por la red.

Tipos de Procedimientos Almacenados


En Microsoft SQL Server 2005 hay disponibles varios tipos de procedimientos
almacenados. En este tema se describen de forma resumida los tipos de
procedimientos almacenados y se incluyen ejemplos de cada uno de ellos.
Procedimientos almacenados definidos por el usuario
Los procedimientos almacenados son mdulos o rutinas que encapsulan
cdigo para su reutilizacin. Un procedimiento almacenado puede incluir
parmetros de entrada, devolver resultados tabulares o escalares y mensajes
para el cliente, invocar instrucciones de lenguaje de definicin de datos (DDL)
e instrucciones de lenguaje de manipulacin de datos (DML), as como
devolver parmetros de salida. En SQL Server 2005 existen dos tipos de
procedimientos almacenados: Transact-SQL o CLR.
Transact-SQL
Un procedimiento almacenado Transact-SQL es una coleccin
guardada de instrucciones Transact-SQL que puede tomar y devolver
los parmetros proporcionados por el usuario. Por ejemplo, un
procedimiento almacenado puede contener las instrucciones
necesarias para insertar una nueva fila en una o ms tablas segn la
informacin suministrada por la aplicacin cliente o es posible que el
procedimiento almacenado devuelva datos de la base de datos a la
aplicacin cliente. Por ejemplo, una aplicacin Web de comercio
electrnico puede utilizar un procedimiento almacenado para devolver
informacin acerca de determinados productos en funcin de los
criterios de bsqueda especificados por el usuario en lnea.
CLR
Un procedimiento almacenado CLR es una referencia a un mtodo
Common Language Runtime (CLR) de Microsoft .NET Framework que
puede aceptar y devolver parmetros suministrados por el usuario. Se
implementan como mtodos pblicos y estticos en una clase de un
ensamblado de .NET Framework. Para obtener ms informacin, vea
Procedimientos almacenados CLR (en ingls).
Procedimientos almacenados del sistema
Muchas de las actividades administrativas en SQL Server 2005 se realizan
mediante un tipo especial de procedimiento conocido como procedimiento
almacenado del sistema. Por ejemplo, sys.sp_changedbowner es un
procedimiento almacenado del sistema. Los procedimientos almacenados del
sistema se almacenan fsicamente en la base de datos Resource e incluyen
el prefijo sp_.
Pgina 29 de 630

Los procedimientos almacenados del sistema aparecen de forma lgica en el


esquema sys de cada base de datos definida por el usuario y el sistema. En
SQL Server 2005, los permisos GRANT, DENY y REVOKE se pueden aplicar
a los procedimientos almacenados del sistema. Para obtener una lista
completa de los procedimientos almacenados del sistema, vea
Procedimientos almacenados del sistema (Transact-SQL).
SQL Server admite los procedimientos almacenados del sistema que
proporcionan una interfaz desde SQL Server a los programas externos para
varias actividades de mantenimiento. Estos procedimientos almacenados
extendidos utilizan el prefijo xp_.

Funciones definidas por el Usuario


Al igual que las funciones en los lenguajes de programacin, las funciones
definidas por el usuario de Microsoft SQL Server 2005 son rutinas que
aceptan parmetros, realizan una accin, como un clculo complejo, y
devuelven el resultado de esa accin como un valor. El valor devuelto puede
ser un valor escalar nico o un conjunto de resultados.
Ventajas de las funciones definidas por el usuario
Las ventajas de utilizar las funciones definidas por el usuario en SQL Server
son:
Permiten una programacin modular. Puede crear la funcin una vez,
almacenarla en la base de datos y llamarla desde el programa tantas veces
como desee. Las funciones definidas por el usuario se pueden modificar,
independientemente del cdigo de origen del programa.
Permiten una ejecucin ms rpida. Al igual que los procedimientos
almacenados, las funciones definidas por el usuario Transact-SQL reducen el
costo de compilacin del cdigo Transact-SQL almacenando los planes en la
cach y reutilizndolos para ejecuciones repetidas. Esto significa que no es
necesario volver a analizar y optimizar la funcin definida por el usuario con
cada uso, lo que permite obtener tiempos de ejecucin mucho ms rpidos.
Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las
funciones Transact-SQL para tareas de clculo, manipulacin de cadenas y
lgica empresarial. Las funciones Transact-SQL se adecuan mejor a la lgica
intensiva del acceso a datos.
Pueden reducir el trfico de red. Una operacin que filtra datos basndose en
restricciones complejas que no se puede expresar en una sola expresin
escalar se puede expresar como una funcin. La funcin se puede invocar en
la clusula WHERE para reducir el nmero de filas que se envan al cliente.
Componentes de una funcin definida por el usuario
En SQL Server 2005, las funciones definidas por el usuario se pueden
escribir en Transact-SQL, o en cualquier lenguaje de programacin .NET.
Para obtener ms informacin acerca del uso de lenguajes .NET en
funciones, vea CLR User-Defined Functions.

Pgina 30 de 630

Todas las funciones definidas por el usuario tienen la misma estructura de


dos partes: un encabezado y un cuerpo. La funcin toma cero o ms
parmetros de entrada y devuelve un valor escalar o una tabla.
El encabezado define:
Nombre de funcin con nombre de propietario o esquema opcional
Nombre del parmetro de entrada y tipo de datos
Opciones aplicables al parmetro de entrada
Tipo de datos de parmetro devueltos y nombre opcional
Opciones aplicables al parmetro devuelto
El cuerpo define la accin o la lgica que la funcin va a realizar. Contiene:
Una o ms instrucciones Transact-SQL que ejecutan la lgica de la funcin
Una referencia a un ensamblado .NET

Tipos de funciones
SQL Server 2005 admite funciones definidas por el usuario y funciones del
sistema integradas.
Funciones escalares
Las funciones escalares definidas por el usuario devuelven un nico valor de
datos del tipo definido. Las funciones escalares en lnea no tienen cuerpo; el
valor escalar es el resultado de una sola instruccin. Para una funcin escalar
de mltiples instrucciones, el cuerpo de la funcin, definido en un bloque
BEGIN...END, contiene una serie de instrucciones Transact-SQL que
devuelven el valor nico. El tipo devuelto puede ser de cualquier tipo de datos
excepto text, ntext, image, cursor y timestamp.
Funciones con valores de tabla
Las funciones con valores de tabla definidas por el usuario devuelven un tipo
de datos table. Las funciones con valores de tabla en lnea no tienen cuerpo;
la tabla es el conjunto de resultados de una sola instruccin SELECT.
Funciones integradas
SQL Server proporciona las funciones integradas para ayudarle a realizar
diversas operaciones. No se pueden modificar. Puede utilizar funciones
integradas en instrucciones Transact-SQL para:
Tener acceso a informacin de las tablas del sistema de SQL Server sin tener
acceso a las tablas del sistema directamente.
Realizar tareas habituales como SUM, GETDATE o IDENTITY.
Las funciones integradas devuelven tipos de datos escalares o table. Por
ejemplo, @@ERROR devuelve 0 si la ltima instruccin Transact-SQL se
ejecut correctamente. Si la instruccin gener un error, @@ERROR
Pgina 31 de 630

devuelve el nmero de error. Y la funcin SUM(parameter) devuelve la suma


de todos los valores del parmetro.

Sinnimos
Microsoft SQL Server 2005 incorpora el concepto de sinnimo. Un sinnimo
es un nombre alternativo para un objeto de mbito de esquema. Las
aplicaciones cliente pueden utilizar un nombre de una sola parte para hacer
referencia a un objeto base utilizando un sinnimo en lugar de utilizar un
nombre de dos, tres o cuatro partes para hacer referencia al objeto base.
Un sinnimo es un objeto de base de datos que sirve para los siguientes
objetivos:
Proporciona un nombre alternativo para otro objeto de base de datos,
denominado objeto base, que puede existir en un servidor local o remoto.
Proporciona una capa de abstraccin que protege una aplicacin cliente de
cambios realizados en el nombre o la ubicacin del objeto base.

Transaccin
Una transaccin es una secuencia de operaciones realizadas como una sola
unidad lgica de trabajo. Una unidad lgica de trabajo debe exhibir cuatro
propiedades, conocidas como propiedades de atomicidad, coherencia,
aislamiento y durabilidad (ACID), para ser calificada como transaccin.
Atomicidad. Una transaccin debe ser una unidad atmica de trabajo, tanto si
se realizan todas sus modificaciones en los datos, como si no se realiza
ninguna de ellas.
Coherencia. Cuando finaliza, una transaccin debe dejar todos los datos en
un estado coherente. En una base de datos relacional, se deben aplicar todas
las reglas a las modificaciones de la transaccin para mantener la integridad
de todos los datos. Todas las estructuras internas de datos, como ndices de
rbol b o listas doblemente vinculadas, deben estar correctas al final de la
transaccin.
Aislamiento. Las modificaciones realizadas por transacciones simultneas se
deben aislar de las modificaciones llevadas a cabo por otras transacciones
simultneas. Una transaccin reconoce los datos en el estado en que
estaban antes de que otra transaccin simultnea los modificara o despus
de que la segunda transaccin haya concluido, pero no reconoce un estado
intermedio. Esto se conoce como seriabilidad, ya que deriva en la capacidad
de volver a cargar los datos iniciales y reproducir una serie de transacciones
para finalizar con los datos en el mismo estado en que estaban despus de
realizar las transacciones originales.
Durabilidad. Una vez concluida una transaccin, sus efectos son
permanentes en el sistema. Las modificaciones persisten an en el caso de
producirse un error del sistema.
Pgina 32 de 630

Especificar y exigir transacciones


Los programadores de SQL son los responsables de iniciar y finalizar las
transacciones en puntos que exijan la coherencia lgica de los datos. El
programador debe definir la secuencia de modificaciones de datos que los
dejan en un estado coherente en relacin con las reglas corporativas de la
organizacin. El programador incluye estas instrucciones de modificacin en
una sola transaccin de forma que SQL Server 2005 Database Engine (Motor
de base de datos de SQL Server 2005) puede exigir la integridad fsica de la
misma.
Es responsabilidad de un sistema de base de datos corporativo, como una
instancia de Database Engine (Motor de base de datos), proporcionar los
mecanismos que aseguren la integridad fsica de cada transaccin. Database
Engine (Motor de base de datos) proporciona:
Servicios de bloqueo que preserven el aislamiento de la transaccin.
Servicios de registro que aseguren la durabilidad de la transaccin. Aunque
se produzca un error en el hardware del servidor, el sistema operativo o la
instancia de Database Engine (Motor de base de datos), la instancia utiliza
registros de transacciones, al reiniciar, para revertir automticamente las
transacciones incompletas al punto en que se produjo el error del sistema.
Caractersticas de administracin de transacciones que exigen la atomicidad
y coherencia de la transaccin. Una vez iniciada una transaccin, debe
concluirse correctamente; en caso contrario, la instancia de Database Engine
(Motor de base de datos) deshar todas las modificaciones de datos
realizadas desde que se inici la transaccin.

Pgina 33 de 630

Tipos de datos
Los objetos que contienen datos tienen asociado un tipo de datos que define
la clase de datos, por ejemplo, carcter, entero o binario, que puede contener
el objeto. Los siguientes objetos tienen tipos de datos:
Columnas de tablas y vistas.
Parmetros de procedimientos almacenados.
Variables.
Funciones de Transact-SQL que devuelven uno o ms valores de datos de un
tipo de datos especfico.
Procedimientos almacenados que devuelven un cdigo, que siempre es de
tipo integer.
Al asignar un tipo de datos a un objeto se definen cuatro atributos del objeto:
El tipo de datos que contiene el objeto.
La longitud o tamao del valor almacenado.
La precisin del nmero (slo tipos de datos numricos).
La escala del nmero (slo tipos de datos numricos).
Todos los datos almacenados en Microsoft SQL Server 2005 deben ser
compatibles con uno de estos tipos de datos bsicos.
Tambin pueden crearse dos tipos de datos definidos por el usuario:
Los tipos de datos de alias se crean a partir de tipos de datos bsicos.
Proporcionan un mecanismo para aplicar un nombre a un tipo de datos que
sea ms descriptivo que los tipos de valores que va a contener el objeto. Esto
puede facilitar al administrador de la base de datos o al programador
entender el uso que se piensa de cualquier objeto que se defina con el tipo
de datos.
Los tipos de datos definidos por el usuario CLR se basan en tipos de datos
creados en cdigo administrado y cargados en un ensamblado de SQL
Server.
Los tipos de datos de SQL Server 2005 se organizan en las siguientes
categoras:
Numricos exactos
o bigint
o decimal
o int
Pgina 34 de 630

o
o
o
o
o
o

numeric
smallint
money
tinyint
smallmoney
bit

Cadenas de caracteres Unicode


o nchar
o ntext
o nvarchar
Numricos aproximados
o float
o real
Cadenas binarias
o binary
o image
o varbinary
Fecha y hora
o datetime
o smalldatetime
Otros tipos de datos
o
o
o
o
o
o

cursor
timestamp
sql_variant
uniqueidentifier
table
xml

Cadenas de caracteres
o char
o text
o varchar
En SQL Server 2005, segn las caractersticas de almacenamiento, algunos
tipos de datos estn designados como pertenecientes a los siguientes
grupos:
Tipos de datos de valores grandes: varchar(max), nvarchar(max) y
varbinary(max)
Tipos de datos de objetos grandes: text, ntext, image, varchar(max),
nvarchar(max), varbinary(max) y xml

Pgina 35 de 630

Precisin, escala y longitud


La precisin es el nmero de dgitos de un nmero. La escala es el nmero
de dgitos situados a la derecha de la coma decimal de un nmero. Por
ejemplo, el nmero 123,45 tiene una precisin de 5 y una escala de 2.
En SQL Server 2005, la precisin mxima predeterminada de los tipos de
datos numeric y decimal es 38. En versiones anteriores de SQL Server, el
valor predeterminado mximo es 28.
La longitud de un tipo de datos numrico es el nmero de bytes utilizados
para almacenar el nmero. La longitud para una cadena de caracteres o tipo
de datos Unicode es el nmero de caracteres. La longitud para los tipos de
datos binary, varbinary y image es el nmero de bytes. Por ejemplo, un tipo
de datos int que puede contener 10 dgitos se almacena en 4 bytes y no
acepta coma decimal. El tipo de datos int tiene una precisin de 10, una
longitud de 4 y una escala de 0.
Cuando se concatenan dos expresiones char, varchar, binary o varbinary,
la longitud de la expresin resultante es la suma de las longitudes de las dos
expresiones de origen u 8.000 caracteres, lo que sea menor.
Cuando se concatenan dos expresiones nchar o nvarchar, la longitud de la
expresin resultante es la suma de las longitudes de las dos expresiones de
origen o 4.000 caracteres, lo que sea menor.
Cuando se comparan dos expresiones del mismo tipo de datos pero de
distintas longitudes mediante UNION, EXCEPT o INTERSECT, la longitud
resultante es la longitud mxima de las dos expresiones.
La precisin y la escala de los tipos de datos numricos, excepto decimal,
son fijas. Si un operador aritmtico tiene dos expresiones del mismo tipo, el
resultado tiene el mismo tipo de datos con la precisin y la escala definidas
para ese tipo de datos. Si un operador tiene dos expresiones con tipos de
datos numricos diferentes, las reglas de prioridad de tipos de datos definen
el tipo de datos del resultado. El resultado tiene la precisin y la escala
definidas para el tipo de datos que le corresponde.
Esta tabla define cmo se calculan la precisin y la escala del resultado de la
operacin cuando ste es de tipo decimal. El resultado es decimal cuando
se cumple alguna de las siguientes condiciones:
Ambas expresiones son de tipo decimal.
Una expresin es decimal y la otra es de un tipo de datos con una prioridad
menor que decimal.
Las expresiones de operando se denotan como expresin e1, con precisin
p1 y escala s1, y expresin e2, con precisin p2 y escala s2. La precisin y la

Pgina 36 de 630

escala de cualquier expresin que no sea decimal es la precisin y la escala


definidas para el tipo de datos de la expresin.
Operacin

Precisin del resultado

e1 + e2

mx(s1, s2) + mx(p1-s1,


p2-s2) + 1
mx(s1, s2) + mx(p1-s1,
p2-s2) + 1
p1 + p2 + 1
p1 - s1 + s2 + mx(6, s1
+ p2 + 1)
mx(s1, s2) + mx(p1-s1,
p2-s2)

e1 - e2
e1 * e2
e1 / e2
e1 { UNION | EXCEPT |
INTERSECT } e2

Escala del
resultado *
mx(s1, s2)
mx(s1, s2)
s1 + s2
mx(6, s1 + p2 +
1)
mx(s1, s2)

* La precisin y la escala del resultado tienen un valor mximo absoluto igual


a 38. Cuando la precisin de un resultado es mayor que 38, la escala
correspondiente se reduce para evitar que la parte entera del resultado se
trunque.

Constantes
Una constante es un smbolo que representa el valor especfico de un dato.
El formato de las constantes depende del tipo de datos del valor que
representa. Las constantes se llaman tambin literales. En las siguientes
tablas se muestran algunos ejemplos del uso de las constantes.
Constantes usadas en
Cadenas de caracteres
Cadenas Unicode
Constantes de cadenas
binarias
Constantes bit
Constantes datetime

Constantes integer
Constantes decimal
Constantes float y real
Constantes money
Constantes
uniqueidentifier

Ejemplo
'O''Brien'
'The level for job_id: %d should be between %d
and %d.'
N'Michl'
0x12Ef
0x69048AEFDD010E
0o1
'April 15, 1998'
'04/15/98'
'14:30:24'
'04:24 PM'
1894
2
1894.1204
2.0
101.5E5
0.5E-2
$12
$542023.14
0xff19966f868b11d0b42d00c04fc964ff
'6F9619FF-8B86-D011-B42D-00C04FC964FF'
Pgina 37 de 630

Para las constantes numricas, use los operadores unarios + y - cuando sea
necesario especificar el signo del valor numrico:
+$156.45
-73.52E8
-129.42
+442
Las constantes de carcter y Unicode se asignan a la intercalacin
predeterminada de la base de datos actual, a menos que asigne una
intercalacin especfica mediante la clusula COLLATE, por ejemplo:
'abc' COLLATE French_CI_AI
N'lustig' COLLATE German_Phonebook_CS_AS
Las constantes se pueden usar de muchas formas en Transact-SQL. A
continuacin se muestran algunos ejemplos:
Como un valor constante en una expresin aritmtica:
SELECT Price + $.10
FROM MyTable
Como el valor de datos con el que se compara una columna en una clusula
WHERE:
SELECT *
FROM MyTable
WHERE LastName = 'O''Brien'
Como el valor de datos que se va a colocar en una variable:
SET @DecimalVar = -1200.02
Como el valor de datos que debe colocarse en una columna de la fila actual.
Esto se especifica con la clusula SET de la instruccin UPDATE o la
clusula VALUES de una instruccin INSERT:
UPDATE MyTable
SET Price = $99.99
WHERE PartNmbr = 1234
INSERT INTO MyTable VALUES (1235, $88.88)
Como la cadena de caracteres que especifica el texto del mensaje emitido
por una instruccin PRINT o RAISERROR:
PRINT 'This is a message.'

Pgina 38 de 630

Como el valor que se va a probar en una instruccin condicional, como, por


ejemplo, una instruccin IF o funciones CASE:
IF (@@SALESTOTAL > $100000.00)
EXECUTE Give_Bonus_Procedure

Programa 5 Estrellas

SQL Server 2005


Estrella1
Unidad 2
Base de Datos Relacional

2007

Pgina 39 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 40 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 41 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 42 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 43 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 44 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 45 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 46 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 47 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 48 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 49 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 50 de 630

Unidad 2: Base de Datos Relacional


Objetivos
Dar una visin acerca:
Bases de datos relacionales y RDBMS
Relaciones
Normalizacin
Integridad

Pgina 51 de 630

Base de Datos Relacional


Su idea fundamental es el uso de "relaciones". Estas relaciones podran
considerarse en forma lgica como conjuntos de datos llamados "tuplas".
Esto es pensando en cada relacin como si fuese una tabla que est
compuesta por registros (las filas de una tabla), que representaran las tuplas,
y campos (las columnas de una tabla).
En este modelo, el lugar y la forma en que se almacenan los datos no tienen
relevancia (a diferencia de otros modelos como el jerrquico y el de red).
Esto tiene la considerable ventaja de que es ms fcil de entender y de
utilizar para un usuario espordico de la base de datos.
La informacin puede ser recuperada o almacenada mediante consultas que
ofrecen una amplia flexibilidad y poder para administrar la informacin.
El lenguaje ms habitual para construir las consultas a bases de datos
relacionales es SQL, Structured Query Language o Lenguaje
Estructurado de Consultas, un estndar implementado por los principales
motores o sistemas de gestin de bases de datos relacionales.
Durante su diseo, una base de datos relacional pasa por un proceso al que
se le conoce como normalizacin de una base de datos.
Un RDBMS es un Sistema Administrador de Bases de Datos
Relacionales. RDBMS viene del acrnimo en ingls Relational Data Base
Management System.

Los RDBMS proporcionan el ambiente adecuado para gestionar una base


de datos.

Reglas de Codd
En 1985 el Dr. Edgar Frank Codd public trece reglas para evaluar si un
DBMS (DataBase Management System) puede considerarse un RDBMS
(Relational DataBase Management System), o dicho ms concisamente, si
un sistema de bases de datos puede considerarse o no relacional.
Regla 0
Para que un sistema se denomine sistema de administracin de bases de
datos relacionales, debe usar (exclusivamente) sus capacidades
relacionales para gestionar la base de datos.
Regla de acceso garantizado.
Para todos y cada uno de los datos (valores atmicos) de una Base de
Datos Relacional (BDR) se garantiza que son accesibles a nivel lgico
utilizando una combinacin de nombre de tabla, valor de clave primaria y
nombre de columna.
Pgina 52 de 630

Cualquier dato almacenado en una BDR tiene que poder ser direccionado
unvocamente. Para ello hay que indicar en qu tabla est, cul es la
columna y cul es la fila (mediante la clave primaria).
Por tanto se necesita el concepto de clave primaria, que no es soportado
en muchas implementaciones. En estos casos, para lograr un efecto
similar se puede hacer lo siguiente:
Hacer que los atributos clave primaria no puedan ser nulos (NOT NULL).
Crear un ndice nico sobre la clave primaria.
No eliminar nunca el ndice.

Tratamiento sistemtico de valores nulos.


Los valores nulos (que son distintos de la cadena vaca, blancos, 0, ...) se
soportan en los SGBD totalmente relacionales para representar
informacin desconocida o no aplicable de manera sistemtica,
independientemente del tipo de datos.
Se reconoce la necesidad de la existencia de valores nulos, para un
tratamiento sistemtico de los mismos.
Hay problemas para soportar los valores nulos en las operaciones
relacionales, especialmente en las operaciones lgicas.
Lgica trivaluada. Es una posible solucin, existen tres (no dos) valores de
verdad: Verdadero, Falso y Desconocido (null). Se crean tablas de
verdad para las operaciones lgicas:
o
o
o
o
o

null Y null = null


Verdadero Y null = null
Falso Y null = Falso
Verdadero O null = Verdadero
etc.

Diccionario dinmico en lnea basado en el modelo relacional.


La descripcin de la base de datos se representa a nivel lgico de la
misma manera que los datos normales, de modo que los usuarios
autorizados pueden aplicar el mismo lenguaje relacional a su consulta,
igual que lo aplican a los datos normales.
Regla del sublenguaje de datos completo
Un sistema relacional debe soportar varios lenguajes y varios modos de
uso de terminal (ej: rellenar formularios, etc.). Sin embargo, debe existir al
menos un lenguaje cuyas sentencias sean expresables, mediante una
sintaxis bien definida, como cadenas de caracteres y que sea completo,
soportando:
Definicin de datos
Definicin de vistas
Manipulacin de datos (interactiva y por programa)

Pgina 53 de 630

Limitantes de integridad
Limitantes de transaccin (iniciar, realizar, deshacer) (Begin, commit,
rollback).
Adems de poder tener interfaces ms amigables para hacer consultas,
etc. siempre debe de haber una manera de hacerlo todo de manera
textual, que es tanto como decir que pueda ser incorporada en un
programa tradicional.
Un lenguaje que cumple esto en gran medida es SQL.

Regla de actualizacin de vistas


Todas las vistas que son tericamente actualizables se pueden actualizar
por el sistema.
El

problema es determinar cules son


actualizables, ya que no est muy claro.

las

vistas

tericamente

Cada sistema puede hacer unas suposiciones particulares sobre las vistas
que son actualizables.

Insercin, actualizacin y borrado de alto nivel


La capacidad de manejar una relacin base o derivada como un solo
operando se aplica no slo a la recuperacin de los datos (consultas), sino
tambin a la insercin, actualizacin y borrado de datos.
Esto es, el lenguaje de manejo de datos tambin debe ser de alto nivel.
Algunas bases de datos inicialmente slo podan modificar las tuplas de la
base de datos de una en una (un registro de cada vez).
Independencia fsica de los datos
Los programas de aplicacin y actividades del terminal permanecen
inalterados a nivel fisico cuandoquiera que se realicen cambios en las
representaciones de almacenamiento o mtodos de acceso.
El modelo relacional es un modelo lgico de datos, y oculta las caractersticas
de su representacin fsica.
Es la capacidad de modificar el esquema interno sin tener que alterar el
esquema conceptual (o los externos). Por ejemplo, puede ser necesario
reorganizar ciertos archivos fsicos con el fin de mejorar el rendimiento de
las operaciones de consulta o de actualizacin de datos. la independencia
fsica se refiere slo a la separacin entre las aplicaciones y las
estructuras fsicas de almacenamiento.
Independencia lgica de los datos
Los programas de aplicacin y actividades del terminal permanecen
inalterados a nivel lgico cuando quiera que se realicen cambios a las
tablas base que preservan la informacin.
Cuando se modifica el esquema lgico preservando informacin (no
valdra p.ej. eliminar un atributo) no es necesario modificar nada en
niveles superiores.
Pgina 54 de 630

Ejemplos de cambios que preservan la informacin:


o Aadir un atributo a una tabla base.
o Sustituir dos tablas base por la unin de las mismas.
Usando vistas de la unin puedo recrear las tablas
anteriores...

Independencia de integridad.
Los limitantes de integridad especficos para una determinada base de
datos relacional deben poder ser definidos en el sublenguaje de datos
relacional, y almacenables en el catlogo, no en los programas de
aplicacin.
El objetivo de las bases de datos no es slo almacenar los datos, sino
tambin sus relaciones y evitar que estas (limitantes) se codifiquen en
los programas. Por tanto en una BDR se deben poder definir limitantes
de integridad.
Cada vez se van ampliando ms los tipos de limitantes de integridad que
se pueden utilizar en los SGBDR, aunque hasta hace poco eran muy
escasos.
Como parte de los limitantes inherentes al modelo relacional (forman parte
de su definicin) estn:
o Una BDR tiene integridad de entidad. Es decir, toda tabla debe
tener una clave primaria.
o Una BDR tiene integridad referencial. Es decir, toda clave
externa no nula debe existir en la relacin donde es primaria.

Independencia de distribucin.
Una BDR tiene independencia de distribucin.
Las mismas rdenes y programas se ejecutan igual en una BD
centralizada que en una distribuida.
Las BDR son fcilmente distribuibles:
Se parten las tablas en fragmentos que se distribuyen.
Cuando se necesitan las tablas completas se recombinan usando
operaciones relacionales con los fragmentos.
Sin embargo se complica ms la gestin interna de la integridad, etc.
Esta regla es responsable de tres tipos de transparencia de distribucin:
o Transparencia de localizacin. El usuario tiene la impresin de
que trabaja con una BD local. (aspecto de la regla de
independencia fsica)
o Transparencia de fragmentacin. El usuario no se da cuenta de
que la relacin con que trabaja est fragmentada. (aspecto de la
regla de independencia lgica de datos).

Pgina 55 de 630

o Transparencia de replicacin. El usuario no se da cuenta de que


pueden existir copias (rplicas) de una misma relacin en
diferentes lugares.

Regla de la no subversin
Si un sistema relacional tiene un lenguaje de bajo nivel (un registro de
cada vez), ese bajo nivel no puede ser usado para saltarse (subvertir) las
reglas de integridad y los limitantes expresados en los lenguajes
relacionales de ms alto nivel (una relacin (conjunto de registros) de cada
vez)
Algunos problemas no se pueden solucionar directamente con el lenguaje
de alto nivel.
Normalmente se usa SQL inmerso en un lenguaje anfitrin para
solucionar estos problemas. Se utiliza el concepto de cursor para tratar
individualmente las tuplas de una relacin. En cualquier caso no debe
ser posible saltarse los limitantes de integridad impuestos al tratar las
tuplas a ese nivel.

Pgina 56 de 630

Diseo de Base de Datos


El diseo de una base de datos requiere un conocimiento profundo de las
funciones empresariales que se desean modelar, as como de las
caractersticas y conceptos de base de datos que se desea utilizar para
representar esas funciones empresariales. Asegrese de disear con
precisin la base de datos que utilizar para modelar el negocio porque el
cambio del diseo de la base de datos una vez implementada puede requerir
mucho tiempo. Por otra parte, una base de datos bien diseada ofrece un
mejor rendimiento.

Qu es un buen diseo de base de datos?


El proceso de diseo de una base de datos se gua por algunos principios. El
primero de ellos es que se debe evitar la informacin duplicada o, lo que es lo
mismo, los datos redundantes, porque malgastan el espacio y aumentan la
probabilidad de que se produzcan errores e incoherencias. El segundo
principio es que es importante que la informacin sea correcta y completa. Si
la base de datos contiene informacin incorrecta, los informes que recogen
informacin de la base de datos contendrn tambin informacin incorrecta y,
por lo tanto, las decisiones que se tome a partir de esos informes estarn mal
fundamentadas.
Un buen diseo de base de datos es, por lo tanto, aqul que:
Divide la informacin en tablas basadas en temas para reducir los datos
redundantes.
Proporciona a RDBMS la informacin necesaria para reunir la informacin
de las tablas cuando as se precise.
Ayuda a garantizar la exactitud e integridad de la informacin.
Satisface las necesidades de procesamiento de los datos y de generacin
de informes.

El proceso de diseo
El proceso de diseo consta de los siguientes pasos:
Determinar
la
finalidad
de
la
base
de
Esto le ayudar a estar preparado para los dems pasos.

datos.

Buscar
y
organizar
la
informacin
necesaria.
Rena todos los tipos de informacin que desee registrar en la base de
datos, como los nombres de productos o los nmeros de pedidos.
Dividir
la
informacin
en
tablas.
Divida los elementos de informacin en entidades o temas principales,
como Productos o Pedidos. Cada tema pasar a ser una tabla.
Pgina 57 de 630

Convertir
los
elementos
de
informacin
en
columnas.
Decida qu informacin desea almacenar en cada tabla. Cada
elemento se convertir en un campo y se mostrar como una columna
en la tabla. Por ejemplo, una tabla Empleados podra incluir campos
como Apellido y Telfono.
Especificar
claves
principales.
Elija la clave principal de cada tabla. La clave principal es una columna
que se utiliza para identificar inequvocamente cada fila, como Id. de
producto o Id. de pedido.
Definir
relaciones
entre
las
tablas.
Examine cada tabla y decida cmo se relacionan los datos de una
tabla con las dems tablas. Agregue campos a las tablas o cree
nuevas tablas para clarificar las relaciones segn sea necesario.
Ajustar
el
diseo.
Analice el diseo para detectar errores. Cree las tablas y agregue
algunos registros con datos de ejemplo. Compruebe si puede obtener
los resultados previstos de las tablas. Realice los ajustes necesarios
en el diseo.
Aplicar
las
reglas
de
normalizacin
Aplique reglas de normalizacin de los datos para comprobar si las
tablas estn estructuradas correctamente. Realice los ajustes
necesarios en las tablas.

Determinar la finalidad de la base de datos


Es conveniente plasmar en papel el propsito de la base de datos: cmo
piensa utilizarla y quin va a utilizarla. Para una pequea base de datos de
un negocio particular, por ejemplo, podra escribir algo tan simple como "La
base de datos de clientes contiene una lista de informacin de los clientes
para el envo masivo de correo electrnico y la generacin de informes". Si la
base de datos es ms compleja o la utilizan muchas personas, como ocurre
normalmente en un entorno corporativo, la finalidad podra definirse
fcilmente en uno o varios prrafos y debera incluir cundo y cmo va a
utilizar cada persona la base de datos. La idea es desarrollar una declaracin
de intenciones bien definida que sirva de referencia durante todo el proceso
de diseo. Esta declaracin de intenciones le permitir centrarse en los
objetivos a la hora de tomar decisiones.

Buscar y organizar la informacin necesaria


Para buscar y organizar la informacin necesaria, empiece con la informacin
existente. Por ejemplo, si registra los pedidos de compra en un libro contable
o guarda la informacin de los clientes en formularios en papel en un
archivador, puede reunir esos documentos y enumerar cada tipo de
informacin que contienen (por ejemplo, cada casilla de un formulario). Si no
Pgina 58 de 630

dispone de formularios, imagine que tiene que disear uno para registrar la
informacin de los clientes. Qu informacin incluira en el formulario? Qu
casillas creara? Identifique cada uno de estos elementos y cree un listado.
Suponga, por ejemplo, que guarda la lista de clientes en fichas. Cada ficha
podra contener un nombre de cliente, su direccin, ciudad, provincia, cdigo
postal y nmero de telfono. Cada uno de estos elementos representa una
columna posible de una tabla.
Cuando prepare esta lista, no se preocupe si no es perfecta al principio.
Simplemente, enumere cada elemento que se le ocurra. Si alguien ms va a
utilizar la base de datos, pdale tambin su opinin. Ms tarde podr ajustar
la lista.
A continuacin, considere los tipos de informes o la correspondencia que
desea producir con la base de datos. Por ejemplo, tal vez desee crear un
informe de ventas de productos que contenga las ventas por regin, o un
informe de resumen de inventario con los niveles de inventario de los
productos. Es posible que tambin desee generar cartas modelo para
envirselas a los clientes con un anuncio de una actividad de ventas o una
oferta. Disee el informe en su imaginacin y piense cmo le gustara que
fuera. Qu informacin incluira en el informe? Cree un listado de cada
elemento. Haga lo mismo para la carta modelo y para cualquier otro informe
que tenga pensado crear.

Detngase a pensar en los informes y en la correspondencia que desea crear


para identificar los elementos que necesita incluir en la base de datos.
Parece lgico crear un prototipo de cada informe o listado de salida y
considerar qu elementos necesita para crear el informe.
Un punto clave que hay que recordar es que debe descomponer cada pieza
de informacin en sus partes lgicas ms pequeas. En el caso de un
nombre, para poder utilizar el apellido, dividir el nombre en dos partes: el
Pgina 59 de 630

nombre y el apellido. Para ordenar un informe por nombre, por ejemplo, sera
til que el apellido de los clientes estuviera almacenado de forma
independiente. En general, si desea ordenar, buscar, calcular o generar
informes a partir de un elemento de informacin, debe incluir ese elemento en
su propio campo.
Piense en las preguntas que le gustara que la base de datos contestara. Por
ejemplo, cuntas ventas de un determinado producto se cerraron el pasado
mes? Dnde viven sus mejores clientes? Quin es el proveedor del
producto mejor vendido? Prever esas preguntas le ayudar a determinar los
elementos adicionales que necesita registrar.

Dividir la informacin en tablas


Para dividir la informacin en tablas, elija las entidades o los temas
principales. Por ejemplo, despus de buscar y organizar la informacin de
una base de datos de ventas de productos, la lista preliminar podra ser
similar a la siguiente:

Las entidades principales mostradas aqu son los productos, los proveedores,
los clientes y los pedidos. Por lo tanto, parece lgico empezar con estas
cuatro tablas: una para los datos sobre los productos, otra para los datos
sobre los proveedores, otra para los datos sobre los clientes y otra para los
datos sobre los pedidos. Aunque esto no complete la lista, es un buen punto
de partida. Puede seguir ajustando la lista hasta obtener un diseo correcto.
Cuando examine por primera vez la lista preliminar de elementos, podra
estar tentado a incluirlos todos ellos en una sola tabla en lugar de en las
cuatro tablas mostradas en la ilustracin anterior. Considere por un momento
la tabla que se muestra a continuacin:

Pgina 60 de 630

En este caso, cada fila contiene informacin sobre el producto y su


proveedor. Como hay muchos productos del mismo proveedor, la informacin
del nombre y la direccin del proveedor debe repetirse muchas veces, con lo
que se malgasta el espacio en disco. Registrar la informacin del proveedor
una sola vez en una tabla Proveedores distinta y luego vincular esa tabla a la
tabla Productos es una solucin mucho mejor.
Otro problema de este diseo surge cuando es necesario modificar la
informacin del proveedor. Suponga, por ejemplo, que necesita cambiar la
direccin de un proveedor. Como sta aparece en muchos lugares, podra sin
querer cambiar la direccin en un lugar y olvidarse de cambiarla en los
dems lugares. Ese problema se resuelve registrando la informacin del
proveedor en un nico lugar.
Cuando disee la base de datos, intente registrar siempre cada dato una sola
vez. Si descubre que est repitiendo la misma informacin en varios lugares,
como la direccin de un determinado proveedor, coloque esa informacin en
una tabla distinta.
Por ltimo, suponga que el proveedor Bodega Sol slo suministra un
producto y desea eliminar ese producto pero conservar el nombre del
proveedor y la informacin de su direccin. Cmo eliminara el producto sin
perder la informacin del proveedor? No se puede. Como cada registro
contiene datos sobre un producto, adems de datos sobre un proveedor, no
puede eliminar unos sin eliminar los otros. Para mantener estos datos
separados, debe dividir la tabla en dos: una tabla para la informacin sobre
los productos y otra tabla para la informacin sobre los proveedores. Al
eliminar un registro de producto slo se eliminaran los datos del producto y
no los datos del proveedor.
Una vez seleccionado el tema representado por una tabla, las columnas de
esa tabla deben almacenar datos nicamente sobre ese tema. Por ejemplo,
la tabla de productos slo debe contener datos de productos. Como la
direccin del proveedor es un dato del proveedor, pertenece a la tabla de
proveedores.

Convertir los elementos de informacin en columnas


Para determinar las columnas de una tabla (los campos de la tabla), decida
qu informacin necesita registrar sobre el tema representado por la tabla.
Por ejemplo, para la tabla Clientes, una buena lista de columnas iniciales
sera Nombre, Direccin, Ciudad-Provincia-Cdigo postal, Enviar correo
Pgina 61 de 630

electrnico, Saludo y Correo electrnico. Cada registro de la tabla contiene el


mismo nmero de columnas, por lo que puede almacenar informacin sobre
el nombre, direccin, ciudad-provincia-cdigo postal, envo de correo
electrnico, saludo y direccin de correo electrnico para cada registro. Por
ejemplo, la columna de direccin podra contener las direcciones de los
clientes. Cada registro contendr datos sobre un cliente y el campo de
direccin, la direccin de ese cliente.
Cuando haya determinado el conjunto inicial de columnas para cada tabla,
puede ajustar con mayor precisin las columnas. Por ejemplo, tiene sentido
almacenar los nombres de los clientes en dos columnas distintas (el nombre
y el apellido) para poder ordenar, buscar e indizar por esas columnas. De
igual forma, la direccin consta en realidad de cinco componentes distintos:
direccin, ciudad, provincia, cdigo postal y pas o regin, y parece lgico
tambin almacenarlos en columnas distintas. Si desea realizar, por ejemplo,
una bsqueda o una operacin de ordenacin o filtrado por provincia,
necesita que la informacin de provincia est almacenada en una columna
distinta.
Debe considerar tambin si la base de datos va a contener informacin slo
de procedencia nacional o internacional. Por ejemplo, si piensa almacenar
direcciones internacionales, es preferible tener una columna Regin en lugar
de Provincia, ya que esa columna puede incluir provincias del propio pas y
regiones de otros pases. De igual forma, es ms lgico incluir una columna
Regin en lugar de Comunidad Autnoma si va a almacenar direcciones
internacionales.
En la lista siguiente se incluyen algunas sugerencias para determinar las
columnas de la base de datos.
No incluya datos calculados. En la mayora de los casos, no debe
almacenar el resultado de los clculos en las tablas. En lugar de ello,
puede dejar que RDBMS realice los clculos cuando desee ver el
resultado. Suponga, por ejemplo, que tiene un informe Productos bajo
pedido que contiene el subtotal de unidades de un pedido para cada
categora de producto de la base de datos. Sin embargo, no hay
ninguna tabla que contenga una columna de subtotal Unidades en
pedido. La tabla Detalles de Pedidos contiene una columna Unidades
en pedido que almacena las unidades incluidas en un pedido de cada
producto. Con esos datos, RDBMS calcula el subtotal cada vez que se
imprime el informe, pero el subtotal propiamente dicho no debe
almacenarse en una tabla.
Almacene la informacin en sus partes lgicas ms pequeas. Puede
ceder a la tentacin de habilitar un nico campo para los nombres
completos o para los nombres de productos junto con sus
descripciones. Si combina varios tipos de informacin en un campo,
ser difcil recuperar datos individuales ms adelante. Intente dividir la
informacin en partes lgicas. Por ejemplo, cree campos distintos para

Pgina 62 de 630

el nombre y el apellido, o para el nombre del producto, la categora y la


descripcin.
Una vez ajustadas las columnas de datos de cada tabla, ya puede
seleccionar la clave principal de cada tabla.

Especificar claves principales


Cada tabla debe incluir una columna o conjunto de columnas que identifiquen
inequvocamente cada fila almacenada en la tabla. sta suele ser un nmero
de identificacin exclusivo, como un nmero de identificador de empleado o
un nmero de serie. En la terminologa de bases de datos, esta informacin
recibe el nombre de clave principal de la tabla. El RDBMS utiliza los campos
de clave principal para asociar rpidamente datos de varias tablas y reunir
automticamente esos datos.
Si ya tiene un identificador exclusivo para una tabla, como un nmero de
producto que identifica inequvocamente cada producto del catlogo, puede
utilizar ese identificador como clave principal de la tabla, pero slo si los
valores de esa columna son siempre diferentes para cada registro. No puede
tener valores duplicados en una clave principal. Por ejemplo, no utilice los
nombres de las personas como clave principal, ya que los nombres no son
exclusivos. Es muy fcil que dos personas tengan el mismo nombre en la
misma tabla.
Una clave principal siempre debe tener un valor. Si el
valor de una columna puede quedar sin asignar o vaco
(porque no se conoce) en algn momento, no puede
utilizarlo como componente de una clave principal.

Debe elegir siempre una clave principal cuyo valor no cambie. En una base
de datos con varias tablas, la clave principal de una tabla se puede utilizar
como referencia en las dems tablas (clave externa o secundaria). Si la clave
principal cambia, el cambio debe aplicarse tambin a todos los lugares donde
se haga referencia a la clave. Usar una clave principal que no cambie reduce
la posibilidad de que se pierda su sincronizacin con las otras tablas en las
que se hace referencia a ella.
A menudo, se utiliza como clave principal un nmero nico arbitrario. Por
ejemplo, puede asignar a cada pedido un nmero de pedido distinto. La nica
finalidad de este nmero de pedido es identificar el pedido. Una vez
asignado, nunca cambia.
Si piensa que no hay ninguna columna o conjunto de columnas que pueda
constituir una buena clave principal, considere la posibilidad de utilizar una
columna que tenga el tipo de datos Autonumrico. Cuando se utiliza el tipo de
datos Autonumrico, El RDBMS asigna automticamente un valor. Este tipo
de identificador no es "fctico", es decir, no contiene informacin objetiva
Pgina 63 de 630

sobre la fila que representa. Los identificadores de este tipo son perfectos
para usarlos como claves principales, ya que no cambian. Una clave principal
que contiene datos sobre una fila, como un nmero de telfono o el nombre
de un cliente, es ms probable que cambie, ya que la propia informacin
"fctica" podra cambiar.

Una columna establecida en el tipo de datos Autonumrico suele constituir


una buena clave principal. No hay dos identificadores de producto iguales.
En algunos casos, tal vez considere conveniente utilizar dos o ms campos
juntos como clave principal de una tabla. Por ejemplo, una tabla Detalles de
pedidos que contenga artculos de lnea de pedidos tendra dos columnas en
su clave principal: Id. de pedido e Id. de producto. Cuando una clave principal
est formada por ms de una columna se denomina clave compuesta.
Para la base de datos de ventas de productos, puede crear una columna
autonumrica para cada una de las tablas que funcione como clave principal:
IdProducto para la tabla Productos, IdPedido para la tabla Pedidos, IdCliente
para la tabla Clientes e IdProveedores para la tabla Proveedores.

Pgina 64 de 630

Crear relaciones entre las tablas


Ahora que ha dividido la informacin en tablas necesita un modo de reunir de
nuevo la informacin de forma provechosa. Por ejemplo, el siguiente
formulario incluye informacin de varias tablas.

1.
2.
3.
4.
5.

La informacin de este formulario procede de la tabla Clientes...


...la tabla Empleados...
...la tabla Pedidos...
...la tabla Productos...
...y la tabla Detalles de pedidos.

SQL Server 2005 es un sistema de administracin de bases de datos


relacionales. En una base de datos relacional, la informacin se divide en
tablas distintas en funcin del tema. A continuacin, se utilizan relaciones
entre las tablas para reunir la informacin segn se precise.
Crear una relacin de uno a varios
Considere este ejemplo: las tablas Proveedores y Productos de la base de
datos de pedidos de productos. Un proveedor puede suministrar cualquier
nmero de productos y, por consiguiente, para cada proveedor representado
en la tabla Proveedores, puede haber muchos productos representados en la
tabla Productos. La relacin entre la tabla Proveedores y la tabla Productos
es, por tanto, una relacin de uno a varios.

varios.

Pgina 65 de 630

Para representar una relacin de uno a varios en el diseo de la base de


datos, tome la clave principal del lado "uno" de la relacin y agrguela como
columna o columnas adicionales a la tabla en el lado "varios" de la relacin.
En este caso, por ejemplo, agregara la columna Id. de proveedor de la tabla
Proveedores a la tabla Productos. SQL Server utiliza entonces el nmero de
identificador de proveedor de la tabla Productos para localizar el proveedor
correcto de cada producto.
La columna Id. de proveedor de la tabla Productos se denomina clave
externa.

Una clave externa es la clave principal de otra tabla.

La columna Id. de proveedor de la tabla Productos es una clave externa


porque tambin es la clave principal en la tabla Proveedores.

Pgina 66 de 630

El punto de partida para la unin de tablas relacionadas se proporciona


estableciendo parejas de claves principales y claves externas. Si no est
seguro de las tablas que deben compartir una columna comn, el identificar
una relacin de uno a varios asegura que las dos tablas implicadas requieren
de una columna compartida.
Crear una relacin de varios a varios
Considere la relacin entre la tabla Productos y la tabla Pedidos.
Un solo pedido puede incluir varios productos. Por otro lado, un nico
producto puede aparecer en muchos pedidos. Por tanto, para cada registro
de la tabla Pedidos puede haber varios registros en la tabla Productos. Y para
cada registro de la tabla Productos puede haber varios registros en la tabla
Pedidos. Este tipo de relacin se denomina relacin de varios a varios porque
para un producto puede haber varios pedidos, y para un pedido puede haber
varios productos. Tenga en cuenta que para detectar las relaciones de varios
a varios entre las tablas, es importante que considere ambas partes de la
relacin.
Los temas de las dos tablas (pedidos y productos) tienen una relacin de
varios a varios. Esto presenta un problema. Para comprender el problema,
imagine qu sucedera si intenta crear la relacin entre las dos tablas
agregando el campo Id. de producto a la tabla Pedidos. Para que haya ms
de un producto por pedido, necesita ms de un registro en la tabla Pedidos
para cada pedido y, en ese caso, tendra que repetir la informacin de pedido
para cada fila relacionada con un nico pedido, lo que dara lugar a un diseo
ineficaz que podra producir datos inexactos. El mismo problema aparece si
coloca el campo Id. de pedido en la tabla Productos: tendra varios registros

Pgina 67 de 630

en la tabla Productos para cada producto. Cmo se soluciona este


problema?
La solucin a este problema consiste en crear una tercera tabla que
descomponga la relacin de varios a varios en dos relaciones de uno a
varios. Inserte la clave principal de cada una de las dos tablas en la tercera
tabla y, por consiguiente, la tercera tabla va a registrar todas las apariciones o
instancias de la relacin.

Cada registro de la tabla Detalles de pedidos representa un artculo de lnea


de un pedido. La clave principal de la tabla Detalles de pedidos consta de dos
campos: las claves externas de las tablas Pedidos y Productos. El campo Id.
de pedido no se puede utilizar en solitario como clave principal, ya que un
pedido puede tener varios artculos de lnea. El identificador de pedido se
repite para cada artculo de lnea del pedido, por lo que el campo no contiene
valores nicos. Tampoco servira utilizar solamente el campo Id. de producto,
porque un producto puede aparecer en varios pedidos. Pero los dos campos
juntos producen un valor exclusivo para cada registro.
En la base de datos de ventas de productos, la tabla Pedidos y la tabla
Productos no se relacionan directamente entre s, sino indirectamente a
travs de la tabla Detalles de pedidos. La relacin de varios a varios entre los
pedidos y los productos se representa en la base de datos mediante dos
relaciones de uno a varios:
La tabla Pedidos y la tabla Detalles de pedidos tienen una relacin de uno a
varios. Cada pedido tiene varios artculos de lnea, pero cada artculo est
asociado a un nico pedido.
La tabla Productos y la tabla Detalles de pedidos tienen una relacin de uno a
varios. Cada producto puede tener varios artculos asociados, pero cada
artculo de lnea hace referencia nicamente a un producto.
Pgina 68 de 630

Desde la tabla Detalles de pedidos se puede determinar todos los productos


de un determinado pedido, as como todos los pedidos de un determinado
producto.
Despus de incorporar la tabla Detalles de pedidos, la lista de tablas y
campos sera similar a la siguiente:

Crear una relacin de uno a uno


Otro tipo de relacin es la relacin de uno a uno. Suponga, por ejemplo, que
necesita registrar informacin complementaria sobre productos que apenas
va a necesitar o que slo se aplica a unos pocos productos. Como no
necesita la informacin con frecuencia, y como almacenar la informacin en
la tabla Productos creara un espacio vaco para todos los productos que no
necesitan esa informacin, la coloca en una tabla distinta. Al igual que en la
tabla Productos, utiliza el identificador de producto como clave principal. La
relacin entre esta tabla complementaria y la tabla Productos es una relacin
de uno a uno. Para cada registro de la tabla Productos hay un nico registro
coincidente en la tabla complementaria. Cuando identifique esta relacin,
ambas tablas deben compartir un campo comn.
Cuando necesite crear una relacin de uno a uno en la base de datos,
considere si puede incluir la informacin de las dos tablas en una tabla. Si no
desea hacer eso por algn motivo (quizs porque se creara una gran

Pgina 69 de 630

cantidad de espacio vaco), puede representar esa relacin en su diseo


guindose por las pautas siguientes:
Si las dos tablas tienen el mismo tema, probablemente podr definir la
relacin utilizando la misma clave principal en ambas tablas.
Si las dos tablas tienen temas diferentes con claves principales distintas,
elija una de las tablas (cualquiera de ellas) e inserte su clave principal
en la otra tabla como clave externa.
Determinar las relaciones entre las tablas le ayudar a asegurarse de que
tiene las tablas y columnas correctas. Cuando existe una relacin de uno a
uno o de uno a varios, las tablas implicadas deben compartir una o varias
columnas comunes. Cuando la relacin es de varios a varios, se necesita una
tercera tabla para representar la relacin.

Ajustar el diseo
Cuando tenga las tablas, los campos y las relaciones necesarias, debe crear
y rellenar las tablas con datos de ejemplo y probar que funcionan con la
informacin: creando consultas, agregando nuevos registros, etc. Esto
permite encontrar posibles problemas, como la necesidad de agregar una
columna que olvid insertar durante la fase de diseo, o dividir una tabla en
dos tablas para eliminar datos duplicados.
Compruebe si puede usar la base de datos para obtener las respuestas que
desea. Compruebe si existen datos duplicados innecesarios y, si encuentra
alguno, modifique el diseo para eliminar la duplicacin.
Cuando pruebe la base de datos inicial, probablemente se d cuenta de que
se puede mejorar. stas son algunas comprobaciones que puede hacer:
Olvid incluir alguna columna? Y, en ese caso, pertenece la
informacin a alguna de las tablas existentes? Si se trata de
informacin sobre otro tema, tal vez necesite crear otra tabla. Cree una
columna para cada elemento de informacin que desee registrar. Si la
informacin no se puede calcular a partir de otras columnas, es
probable que necesite una nueva columna para esa informacin.
Hay alguna columna innecesaria porque se puede calcular con los
campos existentes? Si un elemento de informacin se puede calcular a
partir de otras columnas existentes (como un descuento calculado a
partir del precio de venta al pblico), normalmente es preferible que se
calcule en lugar de crear una nueva columna.
Ha proporcionada informacin duplicada en alguna de las tablas? Si es
as, probablemente deba dividir la tabla en dos tablas que tengan una
relacin de uno a varios.
Tiene tablas con muchos campos, un nmero limitado de registros y
muchos campos vacos en cada registro? En ese caso, considere la
Pgina 70 de 630

posibilidad de volver a disear la tabla de forma que tenga menos


campos y ms registros.
Ha dividido cada elemento de informacin en sus partes lgicas ms
pequeas? Si necesita generar informes, ordenar, buscar o calcular a
partir de un elemento de informacin, incluya ese elemento en su
propia columna.
Contiene cada columna datos sobre el tema de la tabla? Si una columna
no contiene informacin sobre el tema de la tabla, pertenece a una
tabla distinta.
Estn representadas todas las relaciones entres las tablas mediante
campos comunes o mediante una tercera tabla? Las relaciones de uno
a uno y de uno a varios requieren columnas comunes. Las relaciones
de varios a varios requieren una tercera tabla.

Ajustar la tabla Productos


Suponga que cada producto de la base de datos de ventas de productos
pertenece a una categora general, como bebidas, condimentos o marisco. La
tabla Productos podra incluir un campo que mostrara la categora de cada
producto.
Suponga que despus de examinar y ajustar el diseo de la base de datos,
decide almacenar una descripcin de la categora junto con su nombre. Si
agrega un campo Descripcin de categora a la tabla Productos, tendra que
repetir la descripcin de cada categora para cada producto perteneciente a
dicha categora, lo cual no es una buena solucin.
Una solucin mejor es convertir las categoras en un nuevo tema de la base
de datos, con su propia tabla y su propia clave principal. A continuacin,
puede agregar la clave principal de la tabla Categoras a la tabla Productos
como clave externa.
Las tablas Categoras y Productos tienen una relacin de uno a varios: una
categora puede incluir varios productos, pero un producto pertenece
nicamente a una categora.
Cuando examine las estructuras de las tablas, compruebe si existen grupos
extensibles. Por ejemplo, considere una tabla con las siguientes columnas:
Id. de producto
Nombre
Id1 de producto
Nombre1
Id2 de producto
Nombre2
Id3 de producto
Nombre3

Pgina 71 de 630

Aqu, cada producto es un grupo extensible de columnas que se diferencia de


los dems solamente por el nmero agregado al final del nombre de columna.
Si tiene columnas numeradas de esta forma, debe revisar el diseo.
Un diseo como ste tiene varios defectos. Para empezar, obliga a crear un
lmite mximo de nmero de productos. En cuanto supere ese lmite, deber
agregar un nuevo grupo de columnas a la estructura de la tabla, lo que
supone una tarea administrativa importante.
Otro problema es que se malgastar el espacio en aquellos proveedores que
tengan menos que el nmero mximo de productos, ya que las columnas
adicionales quedarn en blanco. El defecto ms grave de este diseo es que
muchas tareas son difciles de realizar, como ordenar o indizar la tabla por
identificador de producto o nombre.
Siempre que aparezcan grupos extensibles, revise atentamente el diseo con
vistas a dividir la tabla en dos. En el ejemplo anterior, sera conveniente usar
dos tablas, una para proveedores y otra para productos, vinculadas por el
identificador de proveedor.

Aplicar las reglas de normalizacin


En el siguiente paso del diseo, puede aplicar las reglas de normalizacin de
datos (denominadas a veces simplemente reglas de normalizacin). Estas
reglas sirven para comprobar si las tablas estn estructuradas correctamente.
El proceso de aplicar las reglas al diseo de la base de datos se denomina
normalizar la base de datos o, simplemente, normalizacin.
La normalizacin es ms til una vez representados todos los elementos de
informacin y despus de haber definido un diseo preliminar. La idea es
asegurarse de que se han dividido los elementos de informacin en las tablas
adecuadas. Lo que la normalizacin no puede hacer es garantizar que se
dispone de los elementos de datos correctos para empezar a trabajar.
Las reglas se aplican consecutivamente en cada paso para garantizar que el
diseo adopta lo que se conoce como "forma normal". Hay cinco formas
normales ampliamente aceptadas: de la primera forma normal a la quinta
forma normal. En este artculo se abordan las tres primeras, porque todas
ellas son necesarias para la mayora de los diseos de base de datos.
Primera forma normal
La primera forma normal establece que en cada interseccin de fila y
columna de la tabla existe un valor y nunca una lista de valores. Por ejemplo,
no puede haber un campo denominado Precio en el que se incluya ms de
un precio. Si considera cada interseccin de filas y columnas como una
celda, cada celda slo puede contener un valor.

Pgina 72 de 630

Segunda forma normal


La segunda forma normal exige que cada columna que no sea clave dependa
por completo de toda la clave principal y no slo de parte de la clave. Esta
regla se aplica cuando existe una clave principal formada por varias
columnas. Suponga, por ejemplo, que existe una tabla con las siguientes
columnas, de las cuales Id. de pedido e Id. de producto forman la clave
principal:
Id. de pedido (clave principal)
Id. de producto (clave principal)
Nombre de producto
Este diseo infringe los requisitos de la segunda forma normal, porque
Nombre de producto depende de Id. de producto, pero no de Id. de pedido,
por lo que no depende de toda la clave principal. Debe quitar Nombre de
producto de la tabla, ya que pertenece a una tabla diferente (a la tabla
Productos).
Tercera forma normal
La tercera forma normal exige no slo que cada columna que no sea clave
dependa de toda la clave principal, sino tambin que las columnas que no
sean clave sean independientes unas de otras.
O dicho de otra forma: cada columna que no sea clave debe depender de la
clave principal y nada ms que de la clave principal. Por ejemplo, considere
una tabla con las siguientes columnas:
IdProducto (clave principal)
Nombre
PVP
Descuento
Suponga que la columna Descuento depende del precio de venta al pblico
(PVP) sugerido. Esta tabla infringe los requisitos de la tercera forma normal
porque una columna que no es clave, la columna Descuento, depende de
otra columna que no es clave, la columna PVP. La independencia de las
columnas implica que debe poder cambiar cualquier columna que no sea
clave sin que ninguna otra columna resulte afectada. Si cambia un valor en el
campo PVP, la columna Descuento cambiara en consecuencia e infringira
esa regla. En este caso, la columna Descuento debe moverse a otra tabla
cuya clave sea PVP.

Pgina 73 de 630

Desnormalizacin
Microsoft SQL Server realiza operaciones de ordenacin, interseccin, unin
y diferencia mediante una tecnologa de ordenacin en memoria y
combinacin hash. Con este tipo de plan de consulta, SQL Server acepta la
particin vertical de tablas, a veces llamada almacenamiento en columnas.
SQL Server emplea tres tipos de operaciones de combinacin:
Combinaciones de bucles anidados
Combinaciones de mezcla
Combinaciones hash
Si la entrada de una combinacin es pequea (menor de 10 filas), y la
entrada de otra combinacin es bastante grande y est indizada en las
columnas de combinacin, una combinacin de bucles anidados de ndices
es la operacin de combinacin ms rpida, debido a que requieren menos
E/S y menos comparaciones.
Si las dos entradas de la combinacin no son pequeas pero estn
ordenadas por la columna de combinacin (por ejemplo, si se obtuvieron al
recorrer ndices ordenados), una combinacin de mezcla es la operacin de
combinacin ms rpida. Si ambas entradas de combinacin son grandes y
tienen tamaos similares, una combinacin de mezcla con una ordenacin
previa y una combinacin hash ofrecen un rendimiento similar. Sin embargo,
las operaciones de combinacin hash a menudo son ms rpidas si los
tamaos de las dos entradas difieren significativamente entre s.
Las combinaciones hash pueden procesar eficazmente entradas grandes,
sin ordenar y no indizadas. Son tiles para obtener resultados
intermedios en consultas complejas debido a que:
Los resultados intermedios no estn indizados (a menos que se hayan
guardado explcitamente en disco y, despus, se hayan indizado) y, a
menudo, no tienen un orden adecuado para la siguiente operacin del
plan de consulta.
Los optimizadores de consultas slo calculan los tamaos de resultados
intermedios. Dado que las estimaciones pueden ser poco exactas en
consultas complejas, los algoritmos utilizados para procesar los resultados
intermedios no slo deben ser eficaces, sino que tambin deben rebajarse si
un resultado intermedio es mayor de lo previsto.
La combinacin hash permite reducir el uso de la desnormalizacin. La
desnormalizacin se suele utilizar para conseguir un rendimiento mejor
mediante la reduccin de las operaciones de combinacin, a pesar del peligro
de redundancia, como las actualizaciones incoherentes. Las combinaciones
hash reducen la necesidad de desnormalizacin. Las combinaciones hash
permiten que las particiones verticales (que representan grupos de columnas
de una sola tabla en archivos o ndices independientes) se conviertan en una
opcin viable para el diseo fsico de bases de datos.
Pgina 74 de 630

Integridad Referencial
Al disear una base de datos, se divide la informacin en muchas tablas
basadas en temas para minimizar la redundancia de los datos. A
continuacin, se proporciona a SQL Server los medios para recopilar de
nuevo la informacin, colocando campos comunes en tablas relacionadas.
Por ejemplo, para representar una relacin de uno a varios se toma la clave
principal de la tabla "uno" y se agrega como un campo adicional a la tabla
"varios". Para recopilar de nuevo los datos, SQL Server toma el valor de la
tabla "varios" y busca el valor correspondiente en la tabla "uno". De este
modo los valores de la tabla "varios" hacen referencia a los valores
correspondientes de la tabla "uno".
Suponga que tiene una relacin de uno a varios entre las tablas
Transportistas y Pedidos y desea eliminar un transportista. Si el destinatario
que desea quitar tiene pedidos en la tabla Pedidos, dichos pedidos quedarn
"hurfanos" si elimina el registro Transportista. Los pedidos todava
contendrn un Id.de transportista, pero el Id. ya no ser vlido, porque el
registro al que hace referencia ya no existe.
El propsito de la integridad referencial es evitar los registros hurfanos y
mantener las referencias sincronizadas para que esta situacin hipottica no
ocurra nunca.
Una vez aplicada la integridad referencial, SQL Server rechazar todas las
operaciones que infrinjan la integridad referencial de esa relacin de tabla.
Esto significa que SQL Server rechaza las actualizaciones que cambian el
destino de una referencia, as como las eliminaciones que quitan el destino
de una referencia.
La integridad referencial es un sistema de reglas que
garantizan que las relaciones entre filas de tablas
relacionadas sean vlidas y que no se eliminen ni
cambien accidentalmente los datos relacionados.

Se puede establecer la integridad referencial cuando se cumplen las


siguientes condiciones:
La columna coincidente de la tabla principal es una clave principal o tiene
una restriccin UNIQUE.
Las columnas relacionadas en la tabla externa tienen el mismo tipo de
datos y el mismo tamao.
Cuando se exige la integridad referencial, se deben observar las reglas
siguientes:
Pgina 75 de 630

No se puede especificar un valor en la columna de clave externa de la


tabla relacionada si ese valor no existe en la clave principal de la tabla
relacionada. Sin embargo, se puede especificar un valor NULL en la
columna de clave externa. Por ejemplo, no se puede indicar que se
asigna un trabajo a un empleado que no est incluido en la tabla
Empleados, pero se puede indicar que un empleado no tiene trabajo
asignado mediante la especificacin de un valor NULL en la columna
job_id de la tabla Empleados.
No se puede eliminar una fila de una tabla de clave principal si existen
filas que coinciden con ella en una tabla relacionada. Por ejemplo, no
se puede eliminar una fila de la tabla trabajos si hay empleados
asignados al trabajo representado por esa fila en la tabla empleados.
No se puede cambiar un valor de clave principal en la tabla de clave
principal si esa fila tiene filas relacionadas. Por ejemplo, no puede
cambiar el valor job_id de una fila en la tabla trabajos si hay
empleados con dicho job_id en la tabla empleados.

Pgina 76 de 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 3
Introduccin al SQL

2007

Pgina 77 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 78 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 79 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 80 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 81 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 82 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 83 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 84 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 85 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 86 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 87 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 88 de 630

Unidad 3 Introduccin al SQL


Objetivos
Este modulo contiene una introduccin inicial al SQL,
mencionando la descripcin de consultas (select) y
consultas de tablas relacionadas (join) del motor de
base de datos.

Pgina 89 de 630

Conceptos Claves
SQL es un lenguaje que permite realizar consultas en
forma sencilla sobre la informacin contenida en la
base de datos.

Introduccin al SQL
El lenguaje de gestin de bases de datos ms conocido en la actualidad es el
SQL, Structured Query Language, que es un lenguaje estndar internacional,
comnmente aceptado por los fabricantes de generadores de bases de
datos.
El SQL trabaja con estructura cliente/servidor sobre una red de
computadoras.
La PC Cliente es la que inicia la consulta; el Servidor atiende la consulta. De
esta manera, el cliente no utiliza toda su capacidad de proceso para trabajar
sino que se limita a solicitar datos al Servidor. Estas peticiones y las
respuestas son transferencias de textos que cada ordenador cliente se
encarga de obtener por pantalla, presentar en informes tabulados, imprimir,
guardar, etc., dejando el Servidor libre.
El SQL permite:
Definir una base de datos mediante tablas
Almacenar informacin en tablas.
Seleccionar la informacin que sea necesaria de la base de datos.
Realizar cambios en la informacin y estructura de los datos.
Combinar y calcular datos para conseguir la informacin necesaria.

Bsqueda de informacin en una tabla


La operacin ms comn en una base de datos es pedir informacin, y a la
cual se denomina bsqueda o Query. El comando Select va seguido de FROM
y en ocasiones de WHERE. SELECT especifica las columnas, FROM especifica las
tablas y WHERE especifica las condiciones. Si no hay condiciones de bsqueda
se presentarn las columnas completas, sin restricciones.
Por ejemplo: Si se quiere ver el contenido de toda la tabla EMP, puede
sustituirse toda la lista de columnas por un asterisco:
SELECT * FROM DEPT;

El Resultado es el siguiente:
Pgina 90 de 630

Por ejemplo, para seleccionar determinados registros o filas de la base de


datos, debe aadirse una condicin con el comando WHERE al usar
SELECT... FROM:
SELECT

FROM
EMP
WHERE
DEPTNO=30;
Para obtener todas las columnas pero de los empleados del
Departamento nmero 30:
El Resultado es el siguiente:

obliga al SQL a buscar en la informacin de la tabla y mostrar


solo aquellas lneas o registros que cumple la condicin.
WHERE

Condiciones mltiples para una bsqueda


A veces WHERE va seguido de ms de una condicin.
Por ejemplo, consultas con dos condiciones:
SELECT
FROM EMP
WHERE

ENAME,
JOB,
SAL
JOB = 'SALESMAN' AND SAL >=100;

En este caso se piden los datos del nombre, trabajo, salario de


aquellos empleados de la tabla cuyo empleo sea 'SALESMAN' y su
salario mayor o igual que 100:
El Resultado es el siguiente:

Para las condiciones alternativas, negativas (excluyentes) se utilizan los


comandos OR, y NOT. As por ejemplo:
SELECT
FROM EMP
WHERE

NAME,
JOB,
SAL
JOB = 'manager' OR SAL >=100;

Pide los datos de empleados con categora manager o que su salario


sea mayor que 100:
El Resultado es el siguiente:
Pgina 91 de 630

El siguiente ejemplo pide un listado con los nombres, categoras y nmero


de departamento de los empleados cuyo trabajo sea clerck (oficinista)
y su departamento sea distinto del 30,
SELECT
ENAME,JOB,DEPTNO
FROM
EMP
WHERE JOB = 'CLERCK AND DEPTNO!=30;

El Resultado es el siguiente:
Mediante los comandos BEETWEEN y AND pueden pedirse datos
comprendidos en un rango determinado. El ejemplo siguiente busca y
muestra el nombre y el salario de los empleados cuyo salario est
comprendido entre 800 y 900:
SELECT
FROM EMP
WHERE

ENAME,
SAL
SAL BETWEEN 800 AND 900;

El Resultado es el siguiente:

El comando IN permite seleccionar lneas cuyo campo contenga uno de


los valores de una lista especificada entre parntesis:
SELECT
*
FROM DEPT
WHERE
DEPTNO IN (10,30);

El Resultado es el siguiente:

Bsqueda de informacin en varias tablas relacionales JOIN QUERY


Hasta ahora se han efectuado bsquedas en una sola tabla, pero puede
ocurrir que la informacin que buscamos no est almacenada en una sola
tabla. Como SQL es una base de datos relacional permite seleccionar
informacin de ms de una tabla y combinar los resultados en un listado. La
Pgina 92 de 630

bsqueda combinada en ms de una tabla se denomina bsqueda relacional


o join query.
En las bases de datos jerrquicas y en anillo, las relaciones son estticas
porque estn perfectamente definidas en la estructura de la base de datos
desde el diseo, por lo que las consultas deben seguir ese mismo esquema.
En las bases de datos relacionales como SQL, las relaciones son dinmicas;
se establecen en el momento de la consulta, y es posible extraer informacin
segn convenga en cada caso.
Por ejemplo, si se desea saber el nombre del departamento donde trabaja
determinado empleado, y se intenta buscar en la tabla EMP (empleados),
puede verse que no tiene columna con el nombre de departamento; sin
embargo, la tabla de departamentos si tiene el departamento (nmero y
nombre). Como las dos tablas tienen una columna en comn
-el n[[ordmasculine]] de departamento-, es posible relacionar las dos tablas.
Esto puede hacerse con dos bsquedas:
Primera Bsqueda
SELECT
FROM EMP
WHERE

ENAME,
DEPTNO
ENAME = 'WARD';

El Resultado es el siguiente:
Segunda Bsqueda
SELECT
LOC
FROM DEPT
WHERE
DEPTNO = 30;

El Resultado es el siguiente:

Tambin puede llegarse al mismo resultado mediante una nica bsqueda


indicando la tabla y la columna separados por un punto, como en el
ejemplo siguiente :
SELECT

ENAME,
LOC

FROM EMP,
WHERE

DEPT
ENAME=''KING' AND EMP.DEPTNO =DEPT.DEPTNO;

El Resultado es el siguiente:
En este ejemplo, se buscan los empleados en la tabla EMP cuyo nombre es
KING y se utiliza el valor del cdigo del empleado localizado para
buscar en la tabla DEPT el nombre del departamento de trabajo. Por
ultimo, localiza los registros donde coinciden los valores de las
columnas EMPTO y DEPTO:

Pgina 93 de 630

En el ejemplo anterior, en la tabla EMP se busca la fila que contiene al


empleado 'KING', y se determina el nmero de departamento al que pertenece
DEPTNO. Con este nmero de departamento de la tabla DEPT se extrae el
registro con el mismo valor de DEPTNO. La clusula
EMP.DEPTNO =DEPT.DEPTNO

especifica que los registros de las tablas EMP y DEPT deben coincidir en el
valor del campo o columna DEPTNO.

Funciones para el manejo de grupo de filas


Las funciones para grupos permiten seleccionar informacin a partir de
grupos de lneas o registros. Por ejemplo, pueden agruparse todos los
empleados que pertenezcan al mismo departamento y entonces
calcular el salario mximo en cada grupo de departamentos:
SELECT

DEPTNO,
MAX(SAL)

FROM EMP
GROUP BY DEPTNO;

El Resultado es el siguiente:

En una bsqueda de grupos, cada lnea en el resultado de la bsqueda,


corresponde a un grupo de lneas de nuestra tabla. La columna que se pone
a continuacin de group by es aquella por la que se quiere agrupar las lneas
de la tabla. En el ejemplo anterior cada lnea de la tabla EMP se incluye en
uno de los tres grupos, uno para cada departamento, dependiendo de su
valor en el campo DEPTO: todas las lneas de su mismo grupo tienen el mismo
nmero de departamento.
Podemos combinar las funciones de grupo con las bsquedas relacionales.
Existen tres funciones que pueden utilizarse con los grupos:
SUM : Para sumar los valores de los campos, dentro de los grupos
definidos por GROUP BY.
COUNT: Para contar el nmero de lneas que entran en cada uno de
esos grupos.
Pgina 94 de 630

AVG:

Para saber el promedio de los valores de campos especficos en


cada grupo.
El siguiente ejemplo tiene como objetivo saber cuantos empleados estn
trabajando en cada categora por cada departamento, cuantos
secretarios hay en el departamento de ventas y, en esos grupos, cul
es la suma y media de los salarios:
SELECT

DNAME,
JOB,
SUM(SAL),
COUNT(*),
AVG(SAL)
FROM EMP,DEPT
WHERE
EMP.DEPTNO=DEPT.DEPTNO
GROUP BY DNAME,JOB;

El Resultado es el siguiente:

Condiciones de bsqueda de un grupo de lneas: HAVING


As como en el operador WHERE se especifican las condiciones para las
bsquedas con lneas individuales, con HAVING pueden especificarse las
condiciones de bsqueda para grupos de lneas.
Supongamos que se quiere realizar una bsqueda como la anterior, pero
en la que slo se necesita ver aquellos grupos que tengan al menos
dos empleados:
SELECT

ENAME,
JOB,
SUM(SAL),
COUNT(*),
AVG(SAL)

FROM EMP
WHERE
EMP.DEPTNO = DEPT.DEPTNO
GROUP BY DNAME,JOB
HAVING COUNT(*)>=2

El Resultado es el siguiente:

Sub-bsquedas o subqueries
Supngase, por ejemplo, que se desea obtener una lista con todos los
empleados que tienen el mismo empleo que King y SQL lo busca, en
lo que constituira una bsqueda subordinada o subbsqueda:

Pgina 95 de 630

SELECT
FROM EMP
WHERE

ENAME,
JOB
JOB =
(SELECT JOB
FROM EMP
WHERE ENAME = 'KING'));

El Resultado es el siguiente:

SQL realiza las sub-bsquedas antes, porque necesita el resultado de


estas para las bsquedas.
Como ejemplo adicional puede buscarse el empleado que gana ms que
la media de todos los salarios de los empleados:
SELECT

ENAME,
SAL

FROM EMP
WHERE SAL > (SELECT AVG(SAL)
FROM EMP);

El Resultado es el siguiente:

Pgina 96 de 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 4
Arquitectura Cliente / Servidor

2007

Pgina 97 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 98 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 99 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 100 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 101 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 102 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 103 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 104 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 105 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 106 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 107 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 108 de 630

Unidad 4 Arquitectura Cliente / Servidor


Objetivos
Este modulo contiene una descripcin de varios
componentes de SQL Server 2005. Se incluyen puntos sobre
cada componente; si el componente del producto exista en
versiones anteriores de SQL Server, se concentra la
informacin sobre las mejoras en SQL Server 2005.
Los puntos a cubrir son:
Descripcin de los conceptos que componen la
Arquitectura Cliente/Servidor
Descripcin de los componentes principales de SQL
Server 2005.
Descripcin de las mejoras al motor de base de datos
con respecto a versiones anteriores.
Descripcin de las mejoras de Analysis Services con
respecto a versiones anteriores.
Descripcin de mejoras de SQL Server Integration
Services (SSIS) con respecto a versiones anteriores.
Descripcin de Notification Services.
Descripcin de Reporting Services.
Descripcin de Service Broker.
Descripcin de la integracin de .NET common
language runtime (CLR) en SQL Server 2005.
Descripcin de la implementacin del native HTTP
support en SQL Server 2005.
Descripcin de mejoras en la replicacin con respecto
a versiones anteriores.
Descripcin de mejoras en la full-text search con
respecto a versiones anteriores.

Pgina 109 de 630

Conceptos Claves
SQL Server 2005 es ms que un sistema de
administracin de base de datos. Incluye componentes
mltiples y servicios los cuales la hacen una plataforma
efectiva para el soporte de los programas de la
empresa.

Conceptos a comentar en esta unidad:


Arquitectura Cliente / Servidor
Componentes del SQL Server 2005
Motor de Base de Datos
Analysis Services
SQL Server Integration Services
Notification Services
Full-Text Search
Relational Database Engine .NET CLR
Reporting Services
Replication
Native HTTP Support
Service Broker
Mejoras
o Del Sistema
o Del Almacenamiento de Datos
o De Tablas e ndices Particionados
o Snapshot Isolation Level
o SQLiMail

Pgina 110 de 630

Arquitectura Cliente/Servidor
Los sistemas cliente/servidor estn construidos de tal modo que la base de
datos puede residir en un equipo central, llamado servidor y ser compartida
entre varios usuarios. Los usuarios tienen acceso al servidor a travs de una
aplicacin de cliente o de servidor:
En un sistema cliente/servidor de dos capas, los usuarios ejecutan una
aplicacin en su equipo local, llamado cliente, que se conecta a travs
de la red con el servidor que ejecuta SQL Server.
La aplicacin de cliente ejecuta las reglas de la compaa y el cdigo
necesario para presentar el resultado al usuario; tambin se conoce
como cliente amplio.
En un sistema cliente/servidor de varios componentes, la lgica de la
aplicacin de cliente se ejecuta en dos capas:

El cliente reducido se ejecuta en el equipo local del


usuario y se encarga de presentar los resultados al
usuario.
La lgica de la compaa se encuentra en aplicaciones
de servidor que se ejecutan en un servidor. Los clientes
reducidos solicitan funciones a la aplicacin de servidor,
que, a su vez, es una aplicacin multiproceso capaz de
operar con varios usuarios simultneos. La aplicacin de
servidor es la que abre las conexiones con el servidor de
la base de datos y se puede ejecutar en el mismo
servidor que la base de datos, o se puede conectar a
travs de la red con otro servidor que opere como
servidor de base de datos. ste es el escenario tpico de
las aplicaciones de Internet. Por ejemplo, una aplicacin
de servidor se puede ejecutar en un equipo con Microsoft
Internet Information Services (IIS) y dar servicio a miles
de clientes reducidos que se ejecuten en Internet o en
una Intranet. La aplicacin de servidor utiliza un grupo de
conexiones para comunicarse con una copia de SQL
Server. SQL Server puede estar instalado en el mismo
equipo que el IIS o en otro servidor de la red.

El tener los datos almacenados y administrados en una ubicacin central


ofrece varias ventajas:
No se almacenan copias separadas del elemento en cada cliente, lo
que elimina los problemas de hacer que todos los usuarios trabajen
con la misma informacin actualizada.
Las reglas de la organizacin y las reglas de seguridad se pueden
definir una sola vez en el servidor para todos los usuarios. Esto se
puede hacer en una base de datos mediante el uso de restricciones,
procedimientos almacenados y desencadenadores. Tambin se puede
hacer en una aplicacin de servidor.
Pgina 111 de 630

Los servidores de base de datos relacionales optimizan el trfico de la


red al devolver slo los datos que la aplicacin necesita.
Las gastos en hardware se pueden minimizar. Como los datos no
estn almacenados en los clientes, stos no tienen que dedicar
espacio de disco a almacenarlos. Los clientes tampoco necesitan la
capacidad de proceso para administrar los datos localmente y el
servidor no tiene que dedicar capacidad de proceso para presentar los
datos. El servidor se puede configurar para optimizar la capacidad de
E/S de disco necesaria para obtener los datos y los clientes se pueden
configurar para optimizar el formato y presentacin de los datos
obtenidos desde el servidor.
El servidor puede estar situado en una ubicacin relativamente segura
y estar equipado con dispositivos como Sistemas de alimentacin
ininterrumpida (SAI), lo que resulta ms econmico que si se
protegieran todos los clientes.
Las tareas de mantenimiento como las copias de seguridad y
restauracin de los datos son ms sencillas porque estn
concentradas en el servidor central

Las aplicaciones SQL Server se pueden ejecutar en el mismo equipo que


SQL Server.
Pgina 112 de 630

La aplicacin conecta con SQL Server utilizando componentes de


comunicacin entre procesos (IPC, Interprocess Communications) de
Windows, como la memoria compartida, en lugar de la red. Esto permite que
SQL Server se utilice en sistemas pequeos en los que las aplicaciones
tienen que almacenar los datos localmente.
En los sistemas cliente/servidor grandes, miles de usuarios pueden estar
conectados con una instalacin de SQL Server al mismo tiempo.
SQL Server tiene una proteccin completa para dichos entornos, con
barreras de seguridad que impiden problemas como tener varios usuarios
intentando actualizar el mismo elemento de datos a la vez.
SQL Server tambin asigna eficazmente los recursos disponibles entre los
distintos usuarios, como la memoria, el ancho de banda de la red y la E/S de
disco.

Sistemas de bases de datos de escritorio


Aunque SQL Server funciona muy eficientemente como servidor, tambin se
puede utilizar en aplicaciones que necesiten bases de datos independientes
almacenadas de forma local en el cliente.
SQL Server se puede autoconfigurar dinmicamente para que se ejecute ms
eficientemente con los recursos disponibles en el cliente, sin tener que
dedicar un administrador de bases de datos a cada cliente. Los fabricantes
de aplicaciones tambin pueden incrustar SQL Server como componente de
almacenamiento de datos en su aplicativo.

Cuando los clientes utilizan bases de datos SQL Server locales, una copia del
motor de bases de datos de SQL Server se ejecuta en el cliente y administra
todas las bases de datos de SQL Server de dicho cliente. Las aplicaciones
conectan con el motor de la base de datos casi de la misma forma en que se
conectan a travs de la red con un motor de base de datos que se ejecuta en
un servidor remoto.
SQL Server se encarga de administrar bases de datos relacionales basadas
en la arquitectura Cliente / Servidor (RDBMS: Relational Database
Management System).
Pgina 113 de 630

SQL Server utiliza la arquitectura Cliente / Servidor para coordinar el trabajo


entre el equipo cliente y el equipo servidor; dependiendo del tipo de
aplicacin que se quiera programar la reparticin de la carga de trabajo entre
el cliente y el servidor.
El equipo cliente se suele encargar de la parte lgica y de mostrar la
informacin al usuario que realiza una peticin.
El equipo servidor SQL Server, se encarga de administrar la base de datos,
de gestionar los recursos del servidor (CPU, memoria, etc) y por supuesto de
resolver y devolver el resultado de la peticin realizada por el cliente.
El sistema RDBMS se encarga de:
Crear una estrategia de copias de seguridad
Crear planes de mantenimiento para el buen funcionamiento de la
base de datos (Chequeo de todos los objetos que componen una base
de datos)

Pgina 114 de 630

Componentes del SQL Server 2005

SQL Server 2005 se compone de:


Componente
Motor de Base
de datos
Relacional
Analysis
Services
SQL Server
Integration
Services (SSIS)
Notification
Services
Reporting
Services
Service Broker

Descripcin
El motor de base de datos relacional de SQL Server es el corazn de SQL
Server 2005 y proporciona un ambiente de alto rendimiento, escalable, seguro
para almacenar y recuperar datos de modificacin relacional o formato Extensible
Markup Language (XML)
Proporciona la base de una solucin Business Intelligence para soporte de
Aplicaciones Online Analytical Processing (OLAP) y Data Miining.
Un motor que se utiliza para: Importar, Exportar datos y transformaciones de
datos mientras que se transfieren.
Un Framework para las soluciones en las cuales se envan a los suscriptores las
notificaciones cuando ocurren los acontecimientos especficos. Las notificaciones
se pueden generar eficientemente y enviar a dispositivos mltiples de diferentes
tipos.
Se utiliza para extraer datos desde SQL Server y generar reportes.
Un mecanismo confiable de Queuing, y Comunicacin Transaccional basada en
mensajes entre los servicios de software.

.NET common
language
runtime(CLR)
Native HTTP
Support

Incluido dentro del SQL Server, permitiendo poner soluciones de base de datos
en ejecucin usando el cdigo manejado escrito en lenguage .NET por ejemplo
Microsoft Visual C# .NET o Microsoft Visual Basic .NET.
Permite a programas de cliente conectarse con HTTP endpoints dentro de SQL
Server sin requerir Internet Information Services (IIS).

Replicacin

Un sistema de tecnologas para el copiado de datos y distribucin de base de


datos a partir de una base de datos o de un servidor a otro, sincronizando la
informacin entre las bases de datos para asegurar consistencia.

Full-text search

Permite la indexacin rpida y flexible basada en keyword queries de texto sobre


datos almacenados en una base de datos en SQL Server.
Pgina 115 de 630

El Motor de Base de Datos


Introduccin
El motor de base de datos es el componente principal de SQL Server.
Proporciona almacenaje de datos, recuperacin, y servicios de modificacin
que pueden escalar desde soluciones personales hasta el nivel empresa.
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
SQL Server 2005 incluye un nmero de mejoras significativas al motor de
base de datos, segn lo descrito en la tabla siguiente.
Caracterstica /
Mejora
Partitioning

Descripcin

DDL triggers y event


notifications

DDL triggers pueden ser utilizados para ejecutar stored procedures


mientras DDL statements (por ejemplo CREATE) se ejecutan. Event
notifications pueden ser utilizados para disparar eventos para el
servicio Service Broker cuando se modifica la base de datos.
Un nmero de nuevos tipos de datos se han incluido en esta versin,
por ejemplo xml y un mximo modificable para los tipos de datos
nvarchar, varchar, y varbinary types.
MARS permite que los clientes tengan ms de una peticin por
conexin.
Transact-SQL ahora incluye palabras claves estructuradas de
direccin de excepcin (por ejemplo, TRY y CATCH), soporte para
expresiones comunes de tabla, y nuevas funciones de graduacin y
operadores relacionales. Los DDL statements se han mejorado.

New data types


Multiple Active
Result Sets (MARS)
Transact-SQL

Las tablas y los ndices se pueden repartir a travs de grupos mltiples


de archivo. Esto puede mejorar el funcionamiento y la capacidad de
mantenimiento.

Seguridad

Una nueva arquitectura de seguridad proporciona la proteccin


mejorada de base de datos a travs de reglas y permisos.

XML

El soporte para XML ha sido mejorado notablemente, siendo mas


flexible.

The .NET Framework

El .NET Framework CLR es integrado en el motor de SQL Server,


haciendo posible construir soluciones de base de datos con cdigo
administrado.

Replicacin

La funcionalidad de replicacin ha sido mejorada para hacer mas


sencilla la configuracin y proveer soporte de replicacin transaccional
para peer-to-peer, replicacin sobre HTTP, y considerables mejoras
para replicacin heterognea.

Mantenimiento de
base de datos

Las tareas de mantenimiento fueron mejoradas, con online restore y


online index operations.

Pgina 116 de 630

Analysis Services
Introduccin
Analysis Services otorga un gran alcance a la plataforma Business
Intelligence para SQL Server, permitiendo poner en ejecucin OLAP Data
Warehouses y usar tcnicas de Data Mining para analizar datos de negocio y
tomar decisiones apropiadas.

Mejoras en Analysis Services con respecto a versiones anteriores:


Algunas de las mejoras de Analysis Services en SQL Server 2005 se
describen en la siguiente tabla:
Caracterstica /
Mejora
Interfaz de usuario

Descripcin

Analysis Services
Engine

Usted puede ahora instalar mltiples instancias de Analysis Services en


una sola computadora.

Cubos

Los cubos se pueden ahora basar en las tablas mltiples de hecho, por
ejemplo en Key Performance Indicators (KPI) y Business Intelligence las
mejoras favorecen la toma de decisin, y el soporte para los
procedimientos almacenados, ampliando la funcionalidad de los cubos.

Las soluciones Analysis Services son ms fciles de crear con el nuevo


Business Intelligence Development Studio.

Pgina 117 de 630

SQL Server Integration Services


Introduccin
SQL Server Integration Services (antes Data Transformation Services)
proporciona una solucin comprensiva para la transferencia y transformacin
de datos entre fuentes de datos diversas.
SSIS mejoras con respecto a versiones anteriores:
SQL Server Integration Services (SSIS) se ha mejorado considerablemente
en SQL Server 2005. Algunas de las mejoras principales se describen en
tabla siguiente.
Caracterstica
/Mejora
SSIS arquitectura

Descripcin

SSIS Designer

El SSIS Designer es parte del Business Intelligence Development


Studio, permitiendo convertir los proyectos SSIS mientras que est
desconectado del servidor. Usted puede tambin convertir
soluciones SSIS usando SQL Server Management Studio.
SSIS provee las siguientes transformaciones:
Particin de condiciones (Conditional Split )
Multicast
Union-All, Merge, and Merge
Sort
Fuzzy Grouping
Lookup y Fuzzy Lookup
Percentage Sampling and Row Sampling
Copy/Map, Data Conversion, and Derived Column
Aggregacion (Aggregation)
Data Mining Model Training, Data Mining Query,
Partition Processing, and Dimension Processing
Pivot and UnPivot

Transformaciones

La arquitectura de SSIS se ha reajustado para separar flujo de


paquete de control de flujo de datos. Dos motores se han
introducido para manejar estos aspectos de la transformacin de
los datos: el SSIS Run-time engine y el SSIS Data-Flow engine.

Pgina 118 de 630

Notification Services
Introduccin
Notification Services proporciona un Framework para el desarrollo de
aplicaciones basadas en subscripciones a travs de las cuales se notifica a
los usuarios acerca de eventos.

Nota Importante:
Notification Services 2.0 est disponible en forma separada para SQL Server
2000. SQL Server 2005 Notification Services incluye un nmero de mejoras
sobre Notification Services 2.0.
Caractersticas de Notification Services
Las caractersticas principales de Notification Services en SQL Server 2005
se describen en la tabla siguiente.
Caracterstica
Subscription Management
Objects

Descripcin
Una API para construir la administracin de suscripcin de
aplicaciones a travs de la cual los usuarios pueden suscribirse
a eventos.

Pgina 119 de 630

Event APIs

Existen cuatro maneras para incorporar la informacin del


evento en el sistema.

Full-Text Search
Introduccin
Bsqueda Full-Text permite indexar rpida y flexiblemente consultas
keyword-based de datos.
Perfeccionamientos de Bsqueda Full-text
SQL Server 2005 incluye un numero significativo de perfeccionamientos para
Bsqueda de full-text, descrito en la siguiente tabla.
Perfeccionamiento
Servidores
enlazados
Columnas
Mltiples

Descripcin
Se pueden ejecutar consultas full-text contra servidores enlazados.

Especificar
LocaleID

Se puede ejecutar consultas full-text usando un idioma diferente del


idioma por defecto.

Backup y
Restauracin

Los catlogos Full-text ahora pueden ser backapeados


restaurados con o sin los datos de la base de datos.

Attach y Detach

Los catlogos Full-text estn incluidos en las operaciones de attach


y detach.

Datos XML

Full-text indexes pueden ser creados en datos XML.

Performance

La Performance de index populares fue mejorada.

Ya no esta limitado el uso de una o todas las columnas en una


tabla, ahora se puede especificar que columnas se quieren colocar
en el argumento column_list.

Relational Database Engine .NET CLR, Lenguaje comn de


los Tiempos de Ejecucin
Introduccin
El Lenguaje Comn de Tiempos de Ejecucin de .NET (CLR) provee un
ambiente de administracin para cdigo escrito en lenguaje .NET como
Visual C# o Visual Basic .NET.

Pgina 120 de 630

Integracin de .NET CLR en SQL Server


El motor de la base de datos SQL Server 2005 tiene alojado el .NET CLR,
haciendo posible desarrollar objetos de base de datos usando cdigos
escritos en un lenguaje de programacin .NET.
La habilidad de desarrollar objetos de base de datos en cdigo .NET
provee varias ventajas, incluyendo un modelo de administracin de
seguridad (funcionalidad que no esta disponible o es difcil de implementar
en Transact-SQL) y es una mejor eleccin para realizar desarrollos.
Se pueden desarrollar las siguientes clases de objetos de base de datos
en cdigo administrado:
Procesos Almacenados (Store Procedures)
Tipos de datos User-defined
Funciones User-defined
Triggers
Agregar funciones User-defined

Definir objetos de base de datos con cdigo administrado


La unidad de despliegue de aplicaciones para .NET Framework es la
Assembly. Una Assembly es un archivo DLL o EXE compilado que contiene
clase de definiciones y cdigo.
Se puede importar una assembly a una base de datos usando el documento
CREATE ASSEMBLY, y use mejoras para el CREATE PROCEDURE,
CREATE TRIGGER, CREATE FUNCTION, CREATE AGGREGATE, y el
documento CREATE TYPE para implementar un objeto de base de datos
usando el cdigo dentro del assembly.
Los desarrolladores pueden crear objetos de base de datos en el entorno de
Visual Studio .NET y desplegarlos directamente en la base de datos.

Pgina 121 de 630

Reporting Services
Introduccin
Reporting Services permite la creacin de informes de datos de SQL Server.
Los informes pueden ser diseados usando Visual Studio .NETbased
Report Designer y pueden ser accedidos usando un IIS Web site.

Nota Importante:
Reporting Services est disponible para descargar en forma directa separada
para SQL Server 2000.
Caracteristicas Reporting Services
Las caractersticas principales de Reporting Services se describen en la tabla
siguiente.
Caracterstica
Report
authoring

Descripcin
Se puede utilizar Report Designer en
Studio para crear un informe.

Report
management

Se utiliza para administrar la seguridad del informe, generacin y distribucin


del informe segn la agenda, y de esta forma administrar la historia del
informe.

Report
execution

Los reportes son ejecutados en forma conjunta, aprovechando procesos de


consultas paralelas para mejoras en la performance. Los reportes son
compilados mientras .NET los ensambla.

Report access

Los usuarios pueden acceder a los reportes por un IIS Web Site especial,
donde puede exportar los reportes en los formatos ms comunes como
HTML y PDF. Tambin los reportes pueden ser enviados a los usuarios va
e-mail a travs de una suscripcin.

Business Intelligence Development

Pgina 122 de 630

Replicacin
Introduccin
La replicacin permite copiar y distribuir datos y objetos de las bases de
datos, de una base de datos o servidor a otro, y luego opcionalmente
sincronizar entre las bases de datos para asegurar consistencia.
Perfeccionamientos de Replicacin
La siguiente tabla describe un numero de perfeccionamientos significativos
para la replicacin en SQL Server 2005.
Perfeccionamiento
Seguridad
Administracin
Disponibilidad

Descripcin
El modelo de replicacin de seguridad ha sido actualizado para
permitir ms control sobre las cuentas, bajo las cuales se
ejecuta la replicacin.
La interface de replicacin de usuario ha sido mejorada e incluye
un nuevo Replication Monitor.

Programabilidad

Cambios en los esquemas pueden realizarse en


tablas
publicadas.
Un nuevo modelo de administracin de programacin,
Replication Management Objects (RMO), permite incluir lgicas
de trabajo dentro de los procesos de sincronizacin.

Replicacin
Transaccional

La Replicacin Transaccional ahora puede ser iniciada desde un


backup

Replicacin
Heterognea

Los datos pueden ser publicados desde una base de datos


Oracle a una base de datos SQL Server usando replicacin
transaccional o instantnea.

Replicacin Peer-topeer

Los datos pueden ser replicados entre mltiples peer servers.


Datos a todos los servidores pueden ser actualizados y todos
los servidores reciben los cambios hechos a los otros
servidores.
Para simplificar las replicaciones a travs de un firewall o para
usuarios moviles, ha sido introducida la replicacin sobre HTTP
o HTTPS. Esto transmite datos en formato XML entre un
suscriptor y el IIS, y usa formato binario sobre TCP/IP entre IIS y
el publicador.

Replicacin HTTP

Pgina 123 de 630

Native HTTP Support


Introduccin
Cuando usamos Microsoft Windows Server 2003, SQL Server 2005
responde de manera innata a los requerimientos HTTP sin la ayuda de
software Web Server como IIS. Esto hace ms fcil implementar Web
Services basados en una base de datos SQL Server.

Administrar HTTP endpoints


Para habilitar que los requerimientos HTTP sean manejados innatamente por
SQL Server, se debe crear uno o mas HTTP endpoints usando los
documentos CREATE ENDPOINT. El documento CREATE ENDPOINT es
usado para:
Registrar una URL con http.sys, as los requerimientos a esa URL son
redireccionados al SQL Server.
Especificar los puertos TCP en los cuales los requerimientos van a ser
aceptados.
Especificar un mecanismo de autenticacin para el endpoint. Se puede
autenticar un cliente usando mtodos de autenticacin bsicos,
integrados o resumidos. La autenticacin annima ha sido borrada.
Setear el estado inicial (stopped o started) del endpoint. Por defecto,
los endpoint son creados en un estado stopped. Para iniciar un
endpoint luego de que este ha sido creado, se debe usar el documento
ALTER ENDPOINT para cambiar al estado a started.
Especificar las limitaciones del protocolo de Internet (IP) para controlar
el acceso al endpoint.
Crear uno o ms mtodos Web que los usuarios puedan llamar a
travs del endpoint. Mtodos Web pueden ser procesos almacenados
o funciones user-defined.
Una vez que un endpoint HTTP fue creado, se puede dar, revocar o
negar permisos de conexin para controlar el acceso al endpoint.

Pgina 124 de 630

Service Broker
Introduccin
Service Broker habilita la creacin de colas para comunicacin de
transacciones basadas en mensajes (message-based), para que sean
confiables entre los servicios de software. Esto hace a SQL Server 2005 una
mejor plataforma para soluciones basada en Servicios (service-based).

Mejoras del Service Broker con respecto a versiones anteriores:


Las principales mejoras del Service Broker son descriptas en la siguiente
tabla:
Mejora
Coordinacin y
orden de Mensajes

Descripcin
Service Broker asegura que los mensajes sean recibidos en el
orden correcto y sean enviados solo una vez. Utiliza un nico
identificador para rastrear mensajes que pertenecen a la misma
conversacin, haciendo mas fcil implementar operaciones
distribuidas, asincrnicas y de largo proceso.

Disponibilidad
desincronizada

Service Broker usa colas para enviar mensajes asincrnicos; los


mensajes pueden ser enviados a un servicio incluso cuando este
no esta disponible.
El conjunto que desincroniza la comunicacin message-based
hace posible para los sistemas que puedan distribuir sus procesos
de trabajo de forma continua.

Flexibilidad de
Trabajo
Mensajes de
Bloqueo
Relacionados
Programa de
activacin
automtica de
Servicio

Integracin de
Base de Datos

Cuando hay en cola muchos mensajes relacionados con la misma


tarea, Service Broker asegura que los mensajes sean procesados
como una unidad bloqueando todos los mensajes relacionados
cuando el primero de la cola es ledo.
Service Broker puede activar automticamente una instancia de un
servicio de programa cuando un mensaje llega a su cola. Mientras
aumenta el volumen de los mensajes recibidos, Service Broker
puede activar ms de una instancia de servicio de programa hasta
llegar un nmero mximo configurado, y desactivarlos cuando el
trabajo disminuye.
Service Broker esta totalmente integrado con el motor de base de
datos SQL Server, dando soporte para procesamiento de mensaje
transaccional y simplificando as la administracin. Por ejemplo,
las colas de Service Broker estn implementadas como tablas de
base de datos, y por lo tanto se les puede hacer back up durante el
proceso normal de back up de la base de datos.

Pgina 125 de 630

Mejoras
Mejoras del Sistema
Introduccin
SQL Server 2005 introduce un numero de perfeccionamientos que impactan
en la manera en que el sistema de SQL Server puede ser administrado. Las
mejoras incluyen:
Soporte de memoria de Dynamic Address Windowing Extensions
(AWE)
Memoria Hot-add
Afinidad Dinmica de CPU

Memoria Dinmica AWE

Soporte AWE permite aplicaciones 32-bit aplicaciones que puedan


direccionar memoria fsica mas all de los lmites de su memoria virtual
configurada. La edicin Windows Server 2003 puede soportar el mximo de
memoria mostrados en la siguiente tabla:
Edicin Windows
Server 2003
Standard

Mximo de Memoria
fsica
4 GB

Enterprise
Datacenter

32 GB
64 GB

Se puede configurar SQL Server 2005 para usar AWE, usando la opcin de
configuracin awe enabled. Despus podes setear las opciones min server
memory y max server memory para que el SQL Server use memoria AWE
dinmicamente segn lo requerido. El siguiente ejemplo, muestra como usar
la memoria AWE:
**************************************************
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
*************************************************
Pgina 126 de 630

Memoria Hot-add

Cuando se usa la memoria AWE, el SQL Server 2005 tambin puede sacar
provecho del soporte de Windows Server 2003 para memoria hot-add. Si el
hardware del Server soporta memoria hot-add, los administradores pueden
agregar memoria fsica sin reiniciar el servicio SQL Server. El SQL Server
usar memoria fsica adicional si es requerido.
Para aprovechar las memorias hot-add, el SQL Server debe estar
ejecutndose en Windows Server 2003 Enterprise o la edicin Datacenter
con la opcin configurada awe habilitada.
Afinidad Dinmica de CPU

En SQL Server 2005, puedes reconfigurar la opcin affinity mask sin tener
que reiniciar el servicio. El SQL Server automticamente ajusta el numero de
CPUs schedulers usadas para juntar las conversaciones.

Pgina 127 de 630

Perfeccionamiento del Almacenamiento de Datos


SQL Server 2005 introduce un numero de perfeccionamientos de
almacenamiento de datos, incluyendo nuevos y perfeccionados tipos de
datos y un tamao de fila de una tabla mayor. Estas mejoras hacen el
almacenamiento de datos ms eficiente y flexible.

Nuevos y mejorados tipos de datos

El SQL Server 2005 incluye los nuevos y mejores almacenamientos de datos


descriptos en la siguiente tabla:
Tipo de Dato
xml
varchar,
nvarchar, and
varbinary

Descripcin
El tipo de datos xml es usado para almacenar datos
XML directamente en la base de datos. Los valores
para los datos xml pueden ser opcionalmente
asociados con un XML schema.
El mximo de Keyword que pude ser usado para
extender el largo de alguno de estos tipos de datos
es hasta 2^31 bytes (aproximadamente 2 GB).

Mayor tamao de Row

En las ediciones previas de SQL Server, el mximo de una fila de una tabla
era 8 KB. Mientras que este es aun el mximo fsico de una pagina, el SQL
Server 2005puede mover el reflujo de datos varchar, nvarchar, varbinary, o
sql_variant a otra pagina manteniendo 24-byte puntero en la pagina original,
haciendo posible almacenar una row que contenga mas de 8 KB de datos.
Para acomodar el reflujo de esta manera, cada columna en la fila de la tabla
debe tener un mximo de 8 KB. Cuando la combinacin de todas las
columnas es mayor a 8 KB, SQL Server va automticamente a mover la
columna ms larga a una pgina de reflujo.
Nota Importante:
El limite 8 KB aplica solo para las columnas varchar, nvarchar, o varbinary
definidos sin el max keyword. Cuando el max keyword es usado, los datos
son implementados como un gran objeto usando un puntero a las pginas
donde los datos estn fsicamente almacenados.

Pgina 128 de 630

Mejoras de Tablas e Indices Particionados


Introduccin

El SQL Server 2005 da soporte para Tablas e Indices particionados. Esto


permite a una tabla ser esparcida a travs de un numero de Grupos de
Archivos fsicos, mejorando la performance y haciendo mas fcil administrar
los procesos archivados range-based.

Esparcimiento de Tablas de Datos a travs de Grupos de Archivos


Se puede particionar una tabla horizontalmente, as las filas son expandidas
a travs de mltiples Grupos de Archivos. Implementando esta particin se
obtienen los siguientes resultados:
Mejorar la performance en sistemas de multiprocesadores. Las tablas
particionadas puede aumentar la performance cuando estan
consultando grandes tablas en un sistema con 8 o mas procesadores.
El optimizador de consultas de SQL Server 2005 puede ejecutar
consultas sobre mltiples particiones en paralelo, reduciendo el tiempo
requerido del proceso.
Administrar ms fcil tablas grandes. Una tabla particionada hace la
administracin de data subsets mas facil, las cuales se pueden
agrupar lgicamente por un rango de datos. por ejemplo: Un
requerimiento comn de datos es trabajar solo con los datos del mes
en curso. Se puede especificar la columna particionada, numero de
particiones y el rango de valores de las columnas particionadas para
cada particin. Un beneficio de particionar es que se pueden mover
datos entre las tablas particionadas muy rpido con relacin a tener
que hacer un INSERT INTO SELECT FROM statement. Esto es
porque los datos no estn siendo movidos fsicamente; solo la
metadata concerniente al lugar de almacenamiento es lo que se
mueve.

Pgina 129 de 630

Snapshot Isolation Level


Introduccin

El SQL Server 2005 incluye una nueva transaccin de isolation level llamada
snapshot. Snapshot isolation permite a los usuarios leer previamente valores
de datos usando una vista consistente transaccionalmente de la base de
datos. En este isolation level, los lectores no bloquean otros lectores y
escritores que estn accediendo al mismo dato. Similarmente, los escritores
no bloquean a los lectores. La operacin de escritura en el snapshot isolation
level esta basada en un mecanismo de bloqueo con detector de conflicto
automtico. El mecanismo de deteccin de conflictos evita que un usuario
haga cambios basados en datos que otro usuario haya cambiado.

Como Trabaja Snapshot Isolation?

Snapshot isolation esta basado en row versioning, el cual da consistencia de


lectura siguiendo una cadena de versiones que contienen las rows
comprometidas de datos. Esta cadena est situada en una versin separada
de almacenamiento alojada en tempdb. Varias versiones comprometidas de
rows individuales de datos son creados durante la ejecucin del UPDATE
statement y recuperados por la operacin SELECT a travs de las consultas
del snapshot. Las consultas Snapshot son consultas que se ejecutan bajo el
snapshot isolation que lee los datos de snapshot.
Administracin de snapshot isolation

Los Administradores pueden habilitar o no la snapshot isolation en una base


de datos poniendo la opcin ALLOW_SNAPSHOT_ISOLATION en ON u OFF
en una statement CREATE DATABASE o ALTER DATABASE. El siguiente
ejemplo muestra como habilitar la snapshot isolation:
ALTER DATABASE AdventureWorks
SET ALLOW_SNAPSHOT_ISOLATION = ON
Cuando la snapshot isolation esta habilitada, las aplicaciones que quieran
usarla deben setear el isolation level transaccional a SNAPSHOT para
conectarse, segn se indica en el siguiente ejemplo:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
Statements ejecutados en transacciones luego usarn snapshot isolation.
Pgina 130 de 630

SQLiMail

Introduccin

SQLiMail es un nuevo sistema en SQL Server 2005. Usa el Standard Simple


Mail Transfer Protocol (SMTP) para enviar un e-mail desde una instancia de
SQL Server 2005. Usando SQLiMail, las aplicaciones de base de datos
pueden enviar e-mails que contengan resultados de consultas y archivos.
SQLiMail esta diseado para ser un sistema confiable, escalable y seguro
para SQL Server.
La informacin en la siguiente tabla describe como SQLiMail implementa
estos atributos:
Caracterstica
No Extended
MAPI requirement
Process isolation

Descripcin
SQLiMail usa SMTP, no Extended MAPI.

Failover accounts

Se puede especificar mas de un servidor SMTP por perfil, as si el


servidor SMTP no esta disponible, los mails aun pueden ser enviados.
SQLiMail usa Service Broker para enviar mensajes para evitar el bloqueo
de un proceso almacenado.

Envo
Desincronizado

El componente que enva e-mails se ejecuta en un proceso separado


para minimizar el impacto en el SQL Server.

Perfil de
Seguridad

SQL Server ayuda a mejorar la seguridad dando la posibilidad de


especificar que usuarios en una base de datos pueden acceder al perfil
de SQLiMail.

Configuracin
Integrada

SQLiMail almacena la informacin de perfiles dentro del SQL Server. No


es necesario administrar el perfil en una aplicacin externa.

Instalar y configurar SQLiMail

Se puede usar el SQLiMail Configuracin Wizard para instalar y configurar


SQLiMail en una base de datos. Se inicia el asistente desde el SQLiMail en
la Management folder del Object Explorer. El asistente reune la informacin,
incluyendo la base de datos a instalar y la informacin del usuario para crear
un perfil SQLiMail.
Usar SQLiMail

Luego de configurar un perfil de mail, se puede llamar el proceso almacenado


sendimail_sp para enviar un mail desde el SQL Server. El siguiente ejemplo
muestra como enviar SQLiMail usando un perfil llamado SQLServer.
DECLARE @QueryResult int
SET @QueryResult = (SELECT Count(*) FROM Person.Contact)
EXECUTE sendimail_sp
@profile_name='SQLServer',
@recipients='administrator@adventure-works.com',
@subject='Test',
@body=@QueryResult
Pgina 131 de 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 6
Instalacin

2007

Pgina 132 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 133 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 134 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 135 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 136 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 137 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 138 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 139 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 140 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 141 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 142 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 143 de 630

Unidad 2 Instalacin
Objetivos
Esta unidad describe los requerimientos que hay que tener
en cuenta antes de instalar SQL Server 2005. El
entendimiento de los requisitos del setup y las opciones
ayudaran para una instalacin exitosa.
Los puntos a cubrir son:
Elegir la edicin correcta de SQL Server 2005
Listar el hardware requerido para instalar SQL Server
2005.
Listar el software requerido para instalar SQL Server
2005.
Considerar temas coexistentes con ediciones previas de
SQL Server.
Planificar la instalacin SQL Server 2005.

Pgina 144 de 630

Conceptos Claves
SQL Server 2005 tiene varias instancias de instalacin
y segn los servicios que se quiera disponer, se
detallar la instalacin que se deber hacer.

Ediciones SQL Server 2005

Introduccin
El SQL Server 2005 se encuentra disponible en un gran nmero de
ediciones, cada una adecuada para un entorno o tarea en particular. Es
importante entender las diferencias entre las ediciones disponibles para
poder elegir la mas apropiada segn las necesidades.

Ediciones Disponibles
Las ediciones disponibles de SQL Server 2005 estn descriptas en el
siguiente cuadro:
Pgina 145 de 630

Edicion SQL Server 2005

Descripcin

Enterprise Edition (Disponible en versiones


32-bit y 64-bit)

Una versin comprensiva de SQL Server


diseada para altos niveles de performance.
Esta edicin se usa para grandes escalas,
niveles empresarios, aplicaciones criticas.
La Enterprise Edition contiene todos las
ventajas de la edicin Standard, como as
tambin las de Enterprise, incluyendo:
Failover clustering
Database mirroring
Snapshot databases
Mirrored backups
Online page and file restore
Distributed partitioned views
Heterogeneous replication
Peer-to-peer replication

Standard Edition (Disponible en versiones


32-bit y 64-bit versions)

Diseado para aplicaciones de trabajo de


grupo y departamentales. Use esta edicin si
no necesita los niveles de performance y
disponibilidad ofrecidos por la Enterprise
Edition.

Express Edition (Disponible en 32-bit)

Una versin de SQL Server 2005 para clientes


que no estn conectados o aplicaciones que
se ejecutan solas.
Una
edicin
compacta
que
provee
administracin de datos para equipos
inteligentes. Esta edicin es capaz de replicar
datos con SQL Server 2005 y SQL Server
2000, permitiendo a los usuarios mantener un
mobile data store que puede ser sincronizado
con enterprise data.

Mobile Edition

Developer Edition (Available in 32-bit and


64-bit versions)

Incluye todas las funcionalidades de la


Enterprise Edition, pero esta licenciado para
ser usado como un sistema de testeo y
desarrollo, no como un servidor de
produccin. Use esta edicin para desarrollar
y testear soluciones para base de datos.

Adicionalmente, una evaluacin de 120 das de ambas versiones de SQL


Server 2005 Enterprise Edition esta disponible.

Pgina 146 de 630

Requerimientos de Hardware

Requerimientos del Procesador


Cuando se planea la instalacin de un SQL Server 2005 se debe asegurar
que la computadora en la cual se lo quiere instalar, debe tener el mnimo de
hardware requerido. Caso contrario, se pueden producir fallas durante la
instalacin de algunos o todos los componentes.
El procesador de la computadora en la cual se quiere instalar SQL Server
debe ser un procesador Intel Pentium o uno compatible de 600 megahertz
(MHz) o mayor. Microsoft recomienda que se use un procesador de 1
gigahertz (GHz) o ms.

Requerimientos de la Memoria
Una instalacin de SQL Server 2005 Enterprise Edition o SQL Server 2005
Developer Edition debe tener un mnimo de memoria de 256 megabytes
(MB), adicionalmente de la requerida por el sistema operativo. Microsoft
recomienda que se use al menos una memoria de 512 MB.
El SQL Server 2005 Standard Edition requiere un mnimo de memoria de 64
MB. La Express Edition requiere una memoria de 64 MB cuando es instalado
en un Microsoft Windows 2000 o Windows Server 2003, y 32 MB en
Windows XP.

Pgina 147 de 630

Nota: Los requerimientos de memoria indicados en este documento son


solo para el SQL Server 2005. Estos no incluyen los necesitados para
los sistemas operativos y cualquier otro software instalado en la
computadora.
Requisitos del Disco Rgido
Los componentes de la base de datos SQL Server 2005 requieren entre
95 y 300 MB de espacio en disco, dependiendo de las opciones
elegidas. Una instalacin tpica requiere 250 MB de espacio en disco.
Si elige instalar un SQL Server 2005 Analysis Services, necesitara un
adicional de 50 MB de espacio en disco para una instalacin base, o
130 MB para una instalacin tpica. Si elige instalar SQL Server 2005
Reporting Services, necesitara un adicional de 50 MB de espacio en
discoReport Server, y 30 MB para Report Designer.
Hardware Adicional
Requerimientos de hardware adicional para escenarios de instalaciones
tpicas incluyen:
Monitor (Las herramientas de administracin de SQL Server se
encuentran optimizadas para una resolucion de 1024 x 786)
Mouse
Adaptador para Redes
CD / DVD drive (para instalacin desde el CD)

Pgina 148 de 630

Requerimientos de Software del Sistema Operativo

Introduccin
Antes de instalar SQL Server 2005, se debe asegurar de instalar el software
pre-requerido necesario.

Sistema Operativo
El SQL Server 2005 requiere uno de los siguientes sistemas operativos:
Windows Server 2003 Standard Edition
Windows Server 2003 Enterprise Edition
Windows Server 2003 Datacenter Edition
Windows Server 2003 Embedded Edition
Windows 2003 Web Edition
Windows XP Home Edition con Service Pack 1 o ms
Windows XP Professional Edition con Service Pack 1 o ms
Windows XP Media Center con Service Pack 1 o ms
Windows XP Embedded Edition
Windows 2000 Professional con Service Pack 4 o ms
Windows 2000 Server con Service Pack 4 o ms
Windows 2000 Advanced Server con Service Pack 4 o ms
Windows 2000 Datacenter Server con Service Pack 4 o ms
Nota: Las ediciones 32-bit de SQL Server 2005 deben ser instaladas en
versiones de Windows 32-bit. Las ediciones 64-bit de SQL Server 2005
deben ser instaladas en versiones de Windows 64-bit.
Pgina 149 de 630

Requerimientos de Software Adicional


El SQL Server 2005 tambin requiere del siguiente software:
Microsoft Internet Explorer 6.0 Service Pack 1 o superior (requerido para
Microsoft Management Console)
Internet Information Services (IIS) 5.0 o superior (requerido para Reporting
Services)
TCP/IP networking
Microsoft .NET Framework 2.0 (el SQL Server lo instalar si es necesario.)
Microsoft Windows Installer 2.0 (SQL Server lo instalar si es necesario.)

Pgina 150 de 630

Instalacion de SQL Server 2005

Introduccin
El proceso de instalacin de SQL Server 2005 consiste de dos fases
principales: Actualizacin de Componentes y Setup de SQL Setup MSI
package.
Entender el proceso de instalacin ayuda a planificar y realizar la instalacin
de SQL Server 2005.
Actualizacin de Componentes
Durante la fase de actualizacin de componentes en la instalacin, el
programa de setup de SQL Server 2005 chequea e instala si es necesario los
siguientes componentes:
Windows Installer 2.0
The .NET Framework 2.0
SQL Server Setup support files
Nota: Si la instalacin es cancelada luego de completarse la actualizacin de
componentes, los mismos no sern removidos.

Pgina 151 de 630

SQL Setup MSI


Luego de la fase de actualizacin de componentes, el Windows Installer es
usado para instalar el SQL Setup MSI package. Durante esta fase, el setup
realiza las siguientes tareas:
1. Determina si esta es una instalacin local o remota.
2. Determina el tipo de instalacin (instancia por defecto o instancia por
nombre).
3. Analiza la computadora usando el System Consistency Checker.
4. Determina los features a instalar y realiza la instalacin apropiada.

El System Consistency Checker

Introduccin
El System Consistency Checker (SCC) es una caracterstica del proceso de
setup de SQL Server. El SCC realiza una serie de chequeos del sistema y
compara los setings que detecta, con los requeridos para una instalacin
exitosa de SQL Server 2005. Si algunas incompatibilidades son detectadas,

Pgina 152 de 630

el SCC sugiere acciones para remediar los problemas. Los chequeos de SCC
estn clasificados en 5 categoras:
1. Configuracin del sistema
2. Disponibilidad del sistema
3. Configuracin de seguridad
4. Configuracin de la versin
5. Configuracin remota y de cluster.
Entender que chequea el SCC durante la instalacin ayuda a preparar la
computadora para la instalacin.

Chequeos de Configuracin del Sistema


La siguiente tabla muestra los chequeos de configuracin del sistema que
realiza el SCC.

tem a Chequear

Descripcin

Remedio para la Falla

Requerimientos
Mnimos
para
el
Sistema Operativo
Nivel Requerido del
Operating
System
Service Pack

Asegrese que el Sistema Operativo (SO)


tiene soporte.

Referir al usuario a los


requisitos del SO.

Asegrese que el service pack requerido


es aplicable al sistema operativo.

Compatibilidad
de
SQL con el Sistema
Operativo
Configuracin 32-bit o
64-bit

Asegrese que el Sistema Operativo tiene


soporte para el SQL Server que esta
instalando.
Asegrese que el usuario esta intentando
instalar la edicin 32-bit en una
plataforma 32-bit, o la edicin 64-bit en
una plataforma 64-bit.
Chequee que el WMI esta instalado.

Referir al usuario al
Windows
Update
Components
para
el
service pack requerido.
Referir al usuario a la
edicin matriz de SO/SQL
Server.
Informe al usuario de la
imcopatibilidad y luego
salga del Setup.

Windows Management
Interface
(Requerimientos
de
WMI_ Service)
Requerimientos
mnimos
de
Hardware.

Asegrese que el hardware sea el


mnimo requerido.

Informe al usuario que el


WMI debe ser instalado y
luego salga del Setup
Refiera al usuario a los
requerimientos mnimos
para instalacin.

Pgina 153 de 630

Chequeos de Disponibilidad del Sistema


El siguiente cuadro muestra los chequeos de disponibilidad del sistema que
el SCC realiza.
tem a Chequear

Descripcin

Remedio para la Falla

Exclusive Mutex Object

Asegrese que no haya otras


instancias ejecutandose o
debe salir del Setup

Informe al usuario que debe


completar el proceso y
reiniciar el Setup.

Requerimiento
de Rebooteo

Pendiente

Asegrese que ninguno de


los archivos requeridos por el
Setup estn bloqueados por
otros servicios o procesos.

Liste los servicios,


procesos, o aplicaciones
que deben ser detenidas
antes de reiniciar el equipo.

Requerimiento
Performance
Monitor Counter

de

Verifique la actualizacin
apropiada para la instalacin
de SQL Server performance
monitor counters.

Indique al usuario
actualice la registry
necesaria.

Disponibilidad
Caractersticas

de

Determine
que
caracteristicas pueden ser
instaladas
en la configuracin del
corriente sistema.

Muestra las caracteristicas


que no estn disponibles y
sus dependencias en reporte
de SCC.

Requerimiento por defecto


de los permisos en el Path
de instalacin

Chequee que el drive este


formateado, que no este en,
read-only, o que no este
comprimido.

Informe al usuario del


problema y salga del Setup.

que
key

Chequeos de la Configuracin Seguridad


El siguiente cuadro muestra los chequeos de configuracin de seguridad que
el SCC realiza.
tem a Chequear

Descripcin

Remedio para la Falla

Privilegios
del
Administrador del Sistema

Asegrese que el setup de


usuario tiene privilegios de
administrador del sistema.

Informe al usuario que debe


loggearse
como
Administrador del Sistema.

Pgina 154 de 630

Chequeos de Configuracin de versin


La siguiente tabla muestra los chequeos de Configuracin de versin que
SCC realiza.
tem a Chequear

Descripcin

Remedio para la Falla

Requerimiento de Internet
Explorer

Asegrese que el Internet


Explorer
6.0 Service Pack 1 est
instalado.

Refiera al usuario al
Windows Update
Component para instalar
El navegador requerido.

Versin de SQL Server

Chequee
las
versiones
instaladas de SQL Server
para tener las condiciones
necesarias cuando actualiza.

Refiera el usuario a los


archivos de instalacion
del service pack

Requisitos MSXML

Asegrese que el MSXML


esta instalado.

Refiera al usuario al
Windows Update
Component para instalar
MSXML.

Chequeos de Configuracin Remota y de Cluster.


El siguiente cuadro muestra los chequeos de configuracin remota y de
Cluster que el SCC realiza.:
tem a Chequear

Descripcin

Remedio para la Falla

Habilita el Default
Administrative Share
Directory

Asegrese
que
el
administrative
share
(admin$)
esta
habilitado
en la computadora remota o
en el
cluster node.

Preguntar al usuario
ofrecer habilitar el share.

El SCC Report
Luego de completar estos chequeos, el SCC genera un reporte que puede
ser visto o guardado.
Este reporte incluye informacin y soluciones recomendadas en cualquiera
de los tems que pueden no permitir la instalacin. Tambin incluye
advertencias y recomendaciones en tems que permitirn la instalacin pero
que pueden causar problemas, como configuraciones de seguridad.

Pgina 155 de 630

Instalar Componentes de SQL Server 2005

Introduccin
Cuando instala SQL Server 2005, se usa un programa interactivo para el
setup. Es importante entender los pasos que debe seguir cuando usa el
programa para el setup, para que haga las selecciones adecuadas de
instalacin, de acuerdo a las necesidades particulares de la empresa.

Pasos para la Instalacin


Siga las siguientes instrucciones para instalar SQL Server 2005:
1. Verifique que su computadora cumple con los requisitos mnimos de
hardware y software para SQL Server 2005.
2. Inserte el CD de SQL Server 2005.
3. Si aparece la pantalla del Setup de SQL Server 2005, haga clic en
Run the SQL Server Installation Wizard.

Pgina 156 de 630

4. Si la pantalla del Set up de SQL Server 2005 no aparece, vea los


contenidos del CD y haga doble clic en setup.exe para comenzar a
ejecutar el programa de Setup.
5. Acepte el End User License Agreement.
6. Instale los pre-requisitos necesarios detectados por SQL Server
Component Update.
7. Inicie el SQL Server Installation Wizard para instalar una nueva
instancia del SQL Server.
8. Vea el reporte del System Consistency Checker.
9. Ingrese la informacin de registro.
10. Seleccione las caractersticas que desee instalar. Puede a traves de la
la opcin Advanced seleccionar componentes individuales para cada
caracteristica sobre los grupos predefinidos.
11. Seleccione instalar una instancia por defecto o una instancia con
nombre.
12. Si estas instalando en un Windows cluster, ingrese la informacin de
configuracin del cluster.
13. Ingrese la informacin de la cuenta para el servicio de SQL Server
2005.
14. Seleccione el modo de autentificacin. Puede seleccionar Windows
Authentication o Windows y SQL Server Authentication.
15. Selecione el collation setting.
16. Si selecciona el Reporting Services en el paso 10, ingrese la
informacin de configuracin del Reporting Services.
17. Haga clic en Finish cuando la instalacion se complete.
18. Verifique la instalacion haciendo las siguientes tareas:
a. Examine los archivos de log del setup ubicados en C:\Program
Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files folder.
b. El resumen en el archivo .txt localizado en C:\Program
Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\ lista los
logs creados.
c. Examine el estado de los servicios instalados del SQL Server.
d. Conctese al SQL Server usando sqlcmd.exe o SQL Server
Management Studio.

Pgina 157 de 630

Realice una instalacin desatendida

Introduccin
Se puede realizar una instalacin desatendida de SQL Server 2005 creando
un archivo .ini que contenga la informacin de setup requerido y ejecute
setup.exe en una lnea de comando. Entender como realizar una instalacin
desatendida ayuda a realizar instalaciones mltiples e idnticas de SQL
Server en una empresa o delegar la instalacin a otro tcnico.

Crear un archivo .ini


Se puede crear un archivo .ini para la instalacin desatendida usando
cualquier editor de texto, como el Notepad. El CD del SQL Server contiene un
archivo llamado template.ini en el cual puedes crear tu archivo .ini. El
archivo .ini esta compuesto de una seccin simple [Options] que contiene
parmetros, cada uno relacionado a una caracterstica diferente o al seteo de
la configuracin.

Empezar una instalacin desatendida


Para empezar una instalacin desatendida, use la siguiente sintaxis en una
lnea de comando:
setup.exe /settings <path to .ini file>
Pgina 158 de 630

Por ejemplo, para realizar una instalacin desatendida sin un archivo .ini
llamado installsettings.ini en el C:\setup folder, use el siguiente comando:
setup.exe /settings c:\setup\installsettings.ini
Adicionalmente, puede especificar el /qn switch para realizar una instalacin
silenciosa (sin cuadros de dilogos) o el /qb switch para especificar que solo
sean mostrados los cuadros de progreso.

Realizar una instalacin Remota

Introduccin
Se puede instalar SQL Server 2005 en una computadora a traves de una red.
Esto es til cuando se necesita instalar SQL Server en mltiples
computadoras en distintos lugares, o cuando no es necesario acceder
fsicamente a la computadora en la que se quiere instalar SQL Server.

Pgina 159 de 630

Requerimientos de Instalacin Remota


La instalacin remota debe ser efectuada desde una lnea de comando
usando un archivo .ini.
El archivo .ini debe contener los parmetros explicados en el siguiente
cuadro:
Parmetro

Descripcin

TARGETCOMPUTER

El nombre de la maquina en red en la cual


SQL Server va a ser instalado.

ADMINACCOUNT

La cuenta con privilegios de administrador


que se usar para loggearse en la
computadora remota.
La clave de la cuenta del administrador para
loggearse en la computadora remota.

ADMINPASSWORD

La instalacin remota es soportada solo en un entorno de dominio, no puede


ser usada para instalar SQL Server en una computadora remota en un grupo
de trabajo.

Instale SQL Server en un Cluster

Pgina 160 de 630

Introduccin
El SQL Server 2005 Enterprise Edition soporta la instalacin en un failover
cluster en Windows 2000 Advanced Server, Windows 2000 Datacenter
Server, Windows Server 2003 Enterprise Edition, y Windows Server 2003
Datacenter Edition.
Es importante entender cmo prepararse para la instalacin en un cluster
para asegurar una instalacin exitosa que provea un alto nivel de
disponibilidad.

Prepararse para la instalacin en un cluster


Antes de instalar SQL Server 2005 en un cluster, considere los tems
descriptos en la siguiente tabla:
Consideracin

Descripcin

Configuracin del Sistema Operativo

Asegrese de que el clustering est instalado


y configurado apropiadamente en el sistema
Windows que planea usar para SQL Server.
Asegrese de que las letras de unidades
para los discos del cluster coincidan con
todos los nodos y que deshabilito NetBIOS
en todas las placas de red privadas.

Soporte de
clustering

Asegrese de que los componentes de SQL


Server que planea usar estn soportados por
un cluster. Lea la documentacin del Setup
de SQL Server 2005 para informase acerca
de los componentes soportados en un
cluster.

SQL

Server

Dependencias de Clustering

component

Asegrese
de
que
ha
configurado
correctamente los componentes de software
de los cuales dependen los clustering de
SQL Server 2005. Ver los documentos del
setup de SQL Server 2005 y los documentos
de herramientas de Windows 2003 Cluster
Administrator.

Instalar SQL Server 2005 en un cluster


Luego de configurar el clustering en Windows 2000 o Windows Server 2003,
siga las siguientes instrucciones para instalar SQL Server 2005 en el cluster:
1. Inserte el CD de SQL Server 2005.

Pgina 161 de 630

2. Si la pantalla del setup de SQL Server 2005 se muestra, vea los


contenidos del CD y haga click en setup.exe para empezar el
programa del setup.
1. Acepte el End User License Agreement.
2. Instale los componentes pre-requeridos necesarios detectados por
SQL ServerComponent Update.
3. Inicie el SQL Server Installation Wizard para instalar una nueva
instancia de SQL Server.
4. En la pagina de Installation Computer, seleccione Virtual Server (el
cual ser seleccionado automticamente si un Windows cluster es
detectado), y especifique las credenciales de login remoto para los
otros nodos en los cluster.
6. Vea el reporte del System Consistency Checker.
7. Ingrese la informacin de registracion.
8. Seleccione las caractersticas que quiere instalar. Puede seleccionar
grupos preseleccionados o usar la opcin Advanced para seleccionar
componentes individuales para cada caracterstica.
9. Seleccione si instala una instancia por defecto o una instancia
nombrada.
10. En la pagina de Virtual Server Name, Especifique un nombre para el
servidor virtual.
11. En la pagina de Virtual Server Configuration, Ingrese un protocolo
de Internet (IP) para cada red en las cuales estar disponible el
servidor virtual para los clientes.
12. En la pagina de Cluster Node Configuration, especifique los nodos a
incluir en el Servidor virtual.
13. En la pagina de Remote Account Information, especifique la
informacin de la cuenta remota. Esta cuenta ser usada para
configurar SQL Server en cada nodo en el servidor virtual; ser solo
usada durante el setup. Esta cuenta debe ser vlida como cuenta de
administrador en todos los nodos del cluster.
a. Ingrese la informacin de la cuenta para los servicios de SQL
Server 2005.
b. Seleccione el modo de autenticacin. Puede seleccionar
Windows Authentication o Windows and SQL Server
Authentication.
c. Seleccione un setting.
d. Si selecciona la caracterstica Reporting Services en el paso 10,
ingrese la informacin de configuracin de Reporting Services.
14. Haga click en Finish cuando la instalacion termine.

Pgina 162 de 630

Actualizar un cluster existente


Considere los siguientes items cuando actualice un SQL Server cluster
existente a un SQL Server 2005:
Cuando actualiza a un SQL Server 2005 cluster, solo la instancia por defecto
es permitida:
Ediciones previas de SQL Server no pueden coexistir con un failover
cluster SQL Server 2005.
Debe usar una cuenta dominio para todos los servicios de SQL Server.
Si ha configurado replicacin en el cluster, debe borrar todas las
publicaciones, remover la replicacin, y luego reconfigurar despus de
que el proceso de actualizacin haya finalizado.

Administrar una instalacin de SQL Server 2005


Introduccin
Esta seccin describe los procesos para administrar la instalacin existente
de SQL Server 2005.

Objetivos
Agregar o quitar componentes de SQL Server 2005.
Remover SQL Server 2005.
Administrar una instalacin de SQL Server.

Pgina 163 de 630

Agregar o Remover componentes de SQL Server 2005

Se puede remover o agregar componentes de instalacin de un SQL Server


2005 usando las aplicaciones del panel de control Add or Remove Programs.
Se puede usar aplicacion Add or Remove Programs para administrar una
instalacion de SQL Server, lo cual es una gran mejora sobre las ediciones
previas de SQL Server, que requeran que el administrador re-ejecute el
programa del setup para cambiar las caractersticas instaladas.

Aplicacin Add or Remove Program de SQL Server


Introduccin
Las aplicacin Add or Remove Program lista una entrada para cada instancia
instalada de SQL Server en la computadora. Adicionalmente, si ha instalado
alguno de los simples que provee SQL Server 2005, cada ejemplo ser
listado por separado.
Use el siguiente procedimiento para modificar la instalacin de SQL Server
2005:
1. En el Panel de Control, haga click en Add or Remove Programs.
2. Seleccione la instancia del SQL Server 2005 que quiera modificar.
3. Haga click en Change.
4. En la pgina Welcome to the Microsoft SQL Server Installation
Wizard,haga click en Next.
5. En la pgina System Configuration Check, haga click en Next.
Pgina 164 de 630

6. En la pgina Change or Remove Instance, haga click en Change


Installed Components.
7. Use el programa del setup para hacer los cambios necesarios en la
instalacion de SQL Server.

Remover SQL Server 2005

Introduccin
Si necesita remover SQL Server 2005 de una computadora, use las
aplicaciones Add or Remove Programs del Panel de Control.

Remover SQL Server


Puede usar uno de los dos mtodos para iniciar el programa de setup de SQL
Server y remover SQL Server:
En Add or Remove Programs, seleccione la instancia de SQL Server que
quiere remover, y luego haga click en Remove.
En Add or Remove Programs, seleccione la instancia de SQL Server que
quiere remover, y luego haga click en Change. Use las opciones por
defecto del programa del setup hasta que la pagina Change or Remove
Instance es mostrada. En esta pagina,haga click Remove Microsoft SQL
Server.

Pgina 165 de 630

Trabajando con versiones previas

Introduccin
Si se esta usando una versin previa del SQL Server, se puede hacer una
actualizacin al SQL Server 2005 o usar SQL Server 2005 side by side con la
instalacin existente.
Ejecutar SQL Server 2005 junto con una instalacin existente puede
simplificar el proceso de migracin, posibilitando el testeo de aplicaciones
existentes sin grabar la actualizacin.
Upgrading to SQL Server 2005
Se puede usar el programa de setup de SQL Server 2005 para actualizar un
SQL Server 2000 Service Pack 3 a SQL Server 2005. Si se esta usando
versiones anteriores de SQL Server, primero se debe actualizar a SQL Server
2000 y despus actualizar a SQL Server 2005.
Se puede actualizar las bases de datos desde versiones previas de SQL
Server usando el Copy Database Wizard.

Pgina 166 de 630

Compatibilidad Backward
Si necesitas mantener compatibilidad con aplicaciones construidas con
versiones anteriores de SQL Server, considera los siguientes puntos:
Modo de compatibilidad SQL Server 2005 provee el sp_dbcmptlevel
stored procedure para habilitar compatibilidad con versiones previas de
SQL Server.
@new_cmptlevel value

SQL Server version

60

SQL Server 6.0

65

SQL Server 6.5

70

SQL Server 7.0

80

SQL Server 2000

90

SQL Server 2005

Opciones de collation ,durante el setup, generalmente usted selecciona


el default Windows collation. Se puede cambiar esta configuracin si
se necesita que sea compatible con otra instalacin de SQL Server
2005 o un SQL Server 2000 existente. Hay que asegurarse de
seleccionar el collation apropiado cuando se estn actualizando
versiones anteriores.

Pgina 167 de 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 7
Configuracin

2007

Pgina 168 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 169 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 170 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 171 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 172 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 173 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 174 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 175 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 176 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 177 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 178 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 179 de 630

Unidad 3 Configuracin
Objetivos
Este modulo contiene una descripcin de las herramientas
para configurar el SQL Server 2005. Se incluyen puntos:
Configuration Manager: Para administrar los servicios
y la conectividad del SQL Server
Propiedades del Servidor

Pgina 180 de 630

SQL Server Configuration Manager


El Configuration Manager es una herramienta de configuracin de SQL
Server, para administrar los servicios asociados a SQL Server, para
configurar los protocolos de red utilizados por SQL Server y para administrar
la configuracin de conectividad de red de los equipos cliente de SQL Server.
El Configuration Manager es un complemento de Microsoft Management
Console (MMC) disponible desde el men Inicio o que se puede agregar a
cualquier otra pantalla de Microsoft Management Console. Microsoft
Management Console (mmc.exe) utiliza el archivo SQLServerManager.msc
de la carpeta System32 de Windows para abrir el Configuration Manager de
SQL Server.
El Configuration Manager combina la funcionalidad de las siguientes
herramientas de SQL Server 2000: Herramienta de red de servidor,
Herramienta de red de cliente y Administrador de servicios.
El Configuration Administrator y SQL Server Management Studio utilizan el
Instrumental de administracin de Windows (WMI) para ver y cambiar
algunas configuraciones del servidor. WMI proporciona una forma unificada
de crear una interfaz con las llamadas a la API que administran las
operaciones de registro solicitadas por las herramientas de SQL Server y de
proporcionar un mejor control y manipulacin de los servicios SQL
seleccionados del complemento del Administration Manager.
El Configuration Manager de SQL Server combina la funcionalidad de las
siguientes herramientas de SQL Server 2000:
Herramienta de red de servidor
Herramienta de red de cliente
Administrador de servicios.
El Configuration Manager de SQL Server le permite detener, iniciar o pausar
diversos servicios de SQL Server 2005. Tambin puede utilizarse para ver las
propiedades del servicio seleccionado.
Nota: Solo puede administrar servicios de SQL Server 2005
Para tener acceso al Configuration Manager de SQL Server en el men
Inicio, seleccione Todos los programas, Microsoft SQL Server 2005 y
Herramientas de configuracin y, finalmente, haga clic en el Configuration
Manager de SQL Server.
De todas las herramientas instaladas, necesitamos conocer la primera de
todas (SQL Server Configuration Manager). A travs de ella podremos
configurar el acceso y el modo de arranque de nuestro servidor de datos.
Iniciamos la aplicacin y nos encontramos la siguiente pantalla:

Pgina 181 de 630

En esta pantalla se visualizan varias herramientas de configuracin:


Services
Server Network Configuration
Client Network Configuration
Al acceder al SQL Server 2005 Services, podremos configurar dos de los
aspectos ms importantes de nuestro servidor. Por lo tanto hacemos doble
click en el icono correspondiente y accedemos a los servidores de bases de
datos instalados en nuestro equipo.
Tendremos que configurar el primero de todos:

Haciendo clic con el botn derecho accedemos al men desde el cual vemos
que tenemos habilitadas una serie de opciones.
El primer bloque de opciones hace referencia al estado de nuestro servidor,
la opcin propiedades para configuracin y la ltima una pequea ayuda que
Pgina 182 de 630

nos ofrecen en la instalacin. De nuevo, podemos comparar el servicio de


base de datos de SQL Server 2005, con el servicio de pginas Web de IIS,
como ya lo hemos visto, desde la configuracin de IIS tenemos la opcin de
configurar una serie de propiedades, y establecer el estado del servidor de
pginas web. De igual manera desde SQL Server Configuration Manager,
podemos realizar estas mismas tareas sobre los servicios de base de datos.
Opcin:
start
stop
pause
resume
restart
properties
help

Funcin:
Para activar nuestro servidor de modo manual. Si el servidor se encuentra
en funcionamiento, lgicamente esta funcin aparecer deshabilitada, lo
mismo suceder con el resto de opciones.
Detiene el servidor.
Detiene el servidor momentneamente.
Una vez detenido el servidor mediante "pause", lo vuelve a poner en marcha.
Detiene el servidor, e inmediatamente vuelve a activarlo.
Accedemos a una ventana para llevar a cabo varias configuraciones.
Pequea ayuda sobre este servicio.

Para configurar otros aspectos del servidor desde la ventana de configuracin


que aparece pulsando sobre propiedades:

Destacamos la propiedad Start Mode, desde ella podemos habilitar 3 modos


diferentes de activar nuestro servidor:
Opcin:
Automatic

Disabled

Funcin:
Con esta opcin, el servidor arrancar conjuntamente con el sistema,
es decir, cuando nuestro sistema operativo arranque, el servidor de
base de datos se activar automticamente, esta es la opcin ms
habitual y recomendad, ya que nuestro servidor estar
permanentemente ofreciendo sus servcios.
Deshabilitamos el arranque del servidor.
Pgina 183 de 630

Manual

El modo de gestionar el estado del servidor ser manual por parte del
desarrollador mediante las opciones que vimos anteriormente.

La configuracin predeterminada de los componentes del servidor permite


ejecutar una instancia de Microsoft SQL Server inmediatamente despus de
la instalacin. En la mayor parte de los casos, no es necesario volver a
configurar el servidor. No obstante, ser necesaria la administracin de los
servidores en aquellos casos en los que se desee establecer configuraciones
especiales de servidores, cambiar las conexiones de red o establecer
opciones de configuracin de servidores para mejorar el rendimiento de SQL
Server.
Las propiedades de servidor se pueden administrar desde SQL Server
Management Studio o desde el Configuration Manager de SQL Server.
Muchas propiedades son de slo lectura. Algunas propiedades de servidor
slo se pueden cambiar mediante la herramienta adecuada. Algunas
propiedades requieren que se reinicie SQL Server para que surtan efecto.

Propiedades del Servidor


Muchas de las propiedades de un servidor se pueden cambiar desde la
herramienta Configuration Manager de SQL Server.
Para ver o cambiar las propiedades del servidor
1. En el men Inicio, seleccione Todos los programas, Microsoft SQL
-+Server 2005, Herramientas de configuracin y haga clic en
Administrador de configuracin de SQL Server.
2. En Administrador de configuracin de SQL Server, haga clic en
Servicios de SQL Server 2005.
3. En el panel de detalles, haga clic con el botn secundario en SQL
Server (<nombreDeInstancia>) y, a continuacin, haga clic en
Propiedades.
4. En el cuadro de dilogo Propiedades de SQL Server
(<nombreDeInstancia>), cambie las propiedades del servidor en la
ficha Servicio o en la ficha Avanzadas y, a continuacin, haga clic
en Aceptar.
Pgina 184 de 630

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 8
Administracin

2007

Pgina 185 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 186 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 187 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 188 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 189 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 190 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 191 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 192 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 193 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 194 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 195 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 196 de 630

Unidad 4 Administracin
Objetivos
Este modulo contiene una descripcin sobre la
Administracin del SQL Server 2005.
Los puntos a cubrir son:
Propiedades de las Bases de Datos
Almacenamiento de Datos
Copias de Seguridad y Restauracin

Pgina 197 de 630

Propiedades de las Bases de Datos


La Base de Datos tiene una caracterstica importante sobre las propiedades
que se le asignarn:

Sintaxis

DATABASEPROPERTY ( database , property )


Argumentos
database
Es una expresin que contiene el nombre de la base de datos para la
que se va a devolver la informacin de la propiedad con nombre.
database es de tipo nvarchar(128).
property
Es una expresin que contiene el nombre de la propiedad de base de
datos que se va a devolver. property es de tipo varchar(128) y puede
tomar uno de los siguientes valores.
Valor
IsAnsiNullDefault

Descripcin

Valor
devuelto

La base de datos sigue las reglas de


SQL-92 para aceptar valores NULL.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsAnsiNullsEnabled

Todas las comparaciones con un


valor NULL se evalan como
desconocidas.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsAnsiWarningsEnabled

Se generan mensajes de error o de


advertencia cuando se producen
situaciones de error estndar.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

Pgina 198 de 630

IsAutoClose

La base de datos se cierra sin


problemas y libera los recursos
cuando sale el ltimo usuario.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsAutoCreateStatistics

IsAutoShrink

Las estadsticas existentes se


actualizan automticamente cuando
quedan desfasadas debido a que
han cambiado los datos de las
tablas.

1 = Verdadero

Los archivos de la base de datos son


candidatos a la reduccin peridica
automatizada.

1 = Verdadero

0 = Falso
NULL =
Entrada no
vlida

0 = Falso
NULL =
Entrada no
vlida

IsAutoUpdateStatistics

La opcin de actualizacin
automtica de estadsticas se
encuentra habilitada.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsBulkCopy

La base de datos permite


operaciones no registradas.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsCloseCursorsOnCommitEnabled

Los cursores que estn abiertos se


cierran cuando se confirma una
transaccin.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsDboOnly

La base de datos est en modo de


acceso como slo DBO.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

Pgina 199 de 630

IsDetached

Una operacin de separacin separ


la base de datos.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsEmergencyMode

Se habilita el modo de emergencia


para permitir el uso de las bases de
datos no seguras.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsFulltextEnabled

La base de datos se habilita para


texto.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsInLoad

La base de datos se est cargando.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsInRecovery

Se est recuperando la base de


datos.

1 = Verdadero
0 = FALSE o
NULL1 = La
entrada no es
vlida

IsInStandBy

La base de datos est conectada en


modo de slo lectura y se permite la
restauracin del registro.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsLocalCursorsDefault

El valor predeterminado de las


declaraciones de cursores es
LOCAL.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

Pgina 200 de 630

IsNotRecovered

La base de datos no se ha podido


recuperar.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsNullConcat

Un operando de concatenacin
NULL devuelve NULL.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsOffline

La base de datos no tiene conexin.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsParameterizationForced

La opcin establecida para


parametrizacion en la base de datos
es forzada

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsQuotedIdentifiersEnabled

Se pueden utilizar comillas dobles en


los identificadores.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsReadOnly

La base de datos est en un modo


de acceso de slo lectura.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsRecursiveTriggersEnabled

Se habilita la activacin recursiva de


desencadenadores.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

Pgina 201 de 630

IsShutDown

La base de datos ha tenido un


problema al iniciarse.

1 = Verdadero
0 = Falso
NULL1 = La
entrada no es
vlida

IsSingleUser

La base de datos est en modo de


acceso de un solo usuario.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsSuspect

La base de datos puede ser corrupta.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

IsTruncLog

La base de datos trunca sus puntos


de comprobacin de inicio de sesin.

1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida

Versin

Nmero interno de la versin del


cdigo de Microsoft SQL Server con
el que se cre la base de datos. Slo
es utilizado internamente por las
herramientas de SQL Server y en el
procesamiento de actualizaciones.

Nmero de
versin = La
base de datos
est abierta.
NULL = La
base de datos
est cerrada.

El valor devuelto tambin es NULL si la base de datos no se ha iniciado


nunca o se ha cerrado automticamente.
Tipos de valor devueltos
int

Almacenamiento de datos
La unidad fundamental del almacenamiento de datos en SQL Server es la
pgina. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de
una base de datos se divide lgicamente en pginas numeradas de forma
Pgina 202 de 630

contigua de 0 a n. Las operaciones de E/S de disco se realizan en el nivel de


pgina. Es decir, SQL Server lee o escribe pginas de datos enteras.
Las extensiones son una coleccin de ocho pginas fsicamente contiguas;
se utilizan para administrar las pginas de forma eficaz. Todas las pginas se
almacenen en extensiones.
Pginas
En SQL Server, el tamao de pgina es de 8 KB. Esto significa que las bases
de datos de SQL Server tienen 128 pginas por megabyte. Cada pgina
empieza con un encabezado de 96 bytes, que se utiliza para almacenar la
informacin del sistema acerca de la pgina. Esta informacin incluye el
nmero de pgina, el tipo de pgina, el espacio libre en la pgina y el Id. de
unidad de asignacin del objeto propietario de la pgina.
En la siguiente tabla se muestran los tipos de pgina utilizados en los
archivos de datos de una base de datos de SQL Server.
Tipo de pgina
Datos
ndice
Texto o imagen

Contenido
Las filas de datos con todos los datos, excepto los datos text,
ntext, image, nvarchar(max), varchar(max), varbinary(max)
y xml, cuando text in row est establecido en ON.
Entradas de ndice.
Tipos de datos de objetos grandes:
Datos text, ntext, image, nvarchar(max),
varchar(max), varbinary(max) y xml.
Columnas de longitud variable cuando la fila de datos
sobrepasa 8 KB:
varchar, nvarchar, varbinary y sql_variant.

Mapa de asignacin global,


Mapa de asignacin global
compartido
Espacio disponible en
pginas
Mapa de asignacin de
ndices
Mapa cambiado
masivamente
Mapa cambiado diferencial

Informacin acerca de si se han asignado las extensiones.


Informacin acerca de la asignacin de pginas y el espacio
libre disponible en las pginas.
Informacin acerca de las extensiones utilizadas por una tabla
o un ndice por unidad de asignacin.
Informacin acerca de las extensiones modificadas por
operaciones masivas desde la ltima instruccin BACKUP
LOG por unidad de asignacin.
Informacin acerca de las extensiones que han cambiado
desde la ltima instruccin BACKUP DATABASE por unidad
de asignacin.

Nota: Los archivos de registro no contienen pginas, contienen series de


registros.
Las filas de datos se colocan en las pginas una a continuacin de otra,
empezando inmediatamente despus del encabezado. Al final de la pgina,
comienza una tabla de desplazamiento de fila. Caada una de esas tablas
contiene una entrada para cada fila de la pgina. Cada entrada registra, a su
vez, la distancia del primer byte de la fila desde el inicio de la pgina. Las
entradas de la tabla de desplazamiento de fila estn en orden inverso a la
secuencia de las filas de la pgina.

Pgina 203 de 630

Compatibilidad con filas largas


Las filas no puede abarcar pginas en SQL Server 2005; no obstante, partes
de la fila se pueden separar de la pgina de la fila para que la fila pueda ser
muy grande. La cantidad mxima de datos y de sobrecarga que est
contenida en una nica fila de una pgina es de 8.060 bytes (8 KB). Sin
embargo, esto no incluye los datos almacenados en el tipo de pgina Texto o
imagen. En SQL Server 2005, esta restriccin se flexibiliza para tablas que
contienen las columnas varchar, nvarchar, varbinary o sql_variant.
Cuando el tamao de fila total de todas las columnas variables y fijas de una
tabla excede el lmite de 8.060 bytes, SQL Server mueve dinmicamente una
o ms columnas de longitud variable a pginas de la unidad de asignacin
ROW_OVERFLOW_DATA, empezando por la columna con el mayor ancho.
Esto se realiza cuando una operacin de insercin o actualizacin aumenta el
tamao total de la fila ms all del lmite de 8060 bytes. Cuando una columna
se
mueve
a
una
pgina
de
la
unidad
de
asignacin
ROW_OVERFLOW_DATA, se mantiene un puntero de 24 bytes de la pgina
original de la unidad de asignacin IN_ROW_DATA. Si una operacin
posterior reduce el tamao de la filas ,SQL Server vuelve a mover las
columnas dinmicamente a la pgina de datos original.
Extensiones
Las extensiones son la unidad bsica en la que se administra el espacio. Una
extensin consta de ocho pginas contiguas fsicamente, es decir 64 KB.
Esto significa que las bases de datos de SQL Server tienen 16 extensiones
por megabyte.
Para hacer que la asignacin de espacio sea eficaz, SQL Server no asigna
extensiones completas a tablas con pequeas cantidades de datos. SQL
Server maneja dos tipos de extensiones:
Las extensiones uniformes, son propiedad de un nico objeto; slo el
objeto propietario puede utilizar las ocho pginas de la extensin.
Las extensiones mixtas, que pueden estar compartidas por hasta ocho
objetos. Cada una de las 8 pginas de la extensin puede ser propiedad
de un objeto diferente.

A las tablas o ndices nuevos se les suelen asignar pginas de extensiones


mixtas. Cuando la tabla o el ndice crecen hasta el punto de ocupar ocho
Pgina 204 de 630

pginas, se pasan a extensiones uniformes para las posteriores


asignaciones. Si se crea un ndice de una tabla existente que dispone de filas
suficientes para generar ocho pginas en el ndice, todas las asignaciones
del ndice estarn en extensiones uniformes.

Copias de Seguridad y Restauracin


Copias de Seguridad
Cada modelo de recuperacin permite realizar una copia de seguridad
completa o parcial de una base de datos de SQL Server, de archivos
individuales o de grupos de archivos de la base de datos. No pueden crearse
copias de seguridad de las tablas.
Copias de seguridad de datos
El mbito de una copia de seguridad de datos puede ser la base de datos
completa, parcial o un conjunto de archivos o grupos de archivos. En
todos estos casos, SQL Server admite copias de seguridad completas y
diferenciales:
Copia de seguridad completa: Una copia de seguridad completa incluye
copiar: todos los datos de una base de datos determinada o copiar un
conjunto de grupos de archivos, as como una cantidad suficiente del registro
como para permitir la recuperacin de datos.
Copia de seguridad diferencial: Una copia de seguridad diferencial se basa
en la ltima copia de seguridad completa de los datos. sta se denomina
base de la copia de seguridad diferencial o base diferencial. Una base
diferencial es una copia de seguridad completa de datos de lectura y
escritura. Una copia de seguridad diferencial incluye slo los datos que han
cambiado desde la ltima base diferencial. Por lo general, las copias de
seguridad diferenciales que se realizan poco despus de su base son ms
pequeas y rpidas, ahorrando as tiempo con respecto a la copia de
seguridad completa. Por tanto, el uso de copias de seguridad diferenciales
acelera el proceso de realizacin de copias de seguridad frecuentes y reduce
el riesgo de prdida de los datos. Por lo general, una base diferencial se
utiliza en varias copias de seguridad diferenciales sucesivas. En el momento
de la restauracin, se restaura primero la copia de seguridad completa,
seguida de la copia de seguridad diferencial ms reciente.
A medida que la base de datos se actualiza, la cantidad de datos que
Pgina 205 de 630

incluyen las copias de seguridad diferenciales aumenta. De esta forma, el


proceso de creacin y restauracin de la copia de seguridad es ms lento.
Con el tiempo, se deber crear otra copia de seguridad completa para
obtener una nueva base diferencial que se utilizar en otra serie de copias de
seguridad diferenciales.
Nota: Por lo general, una copia de seguridad diferencial abarca los
mismos archivos de datos que una nica base diferencial. Con el
modelo de recuperacin simple, la copia de seguridad diferencial
puede tener una nica base diferencial. Al intentar utilizar varias
bases se produce un error en la operacin de copia de seguridad.
Con el modelo de recuperacin completa, las copias de seguridad
diferenciales pueden utilizar varias bases, pero esto dificulta la
administracin.
Cada copia de seguridad de datos incluye parte del registro de transacciones
para que se puedan recuperar hasta los ltimos datos de la copia de
seguridad.
Tras la primera copia de seguridad de datos, en el modelo de recuperacin
completa o el modelo de recuperacin por medio de registros de operaciones
masivas, se necesitan copias de seguridad del registro de transacciones (o
copias de seguridad de registros) peridicas. Cada copia de seguridad de
registros incluye la parte del registro de transacciones que estaba activa al
crear la copia de seguridad, adems de todas las entradas de registro que no
se incluyeron en una copia de seguridad de registros anterior.

Copias de seguridad de bases de datos


Las copias de seguridad de bases de datos son fciles de utilizar y se
recomienda su uso cuando el tamao de la base de datos los permite. SQL
Server admite los siguientes tipos de copia de seguridad de base de datos.
Tipo de copia de
seguridad
Copia
de
seguridad
completa de base
de datos
Copia
de
seguridad
diferencial
de
base de datos

Descripcin
Una copia de seguridad completa de la base de
datos representan la base de datos completa en el
momento en que finaliz la copia de seguridad.
Copia de seguridad de todos los archivos de una
base de datos. Esta copia de seguridad slo incluye
las extensiones de datos modificadas desde la copia
de seguridad ms reciente de la base de datos de
cada archivo.

Copias de seguridad parciales


Las copias de seguridad parciales y diferenciales parciales son una novedad
en SQL Server 2005. Estas copias de seguridad estn diseadas para
ofrecer una mayor flexibilidad al realizar copias de seguridad de bases de
datos que incluyen algunos grupos de archivos de slo lectura con el modelo
de recuperacin simple. Sin embargo, pueden usarse con todos los modelos
de recuperacin.
Pgina 206 de 630

SQL Server 2005 admite los siguientes tipos de copias de seguridad de


archivos.
Tipo de copia
de seguridad
Copia
de
seguridad
parcial
Copia
seguridad
diferencial
parcial

de

Descripcin
Copia de seguridad de todos los datos del grupo de archivos principal,
todos los grupos de archivos de lectura y escritura, y los archivos o grupos
de archivos de slo lectura opcionalmente especificados. Una copia de
seguridad parcial de una base de datos de slo lectura contiene
nicamente el grupo de archivos principal.
Copia de seguridad que slo incluye las extensiones de datos modificadas
desde la copia de seguridad parcial ms reciente del mismo conjunto de
grupos de archivo.

Copias de seguridad de archivos


Es posible realizar una copia de seguridad y restaurar individualmente los
archivos de una base de datos. El uso de las copias de seguridad de archivos
puede aumentar la velocidad de recuperacin ya que se pueden restaurar
slo los archivos daados sin tener que restaurar el resto de la base de
datos. Por ejemplo, si una base de datos est compuesta por varios archivos
ubicados en diferentes discos y se producen errores en uno de ellos, slo
debe restaurar el archivo situado en el disco en que se produjeron los
errores. Sin embargo, la planificacin y restauracin de copias de seguridad
de archivos puede resultar compleja, por lo que slo deben utilizarse cuando
realmente suponen un valor aadido para el plan de restauracin.
SQL Server admite los siguientes tipos de copias de seguridad de archivos.
Tipo de copia
de seguridad
Copia
de
seguridad
completa
de
archivos

Copia
seguridad
diferencial
archivos

de
de

Descripcin
Copia de seguridad completa de todos los datos de uno o varios archivos
o grupos de archivos de la base de datos.
Importante:
En el modelo de recuperacin simple, las copias de seguridad de
archivos estn restringidas bsicamente a los grupos de archivos de
slo lectura. Puede crear una copia de seguridad de archivos de un
grupo de archivos de lectura y escritura pero, antes de que pueda
restaurar dicha copia de seguridad, deber establecer el grupo de
archivos como de slo lectura y realizar una copia de seguridad
diferencial de archivos de slo lectura.
Una copia de seguridad de uno o varios archivos que incluye las
extensiones de datos modificadas desde que se realiz la copia de
seguridad completa ms reciente de cada archivo.
Nota:
En el modelo de recuperacin simple, se supone que desde la
realizacin de la copia de seguridad completa los datos se han
cambiado a slo lectura.

Nota:
Puede realizar copias de seguridad de los catlogos de texto y restaurarlos.

Copias de seguridad del registro de transacciones (slo para el modelo


de recuperacin completa y por medio de registros de
operaciones masivas)
En el modelo de recuperacin completa o el modelo de recuperacin por
medio de registros de operaciones masivas, se necesitan copias de
Pgina 207 de 630

seguridad del registro de transacciones (o copias de seguridad de registros)


peridicas. Cada copia de seguridad de registros incluye la parte del registro
de transacciones que estaba activo al crear la copia de seguridad, adems de
todas las entradas de registro que no se incluyeron en una copia de
seguridad de registros anterior. Una secuencia continua de copias de
seguridad de registros incluye la cadena de registros completa de la base de
datos, que se denomina ininterrumpida. En el modelo de recuperacin
completa y, a veces, en el modelo de recuperacin por medio de registros de
operaciones masivas, una cadena de registros ininterrumpida permite
restaurar la base de datos a cualquier momento dado en el tiempo.
Antes de crear la primera copia de seguridad de registros, debe crear una
copia de seguridad completa, como una copia de seguridad de la base de
datos. En adelante, es necesario realizar una copia de seguridad peridica
del registro de transacciones, no slo para reducir el riesgo de prdida del
trabajo sino para habilitar el truncamiento del registro de transacciones.
Copias de seguridad de slo copia
Normalmente, la realizacin de una copia de seguridad cambia la base de
datos y afecta a la forma de restaurar las copias de seguridad posteriores.
Sin embargo, a veces es til realizar una copia de seguridad con un fin
especfico sin afectar a los procedimientos generales de copia de seguridad y
restauracin de la base de datos. Con este propsito, SQL Server 2005
introduce copias de seguridad de slo copia. Estas copias de seguridad son
independientes de la secuencia peridica de copias de seguridad de SQL
Server

Dispositivos de copia de seguridad


SQL Server realiza las copias de seguridad en dispositivos de copia de
seguridad, como archivos de disco o cintas. Puede agregar nuevas copias de
seguridad a las ya existentes en un dispositivo, o bien sobrescribir las copias
de seguridad existentes.

Programar copias de seguridad


La realizacin de una operacin de copia de seguridad tiene un efecto
mnimo en las transacciones que se estn ejecutando, por lo que se puede
efectuar al mismo tiempo que otras operaciones peridicas. Durante la
operacin de copia de seguridad, SQL Server copia los datos directamente
de los archivos de la base de datos en los dispositivos de copia de seguridad.
Durante la copia de seguridad, no se cambian los datos ni se demoran las
transacciones en curso. Por lo tanto, puede realizar una copia de seguridad
de SQL Server con un efecto mnimo en las cargas de trabajo de produccin.
Las copias de seguridad pueden programarse de modo que se ejecuten
automticamente en intervalos fijos.

Pgina 208 de 630

Restricciones de las operaciones de copia de seguridad en SQL Server


En SQL Server 2005, se puede realizar la copia de seguridad mientras la
base de datos est conectada y en uso. Sin embargo, existen las siguientes
restricciones.
No se pueden realizar copias de seguridad de los datos sin conexin
Cualquier operacin de copia de seguridad en la que se haga referencia de
forma implcita o explcita a datos sin conexin provocar un error. A
continuacin, se exponen algunos ejemplos habituales:
Se solicita una copia de seguridad de base de datos completa, pero un
grupo de archivos de la base de datos est sin conexin. Puesto que
todos los grupos de archivos se incluyen de forma implcita en las
copias de seguridad de base de datos completas, esta operacin
provocar un error. Para realizar una copia de seguridad de esta base
de datos, se puede utilizar una copia de seguridad de archivos y
especificar slo los grupos de archivos que tengan conexin.
Se solicita una copia de seguridad parcial, pero un grupo de archivos de
lectura y escritura est sin conexin. Puesto que todos los grupos de
archivos de lectura y escritura son obligatorios para las copias de
seguridad parciales, esta operacin provocar un error.
Se solicita una copia de seguridad de determinados archivos, pero uno de
ellos est sin conexin. Se produce un error en la operacin. Para
realizar una copia de seguridad de los archivos con conexin, puede
omitir el archivo sin conexin de la lista y repetir la operacin.
Normalmente, la copia de seguridad de registros ser correcta aunque uno o
varios de los archivos de datos no estn disponibles. Sin embargo, si algn
archivo incluye cambios registrados de forma masiva realizados en el modelo
de recuperacin por medio de registros de operaciones masivas, todos los
archivos debern tener conexin para que la copia de seguridad sea correcta.
Restricciones de simultaneidad durante una copia de seguridad
SQL Server utiliza el proceso de copia de seguridad con conexin para
permitir que se realice la copia de seguridad de una base de datos mientras
se est utilizando. Durante la copia de seguridad, se pueden realizar la
mayora de las operaciones (por ejemplo, las instrucciones INSERT, UPDATE
o DELETE estn permitidas durante la operacin de copia de seguridad). Sin
embargo, si intenta iniciar una operacin de copia de seguridad durante la
creacin o eliminacin de un archivo de la base de datos, la operacin de
copia de seguridad esperar hasta que la creacin o eliminacin haya
terminado o hasta que se agote el tiempo de espera de la copia de seguridad.
Las operaciones que no se pueden ejecutar durante la copia de seguridad de
la base de datos o del registro de transacciones son las siguientes:
Operaciones de administracin de archivos, como la instruccin ALTER
DATABASE con la opcin ADD FILE o la opcin REMOVE FILE.
Operaciones de reduccin de la base de datos o de reduccin de un
archivo. Esto incluye las operaciones de reduccin automtica.

Pgina 209 de 630

Si intenta crear o eliminar un archivo de la base de datos durante la


operacin de copia de seguridad, se producir un error en la operacin
de creacin o eliminacin.
Si una operacin de copia de seguridad se superpone a una operacin de
administracin de archivos o de reduccin, surge un conflicto. Con
independencia de la operacin en conflicto que empieza en primer lugar, la
segunda operacin espera a que se agote el tiempo de espera del bloqueo
establecido por la primera operacin. (El tiempo de espera se controla
mediante un valor de tiempo de espera de sesin). Si el bloqueo se libera
durante el tiempo de espera, la segunda operacin contina. Si se agota el
tiempo de espera, la segunda operacin no se realiza correctamente.
Este tema slo es relevante para las bases de datos que utilizan los modos
de recuperacin completa o por medio de registros de operaciones masivas.

Restauracin de una base de datos


La restauracin es el proceso de copiar datos desde una copia de seguridad
y aplicar transacciones registradas a los datos para ponerlos al da hasta el
punto de recuperacin de destino. Una copia de seguridad de datos o
diferencial contiene suficientes registros de transacciones para permitir poner
al da las transacciones activas como parte de la restauracin de cada copia
de seguridad. Cada copia de seguridad contiene suficientes registros para
revertir las transacciones no confirmadas y llevar la base de datos a un
estado coherente con la transaccin y utilizable. El proceso de poner al da
las transacciones no confirmadas, si las hay, y poner la base de datos en
conexin se conoce como recuperacin.
Conjunto de puestas al da
El proceso de aplicar cambios registrados a los datos de una base de datos
para poner los datos al da se conoce como poner al da. El conjunto de todos
los datos restaurados se conoce como el conjunto de puestas al da. Un
conjunto de puestas al da se define con la restauracin de una o ms copias
de seguridad completas, como una copia de seguridad de base de datos o
parcial, o un conjunto de copias de seguridad de archivos. Si una instruccin
RESTORE especifica grupos de archivos, archivos o pginas, slo se
incluyen estos elementos en el conjunto de puestas al da. De lo contrario, se
incluirn en el conjunto de puestas al da todos los archivos de la copia de
seguridad que se est restaurando. Si la copia de seguridad completa
contiene entradas de registro, los datos restaurados se pondrn al da
mediante este registro.
Nota: Si especifica un grupo de archivos durante la restauracin, sta
engloba todo el grupo de archivos tal como existe actualmente. Esto incluye
los archivos agregados al grupo de archivos desde que se realiz la copia de
seguridad.
Para copias de seguridad diferenciales, si se agregaron archivos a la base de
datos desde la base diferencial, la restauracin de una copia de seguridad

Pgina 210 de 630

diferencial podra sobrescribir pginas del conjunto de puestas al da con


datos de la copia de seguridad diferencial.
La restauracin de una copia de seguridad diferencial slo actualiza una
pgina si sta est en el conjunto de puestas al da; la pgina se incluye en la
copia de seguridad y la instruccin RESTORE muestra la pgina o su archivo
o no muestra ningn archivo ni pgina.
Con los modelos de recuperacin completa y de recuperacin por medio de
registros de operaciones masivas, se debe realizar una copia de seguridad
independiente del registro. Despus de restaurar copias de seguridad de
datos y (opcionalmente) diferenciales, en general debera restaurar las copias
de seguridad de registros subsiguientes para llevar la base de datos al punto
de error. Restaurar una copia de seguridad de registros pone al da todas las
pginas del conjunto de puestas al da..
Secuencias de restauracin
Cada escenario de restauracin se implementa mediante uno o varios pasos
de restauracin (operaciones), lo que se denomina secuencia de
restauracin. Cada operacin corresponde a una instruccin RESTORE de
Transact-SQL independiente. Una secuencia de restauracin mueve los
datos afectados a travs de una o varias fases de la restauracin.
Fases de la restauracin
Una restauracin es un proceso de varias fases. Las fases posibles de una
restauracin incluyen las fases de copia de datos, rehacer (puesta al da) y
deshacer (revertir):
La fase de copia de datos implica copiar todos los datos, el registro y las
pginas de ndice desde el medio de copia de seguridad de una base de
datos a los archivos de la base de datos.
La fase de rehacer aplica las transacciones registradas a los datos copiados
desde la copia de seguridad para poner al da esos datos hasta el punto de
recuperacin. Normalmente, en este punto una base de datos tiene
transacciones no confirmadas y se encuentra en un estado inutilizable. En
ese caso, se requiere una fase de deshacer como parte de la recuperacin
de la base de datos.
La fase de deshacer, que es la primera parte de la recuperacin, revierte
cualquier transaccin no confirmada y hace que la base de datos est
disponible para los usuarios. Despus de la fase de reversin, no se pueden
restaurar las copias de seguridad subsiguientes.
El resto de esta seccin examina estas fases con ms detalle.
Fase de copia de datos
La primera fase de todo proceso de restauracin es la fase de copia de datos.
La fase de copia de datos inicializa el contenido de la base de datos, los
archivos o las pginas que se restauran. Esta fase se realiza mediante las
operaciones de restaurar la base de datos, restaurar archivos y restaurar
pginas utilizando copias de seguridad completas o diferenciales.
La fase de copia de datos implica copiar datos de una o ms copias de
seguridad completas y, de forma opcional, copias de seguridad diferenciales
y, a continuacin, restablecer el contenido de la base de datos, los archivos o
Pgina 211 de 630

las pginas afectados en el momento en que fueron capturados por esas


copias de seguridad.
El archivo o la pgina ms antiguo del conjunto de puestas al da determina
el punto de inicio de la siguiente fase: rehacer (puesta al da).
Fase de rehacer (puesta al da)
Rehacer (o puesta al da) es el proceso de rehacer los cambios registrados
hasta los datos del conjunto de puestas al da para avanzar los datos en el
tiempo Para llevar a cabo la puesta al da, SQL Server Database Engine
(Motor de base de datos de SQL Server) procesa las copias de seguridad de
registros conforme se restauran, empezando por el registro contenido en las
copias de seguridad completas.
La restauracin evita las puestas al da innecesarias. Generalmente, si los
datos eran de slo lectura cuando se realiz la copia de seguridad y han
permanecido como de slo lectura, la puesta al da es innecesaria y se omite.
Punto de recuperacin
El objetivo de la puesta al da es devolver los datos a su estado original en el
punto de recuperacin. El punto de recuperacin es el punto hasta el que el
usuario especifica que debe recuperarse el conjunto de datos. Con el modelo
de recuperacin completa, puede especificar el punto de recuperacin como
un momento determinado, una transaccin marcada o un nmero de
secuencia de registro. Con el modelo de recuperacin por medio de registros
de operaciones masivas, slo puede realizar la restauracin a un momento
dado si no se ha realizado ninguna operacin masiva desde la copia de
seguridad de registros anterior.
Coherencia de rehacer (puesta al da)
En la fase de rehacer, los datos siempre se ponen al da hasta un punto que
es coherente para rehacer con el estado de la base de datos en el punto de
recuperacin. Todos los datos se han puesto al da hasta un punto en el que
se puede realizar la operacin de deshacer.
El archivo principal define el estado de la base de datos, como se indica a
continuacin:
Si el archivo principal se est restaurando, el punto de recuperacin
determina el estado de toda la base de datos. Por ejemplo, si una base de
datos se est recuperando a un momento dato justo antes de que la tabla se
quitara accidentalmente, toda la base de datos debe restaurarse al mismo
momento dado.
Si el archivo principal no se est restaurando, el estado de la base de datos
es conocido y los datos restaurados se ponen al da hasta un punto de
recuperacin transaccionalmente coherente con la base de datos. SQL
Server lo exige.
Sin embargo, la base de datos puede contener cambios realizados por
transacciones que no estn confirmadas en el punto de recuperacin. Para la
restauracin con conexin, los datos se recuperan a un momento dado
coherente con el estado actual de la parte conectada de la base de datos.
Una copia de seguridad diferencial avanza hasta el punto en que se realiz la
copia de seguridad diferencial. Las pginas del conjunto de puestas al da se
sobrescriben con pginas ms recientes de la copia de seguridad diferencial.
Pgina 212 de 630

Fase de deshacer (revertir) y recuperacin


Despus de que la fase de rehacer haya puesto al da todas las
transacciones del registro, una base de datos suele contener los cambios
realizados por las transacciones no confirmadas en el punto de recuperacin.
Esto convierte los datos puestos al da en transaccionalmente incoherentes.
El proceso de recuperacin abre el registro de transacciones para identificar
las transacciones no confirmadas. Las transacciones no confirmadas se
deshacen mediante la reversin, a menos que mantengan bloqueos que
eviten que otras transacciones vean datos transaccionalmente incoherentes.
Este paso se denomina fase de deshacer (o revertir). Si los datos ya son
transaccionalmente coherentes al inicio del proceso de recuperacin, la fase
de deshacer se omitir. Despus de que la base de datos sea
transaccionalmente coherente, la recuperacin conecta la base de datos.
Nota: En trminos generales, la recuperacin es el conjunto de operaciones
que hace que una base de datos sea coherente al inicio de esa base de
datos. Si la base de datos se apagaba peridicamente, la recuperacin omite
las fases de rehacer y deshacer. Esto se conoce como recuperacin de
reinicio.
Despus de que se hayan restaurado una o ms copias de seguridad, la
recuperacin suele incluir tanto la fase de rehacer y como la de deshacer.
Cada copia de seguridad completa y diferencial contiene suficientes registros
de transacciones para permitir que los datos de esa copia de seguridad se
recuperen a un estado coherente consigo mismo.
Nota: Durante una recuperacin tras bloqueo o una conmutacin por error de
la creacin de reflejo de la base de datos, SQL Server 2005 Enterprise
Edition permite a los usuarios obtener acceso a la base de datos durante la
fase de deshacer. Esto se conoce como recuperacin rpida. La
recuperacin rpida es posible porque las transacciones que no estaban
confirmadas cuando se produjo el error vuelven a adquirir los bloqueos que
mantenan antes del error. Mientras estas transacciones se revierten, sus
bloqueos las protegen de las interferencias de los usuarios.

Relacin de las opciones RECOVERY y NORECOVERY con las fases de


restauracin
Una instruccin RESTORE especfica termina despus de la fase de rehacer
o contina con la fase de deshacer, segn si la instruccin especific WITH
NORECOVERY, de la manera siguiente:
WITH RECOVERY recupera la base de datos e incluye las fases de rehacer y
deshacer; no se pueden restaurar otras copias de seguridad. Es el valor
predeterminado. Si el conjunto de puestas al da no se ha puesto al da lo
suficiente para ser coherente con la base de datos, la fase de deshacer no se
podr producir. Database Engine (Motor de base de datos) emitir un error y
la recuperacin se detendr. Si todo el conjunto de puestas al da es
coherente con la base de datos, se realizar la recuperacin y se podr
conectar la base de datos.
WITH NORECOVERY omite la fase de deshacer para preservar las
transacciones no confirmadas. Al omitir la fase de deshacer, se pueden
Pgina 213 de 630

restaurar otras copias de seguridad para poner al da la base de datos a un


momento posterior. A veces, RESTORE WITH NORECOVERY pone al da los
datos hasta donde son coherentes con la base de datos. En estos casos,
Database Engine (Motor de base de datos) emite un mensaje informativo
indicando que el conjunto de puestas al da se puede recuperar mediante la
opcin RECOVERY.

Rutas de recuperacin
Una ruta de recuperacin es un conjunto nico de transformaciones que han
cambiado la base de datos a lo largo del tiempo, aunque han mantenido su
coherencia.
Restaurar una base de datos cuando SQL Server no est conectado
Es posible restaurar y recuperar una base de datos mediante SQL Writer
mientras SQL Server no est conectado si no hay ningn catlogo de texto.
Si hay un catlogo de texto asociado a una base de datos, primero es
necesario iniciar SQL Server o detener el servicio Motor de texto completo de
Microsoft para SQL Server (MSFTESQL).
Al ejecutarse, SQL Server obliga a cerrar los archivos del catlogo de texto
como preparacin para la operacin de restauracin. Sin embargo, si SQL
Server est sin conexin, es posible que MSFTESQL mantenga abiertos
determinados archivos de texto. As se evita que la aplicacin de restauracin
los sobrescriba. Para obligar a esos archivos de texto a cerrarse, una
aplicacin puede apagar MSFTESQL.
Para evitar tener que hacer esto, realice alguna de las siguientes acciones:
Inicie SQL Server.
Detenga MSFTESQL.
Para restaurar una copia de seguridad completa de la base de datos
1. Despus de conectarse a la instancia adecuada de SQL Server
Database Engine (Motor de base de datos de SQL Server) de
Microsoft, en el Explorador de objetos, haga clic en el nombre del
servidor para expandir el rbol.
2. Expanda Bases de datos. En funcin de la base de datos, seleccione
una base de datos de usuario o expanda Bases de datos del sistema
y, a continuacin, seleccione una base de datos del sistema.
3. Haga clic con el botn secundario en la base de datos, seleccione
Tareas y, a continuacin, haga clic en Restaurar.
4. Haga clic en Base de datos, con lo que se abrir el cuadro de dilogo
Restaurar base de datos.

Pgina 214 de 630

5. En la pgina General, el nombre de la base de datos en restauracin


aparecer en el cuadro de lista A una base de datos. Para crear una
nueva base de datos, escriba su nombre en el cuadro de lista.
6. En el cuadro de texto A un momento dado, puede conservar el valor
predeterminado (Lo ms reciente posible) o seleccionar una fecha y
hora determinados haciendo clic en el botn Examinar, que abrir el
cuadro de dilogo Restauracin a un momento dado..
7. Para especificar el origen y la ubicacin de los conjuntos de copias de
seguridad que se deben restaurar, haga clic en una de las opciones
siguientes:
a. Desde base de datos Escriba un nombre de base de datos en
el cuadro de lista.
b. Desde dispositivos Haga clic en el botn Examinar, que abrir
el cuadro de dilogo Especificar copia de seguridad. En el
cuadro de lista Medio para copia de seguridad, seleccione
uno de los tipos de dispositivo. Para seleccionar uno o varios
dispositivos del cuadro de lista Ubicacin de la copia de
seguridad, haga clic en Agregar.
c. Tras agregar los dispositivos que desee al cuadro de lista
Ubicacin de la copia de seguridad, haga clic en Aceptar
para volver a la pgina General.
8. En la cuadrcula Seleccionar los conjuntos de copia de seguridad
que se van a restaurar, seleccione las copias de seguridad que
desea restaurar. En esta cuadrcula se muestran las copias de
seguridad disponibles en la ubicacin especificada. De forma
predeterminada, se sugiere un plan de recuperacin. Para anular el
plan de recuperacin sugerido, puede cambiar las selecciones de la
cuadrcula. Al anular la seleccin de una copia de seguridad, se
anular automticamente la seleccin de cualquier copia de seguridad
que dependa de la primera.
9. Para obtener informacin acerca de las columnas de la cuadrcula
Seleccionar los conjuntos de copia de seguridad que se van a
restaurar, vea Restaurar la base de datos (pgina General).
10. Para ver o seleccionar las opciones avanzadas, haga clic en
Opciones en el panel Seleccionar una pgina.
11. En el panel Opciones de restauracin, puede elegir cualquiera de las
siguientes opciones, si son convenientes a su situacin:
a. Sobrescribir la base de datos existente
b. Conservar la configuracin de rplica
c. Preguntar antes de restaurar cada copia de seguridad
Pgina 215 de 630

d. Restringir el acceso a la base de datos restaurada


12. Para obtener ms informacin acerca de estas opciones, vea
Restaurar base de datos (pgina Opciones).
13. Si lo desea, puede restaurar la base de datos a una nueva ubicacin si
especifica un nuevo destino de restauracin para cada archivo de la
cuadrcula Restaurar los archivos de base de datos como. Para
obtener ms informacin acerca de esta cuadrcula, vea Restaurar
base de datos (pgina Opciones).
14. El panel Estado de recuperacin determina el estado de la base de
datos despus de la operacin de restauracin. El comportamiento
predeterminado es:
a. Dejar la base de datos lista para su uso revirtiendo las
transacciones no confirmadas. No pueden restaurarse
registros de transacciones adicionales. (RESTORE WITH
RECOVERY) Nota: Seleccione esta opcin nicamente si va a
restaurar ahora todas las copias de seguridad necesarias
15. De lo contrario, puede seleccionar una de las siguientes opciones:
a. Dejar la base de datos no operativa y no revertir
transacciones no confirmadas. Pueden restaurarse
registros de transacciones adicionales. (RESTORE WITH
NORECOVERY)
b. Dejar la base de datos en modo de slo lectura. Deshacer
las transacciones sin confirmar, pero guardar las acciones
de deshacer en un archivo en espera para que los efectos
de recuperacin puedan revertirse. (RESTORE WITH
STANDBY)

Pgina 216 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 1
Introduccin al T-SQL

2007

Pgina 217 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 218 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 219 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 220 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 221 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 222 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 223 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 224 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 225 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 226 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 227 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 228 de 630

Unidad 5: Introduccin al T-SQL


Objetivos
Dar una visin acerca de los conceptos bsicos del T-SQL .
Los temas que se abordarn sern los siguientes:
a. Lenguaje de definicin de Datos
b. Manipulacin de Datos
c. Consultas Avanzadas
d. Funciones Predefinidas

Pgina 229 de 630

Lenguaje de Definicin de Datos


Es el Lenguaje que normalmente forma parte de un sistema de
administracin de bases de datos y que se utiliza para definir todos los
atributos y propiedades de una base de datos, especialmente el diseo de las
filas, las definiciones de columna, las columnas clave (y, a veces, la
metodologa de asignacin de claves), la ubicacin de los archivos y la
estrategia de almacenamiento.
Algunas de las instrucciones bsicas del Transact-SQL se describen a
continuacin:
CREATE DATABASE (Transact-SQL)
Crea una nueva base de datos y los archivos que se utilizan para almacenar
la base de datos, crea una instantnea (vista esttica de solo lectura) de base
de datos o adjunta una base de datos a partir de los archivos separados de
una base de datos creada anteriormente.
Nota:
Cada vez que se crea, modifica o quita una base de datos de usuario, se
debe hacer una copia de seguridad de la base de datos master.
La instruccin CREATE DATABASE debe ejecutarse en modo de
confirmacin automtica (el modo predeterminado de administracin de
transacciones) y no se permite crear una base de datos en una transaccin
explcita o implcita.
Se puede utilizar una instruccin CREATE DATABASE para crear una base
de datos y los archivos donde se almacena. SQL Server implementa la
instruccin CREATE DATABASE de la siguiente manera:
1. SQL Server 2005 Database Engine (Motor de base de datos de SQL
Server 2005) utiliza una copia de la base de datos model para
inicializar la base de datos y sus metadatos.
2. Se asigna un GUID de Service Broker a la base de datos.
3. A continuacin, el Database Engine (Motor de base de datos) rellena el
resto de la base de datos con pginas vacas, excepto las pginas que
tengan datos internos que registren cmo se emplea el espacio en la
base de datos. En una instancia de SQL Server se pueden especificar
32.767 bases de datos como mximo.
Cada base de datos tiene un propietario que puede realizar actividades
especiales en ella. El propietario es el usuario que crea la base de datos. El
propietario de la base de datos se puede cambiar mediante
sp_changedbowner (Transact-SQL).

Pgina 230 de 630

Archivos y grupos de archivos de base de datos


Cada base de datos tiene al menos 2 archivos (un archivo principal y un
archivo de registro de transacciones) y un grupo de archivos. El archivo de
datos principal incluye la informacin de inicio de la base de datos y apunta a
los dems archivos de la misma. Los datos y objetos del usuario se pueden
almacenar en este archivo o en archivos de datos secundarios. Cada base de
datos tiene un archivo de datos principal. La extensin recomendada para los
nombres de archivos de datos principales es .mdf. Los archivos del registro
de transacciones contienen la informacin de registro que se utiliza para
recuperar la base de datos. Cada base de datos debe tener al menos un
archivo de registro. La extensin recomendada para los nombres de archivos
de registro es .ldf.
Para cada base de datos pueden especificarse hasta 32.767 archivos y
32.767 grupos de archivos.
Cuando cree una base de datos, defina el mayor tamao posible para los
archivos de datos segn la cantidad de datos mxima prevista para la base
datos.
Se recomienda utilizar una red de rea de almacenamiento (SAN), una red
basada en iSCSI o un disco conectado localmente para almacenar los
archivos de base de datos de SQL Server, porque esta configuracin
optimiza el rendimiento y la confiabilidad de SQL Server. De manera
predeterminada, en SQL Server no se habilita el uso de archivos de base de
datos en red (almacenados en un servidor de red o en un almacenamiento
conectado a una red).
Instantneas de base de datos
La instruccin CREATE DATABASE permite crear una vista esttica de slo
lectura, es decir, una instantnea de base de datos, de una base de datos
existente, la base de datos de origen. Desde el punto de vista transaccional,
una instantnea de base de datos es coherente con la base de datos de
origen tal como se encontraba en el momento de crear la instantnea. Una
base de datos de origen puede tener varias instantneas.
Nota:
Cuando se crea una instantnea de base de datos, la instruccin CREATE
DATABASE no puede hacer referencia a archivos de registro, archivos sin
conexin, archivos de restauracin ni archivos inactivos.
Si se produce un error al crear una instantnea de base de datos, se
sospecha de la instantnea y debe eliminarse. Las instantneas se
conservan hasta que se eliminan mediante DROP DATABASE.

Opciones de base de datos


Cuando se crea una base de datos, se establecen automticamente varias
opciones de base de datos. Estas opciones se pueden modificar mediante la
instruccin ALTER DATABASE.

Pgina 231 de 630

Base de datos model y creacin de nuevas bases de datos


Todos los objetos definidos por el usuario en la base de datos model se
copiarn en todas las bases de datos recin creadas. Puede agregar a la
base de datos model todos los objetos (tablas, vistas, procedimientos
almacenados, tipos de datos, etc.) que desee incluir en todas las bases de
datos creadas recientemente.
Cuando se especifica una instruccin CREATE DATABASE database_name
sin parmetros de tamao adicionales, el archivo de datos principal pasa a
tener el mismo tamao que el archivo principal de la base de datos model.
A menos que se especifique FOR ATTACH, todas las bases de datos nuevas
heredan los valores de las opciones de la base de datos model. Por ejemplo,
la opcin de base de datos auto shrink es true en la base de datos model y
en cualquier base de datos nueva que se cree. Si se cambian las opciones de
la base de datos model, los nuevos valores de estas opciones se utilizarn
en las nuevas bases de datos que se creen. Las operaciones de modificacin
de la base de datos model no afectan a las bases de datos existentes. Si se
especifica FOR ATTACH en la instruccin CREATE DATABASE, la nueva
base de datos hereda los valores de las opciones de la base de datos original
(model).

Ver la informacin de la base de datos


Se pueden utilizar vistas de catlogo, funciones del sistema y procedimientos
almacenados del sistema para devolver informacin sobre bases de datos,
archivos y grupos de archivos.
Permisos
Requiere el permiso CREATE DATABASE, CREATE ANY DATABASE o
ALTER ANY DATABASE.
Para mantener el control de la utilizacin del disco en una instancia de SQL
Server, el permiso para crear bases de datos suele limitarse a un nmero
reducido de cuentas de inicio de sesin.
Permisos en archivos de datos y de registro:
En SQL Server 2005, algunos permisos se establecen en los archivos de
datos y de registro de cada base de datos. Siempre que se realizan las
operaciones siguientes en una base de datos, se establecen estos permisos:
Creada

Modificada para agregar un nuevo archivo

Adjuntada

Copia de seguridad

Separada
Restaurada
Los permisos evitan que los archivos se modifiquen por accidente si residen
en un directorio sin restriccin de permisos
Nota:
Microsoft SQL Server 2005 Express Edition no establece permisos en
archivos de datos y de registro.

Pgina 232 de 630

Ejemplos
A. Crear una base de datos sin especificar archivos
En este ejemplo se crea la base de datos mytest, y los archivos principal y de
registro de transacciones correspondientes. Debido a que la instruccin no
tiene elementos <filespec>, el archivo principal de la base de datos tiene el
tamao del archivo principal de la base de datos model. El registro de
transacciones se establece en el mayor de estos valores: 512 KB o el 25%
del tamao del archivo de datos principal. Como no se ha especificado
MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible
en el disco.
USE master; GO IF DB_ID (N'mytest') IS NOT NULL DROP DATABASE
mytest; GO CREATE DATABASE mytest; GO -- Verify the database files and
sizes SELECT name, size, size*1.0/128 AS [Size in MBs] FROM
sys.master_files WHERE name = N'mytest'; GO

CREATE TABLE (Transact-SQL)


Crea una nueva tabla.
Nota:
SQL Server 2005 puede tener hasta dos mil millones de tablas por cada base
de datos y 1.024 columnas por tabla. El nmero de filas y el tamao total de
la tabla estn limitados solamente por el espacio de almacenamiento
disponible. El nmero mximo de bytes por fila es 8.060. Esta restriccin se
ampla en el caso de las tablas con columnas varchar, nvarchar, varbinary
o sql_variant, las cuales hacen que el ancho total definido para la tabla sea
superior a 8.060 bytes. La longitud de cada una de estas columnas debe
ajustarse al lmite de 8.000 bytes, aunque la combinacin de sus anchos
puede ser superior al lmite de 8.060 bytes en una tabla..
Cada tabla puede contener un mximo de 249 ndices no agrupados y 1
ndice agrupado. stos incluyen los ndices generados para admitir las
restricciones PRIMARY KEY y UNIQUE definidas para la tabla.
Normalmente, el espacio se asigna a las tablas e ndices en incrementos de
una extensin a la vez. Cuando se crea la tabla o ndice, se le asignan
pginas de extensiones mixtas hasta que tiene suficientes pginas para llenar
una extensin uniforme. Una vez que haya suficientes pginas para llenar
una extensin uniforme, se asigna otra extensin cada vez que se llenan las
extensiones asignadas actualmente. Para obtener un informe acerca de la
cantidad de espacio asignado y utilizado por una tabla, ejecute
sp_spaceused.
Database Engine (Motor de base de datos) no impone el orden en que
DEFAULT, IDENTITY, ROWGUIDCOL o las restricciones de columna se
especifican en una definicin de columna.
Al crear una tabla, la opcin QUOTED IDENTIFIER siempre se almacena
como ON en los metadatos de la tabla incluso si la opcin est establecida en
OFF al crear la tabla.

Pgina 233 de 630

Tablas temporales
Se pueden crear tablas temporales locales y globales. Las tablas temporales
locales son visibles slo en la sesin actual y las tablas temporales globales
son visibles para todas las sesiones. No se pueden crear particiones en las
tablas temporales.
Coloque un prefijo de signo de nmero nico (#table_name) en los nombres
de las tablas temporales locales y un prefijo de signo de nmero doble
(##table_name) en los nombres de las tablas temporales globales.
Las instrucciones SQL hacen referencia a la tabla temporal mediante el valor
especificado por table_name en la instruccin CREATE TABLE. Por ejemplo:
Si se ha creado ms de una tabla temporal en un nico procedimiento
almacenado o lote, estas deben tener nombres distintos.
Si se crea una tabla temporal local en un procedimiento almacenado o una
aplicacin que varios usuarios pueden ejecutar al mismo tiempo, Database
Engine (Motor de base de datos) tiene que ser capaz de distinguir las tablas
creadas por los distintos usuarios. Database Engine (Motor de base de datos)
hace esto al anexar internamente un sufijo numrico a cada nombre de tabla
temporal local. El nombre completo de una tabla temporal tal como se
almacena en la tabla sysobjects de tempdb consta del nombre de la tabla
especificado en la instruccin CREATE TABLE y el sufijo numrico generado
por el sistema. Para permitir que se agregue el sufijo, el parmetro
table_name especificado para un nombre temporal local no puede superar los
116 caracteres.
Las tablas temporales se eliminan automticamente cuando estn fuera de
mbito, a menos que ya se hayan quitado explcitamente mediante DROP
TABLE:
Una tabla temporal local creada en un procedimiento almacenado se quita
automticamente cuando se completa el procedimiento almacenado.
Cualquiera de los procedimientos almacenados anidados ejecutados por el
procedimiento almacenado que cre la tabla puede hacer referencia a la
tabla. El proceso que llam al procedimiento almacenado que cre la tabla no
puede hacer referencia a la tabla.
Las dems tablas temporales se quitan automticamente al final de la sesin
actual.
Las tablas temporales globales se quitan automticamente cuando la sesin
que cre la tabla finaliza y las tareas restantes han dejado de hacer
referencia a ellas. La asociacin entre una tarea y una tabla se mantiene slo
durante la vida de una nica instruccin Transact-SQL. Esto significa que la
tabla temporal global se quita al finalizar la ltima instruccin Transact-SQL
que estuviera haciendo referencia activamente a la tabla cuando finaliz la
sesin que la cre.
Una tabla temporal local creada en un procedimiento almacenado o
desencadenador puede tener el mismo nombre que una tabla temporal
creada antes de que se llame al procedimiento almacenado o al
desencadenador. No obstante, si una consulta hace referencia a una tabla
temporal y hay dos tablas temporales con el mismo nombre, no est definido
en cul de las dos tablas debe resolverse la consulta. Los procedimientos
almacenados anidados pueden crear tambin tablas temporales con el
mismo nombre que la tabla temporal creada por el procedimiento
almacenado que la llam. Sin embargo, en el caso de las modificaciones que
Pgina 234 de 630

se van a resolver en la tabla creada en el procedimiento anidado, la tabla


debe tener la misma estructura, con los mismos nombres de columnas, que
la tabla creada en el procedimiento que realiza la llamada. Esto se muestra
en el ejemplo siguiente: Este es el conjunto de resultados.
(1 row(s) affected) Test1Col ----------- 1 (1 row(s) affected) Test2Col ----------- 2
Cuando se crean tablas temporales globales o locales, la sintaxis CREATE
TABLE admite la definicin de restricciones, excepto las restricciones
FOREIGN KEY. Si se especifica una restriccin FOREIGN KEY en una tabla
temporal, la instruccin devuelve un mensaje de advertencia que indica que
la restriccin se ha omitido. La tabla se crea sin las restricciones FOREIGN
KEY.
Con las restricciones FOREIGN KEY no se puede hacer referencia a tablas
temporales.
Se recomienda utilizar variables de tabla en lugar de tablas temporales. Las
tablas temporales son tiles cuando es necesario crear en ellas ndices de
forma explcita o bien cuando los valores de tabla deben ser visibles en varios
procedimientos almacenados o funciones. En general, las variables de tabla
contribuyen a que el procesamiento de las consultas sea ms eficaz.
Tablas con particiones
Antes de crear una tabla con particiones con la instruccin CREATE TABLE
se debe crear una funcin de particin para especificar cmo se van a crear
las particiones en la tabla. La funcin de particin se crea con CREATE
PARTITION FUNCTION (Transact-SQL). A continuacin, debe crear un
esquema de particin para especificar los grupos de archivos que van a
contener las particiones indicadas mediante la funcin de particin. El
esquema de particin se crea con CREATE PARTITION SCHEME (TransactSQL). La colocacin de restricciones PRIMARY KEY o UNIQUE para separar
grupos de archivos no se puede especificar para las tablas con particiones.

Reglas de aceptacin de valores NULL en una definicin de tabla


La capacidad de aceptar valores NULL de una columna determina si esa
columna puede permitir un valor nulo (NULL) para sus datos. NULL no es lo
mismo que cero o en blanco: NULL significa que no se ha especificado
ninguna entrada o que se ha proporcionado un valor NULL explcito, y suele
implicar que se desconoce el valor o que no es aplicable.
Cuando cree o modifique una tabla con las instrucciones CREATE TABLE o
ALTER TABLE, la configuracin de la sesin y de la base de datos influir en
la capacidad de aceptar valores NULL para el tipo de datos utilizado en la
definicin de columna y, posiblemente, la anular. Se recomienda que defina
siempre explcitamente una columna como NULL o NOT NULL en el caso de
columnas no calculadas o, si utiliza un tipo de datos definido por el usuario,
que permita que la columna utilice la aceptacin de valores NULL
predeterminada del tipo de datos.

Pgina 235 de 630

Si la aceptacin de valores NULL de la columna no se especifica


explcitamente, la aceptacin de valores NULL de la columna sigue las reglas
que se muestran en la siguiente tabla.
Tipo de datos de
Columna
Tipo de datos de
alias
Tipo definido por el
usuario CLR
Tipo de datos
suministrado por
el sistema

Regla
Database Engine (Motor de base de datos) utiliza la aceptacin de
valores NULL especificada al crear el tipo de datos. Para determinar la
aceptacin de valores NULL predeterminada del tipo de datos, utilice
sp_help.
La aceptacin de valores NULL se determina de acuerdo con la
definicin de columna.
Si el tipo de datos suministrado por el sistema slo tiene una opcin,
sta tiene prioridad. Los tipos de datos timestamp deben ser NOT
NULL.
Si el nivel de compatibilidad es 65 o inferior, el valor predeterminado de
los tipos de datos bit es NOT NULL si la columna no incluye NULL o
NOT NULL de forma explcita. Para obtener ms informacin, vea el
sp_dbcmptlevel (Transact-SQL).
Si la configuracin de sesin se establece en ON con SET:
Si ANSI_NULL_DFLT_ON = ON, se asigna NULL.
Si ANSI_NULL_DFLT_OFF = ON, se asigna NOT NULL.
Si la base de datos se configura con ALTER DATABASE:
Si ANSI_NULL_DEFAULT_ON = ON, se asigna NULL.
Si ANSI_NULL_DEFAULT_OFF = ON, se asigna NOT NULL.
Para ver la configuracin de la base de datos para
ANSI_NULL_DEFAULT, utilice la vista de catlogo
sys.databases.

Cuando ninguna de las opciones ANSI_NULL_DFLT est establecida para la


sesin y la base de datos tiene los valores predeterminados
(ANSI_NULL_DEFAULT es OFF), se asigna el valor predeterminado NOT
NULL de SQL Server.
En el caso de una columna calculada, Database Engine (Motor de base de
datos) determinar automticamente si se aceptan valores NULL. Para
determinar la aceptacin de valores NULL en este tipo de columna, utilice la
funcin COLUMNPROPERTY con la propiedad AllowsNull.
Nota:
El controlador ODBC de SQL Server y el proveedor Microsoft OLE DB para
SQL Server tienen un valor predeterminado de ANSI_NULL_DFLT_ON
establecido en ON. Los usuarios de ODBC y OLE DB pueden configurar esta
opcin en los orgenes de datos ODBC o con los atributos o propiedades de
la conexin establecidos por la aplicacin.
Permisos
Se necesita el permiso CREATE TABLE en la base de datos y el permiso
ALTER en el esquema en que se crea la tabla.
Si las columnas de la instruccin CREATE TABLE se definen como un tipo
definido por el usuario CLR, se necesita la propiedad del tipo o el permiso
REFERENCES.

Pgina 236 de 630

Si las columnas de la instruccin CREATE TABLE tienen una coleccin de


esquemas XML asociada, se necesita la propiedad de la coleccin de
esquemas XML o el permiso REFERENCES.
Ejemplos
A. Utilizar restricciones PRIMARY KEY
En el siguiente ejemplo se muestra la definicin de columna para una
restriccin PRIMARY KEY con un ndice agrupado en la columna
EmployeeID de la tabla Employee (lo que permite al sistema suministrar el
nombre de la restriccin) en la base de datos de ejemplo AdventureWorks.
EmployeeID int PRIMARY KEY CLUSTERED
DROP DATABASE (Transact-SQL)
Elimina una o varias bases de datos o instantneas de la base de datos de
una instancia de SQL Server.
Nota:
Para utilizar DROP DATABASE, el contexto de base de datos de la conexin
no puede ser el mismo que el de la base de datos o instantnea de la base de
datos que se va a quitar.
La instruccin DROP DATABASE debe ejecutarse en modo de confirmacin
automtica y no se permite en una transaccin explcita o implcita. El modo
de confirmacin automtica es el modo de administracin de transacciones
como predeterminado.

Quitar una base de datos


Las bases de datos del sistema no se pueden quitar.
Al quitar una base de datos, se elimina la base de datos de una instancia de
SQL Server, as como los archivos de disco fsico que utiliza. Si la base de
datos o alguno de sus archivos estn sin conexin cuando se elimina, no se
eliminan los archivos de disco. Estos archivos se pueden eliminar
manualmente mediante el Explorador de Windows.
No se puede quitar una base de datos que se est utilizando en ese
momento, es decir, que un usuario ha abierto para lectura o escritura. Para
quitar usuarios de la base de datos, utilice ALTER DATABASE para
establecer la base de datos en SINGLE_USER.
Deben quitarse las instantneas de una base de datos para poder quitar esa
base de datos.
Si la base de datos participa en el trasvase de registros, quite el trasvase de
registros antes de quitar la base de datos. Una base de datos se puede quitar
sea cual sea su estado (sin conexin, slo lectura, sospechosa, etc.). Para
ver el estado actual de una base de datos, utilice la vista de catlogo
sys.databases. Una base de datos que se ha quitado slo puede volver a
crearse si se restaura una copia de seguridad. No es posible realizar copias
Pgina 237 de 630

de seguridad de instantneas de la base de datos, por lo que stas no se


pueden restaurar.
Cuando se quita una base de datos, debe realizarse una copia de seguridad
de la base de datos master.
Quitar una instantnea de la base de datos
Cuando se quita una instantnea de la base de datos, se elimina la
instantnea de la base de datos de una instancia de SQL Server, as como
los archivos fsicos dispersos del sistema de archivos NTFS que utiliza.
Quitar una base de datos utilizada en la rplica
Para quitar una base de datos publicada para la rplica transaccional, o
suscrita o publicada para la rplica de mezcla, primero es necesario quitar la
rplica de la base de datos. La rplica de mezcla, como la rplica
transaccional, normalmente se inicia con una instantnea de los objetos y
datos de una base de datos de publicaciones. Los cambios de datos y las
modificaciones de esquema posteriores que se lleven a cabo en el publicador
y en los suscriptores se controlan mediante triggers. El suscriptor se
sincroniza con el publicador cuando estn conectados a la red e intercambian
todas las filas que han cambiado entre el publicador y el suscriptor desde la
ltima vez que se produjo la sincronizacin. La rplica de mezcla se suele
utilizar en entornos de servidor a cliente
Si se daa una base de datos o no se puede quitar la rplica primero, o
ambas cosas, la mayora de las veces todava se puede quitar la base de
datos utilizando ALTER DATABASE para definirla como sin conexin y,
despus, quitarla.
Permisos
Para ejecutar DROP DATABASE, el usuario debe tener, como mnimo, el
permiso CONTROL en la base de datos.
Ejemplos
A. Quitar una sola base de datos
En el ejemplo siguiente se quita la base de datos Sales.
DROP DATABASE Sales;
B. Quitar varias bases de datos
En el ejemplo siguiente se quita cada una de las bases de datos
enumeradas.
DROP DATABASE Sales, NewSales;
C. Quitar una instantnea de la base de datos
En el ejemplo siguiente se quita una instantnea de la base de datos,
denominada sales_snapshot0600, sin que la base de datos de origen se vea
afectada.
DROP DATABASE sales_snapshot0600;
Pgina 238 de 630

DROP TABLE (Transact-SQL)


Quita una o varias definiciones de tabla y todos los datos, ndices,
desencadenadores, restricciones y especificaciones de permisos de esas
tablas. Las vistas o procedimientos almacenados que hagan referencia a la
tabla quitada se deben quitar explcitamente con DROP VIEW o DROP
PROCEDURE.
Nota:
No se puede utilizar DROP TABLE para quitar una tabla a la que haga
referencia una restriccin FOREIGN KEY. Primero se debe quitar la
restriccin FOREIGN KEY o la tabla de referencia. Si la tabla de referencia y
la tabla que tiene la clave principal se van a quitar en la misma instruccin
DROP TABLE, la tabla de referencia debe aparecer primero.
Se pueden quitar varias tablas de cualquier base de datos. Si la tabla que se
va a quitar hace referencia a la clave principal de otra tabla que tambin se va
a quitar, la tabla de referencia con la clave externa debe aparecer antes que
la tabla que tiene la clave principal a la que se hace referencia.
Cuando se quita la tabla, las reglas o valores predeterminados de la tabla
pierden sus enlaces y se quitan automticamente las restricciones o triggers
asociados con la tabla. Si se vuelve a crear una tabla, se debe volver a
enlazar las reglas y valores predeterminados apropiados, volver a crear los
desencadenadores y agregar todas las restricciones necesarias.
Si elimina todas las filas de una tabla con DELETE tablename o utiliza la
instruccin TRUNCATE TABLE, la tabla existe hasta que se quita.
Los ndices y las tablas grandes que utilizan ms de 128 extensiones se
quitan en dos fases independientes: lgica y fsica. En la fase lgica, las
unidades de asignacin existentes que utiliza la tabla se marcan para la
cancelacin de asignacin y se bloquean hasta que se confirme la
transaccin. En la fase fsica, las pginas IAM marcadas para cancelacin de
asignacin se quitan fsicamente por lotes.
Permisos
Requiere el permiso CONTROL en la tabla o pertenecer a la funcin fija de
base de datos db_ddladmin.
Ejemplos
A. Quitar una tabla de la base de datos actual
En el siguiente ejemplo se quita la tabla ProductVendor1, y sus datos e
ndices de la base de datos actual.
DROP TABLE ProductVendor1 ;

Pgina 239 de 630

ALTER DATABASE (Transact-SQL)


Modifica una base de datos o los archivos y grupos de archivos asociados a
la misma. Agrega o quita archivos y grupos de archivos en una base de
datos, cambia los atributos de una base de datos o de sus archivos y grupos
de archivos, cambia la intercalacin de base de datos y establece las
opciones de base de datos. Las instantneas de bases de datos no se
pueden modificar. Para modificar las opciones de base de datos asociadas a
la rplica, utilice sp_replicationdboption.
Nota:
Para quitar una base de datos, utilice DROP DATABASE.
Para cambiar el nombre de una base de datos, utilice la opcin MODIFY
NAME = new_database_name con ALTER DATABASE.
Para reducir el tamao de una base de datos, utilice DBCC
SHRINKDATABASE.
No se puede agregar o quitar un archivo mientras se est ejecutando una
instruccin BACKUP.
Para cada base de datos se puede especificar un mximo de 32.767 archivos
y 32.767 grupos de archivos.
La instruccin ALTER DATABASE se debe ejecutar en el modo de
confirmacin automtica (modo de administracin de transacciones
predeterminado) y no se permite en una transaccin explcita o implcita.
En SQL Server 2005, el estado de un archivo de base de datos (por ejemplo,
con conexin o sin conexin) se mantiene con independencia del estado de la
base de datos.
El estado de los archivos de un grupo de archivos determina la disponibilidad
de todo el grupo de archivos. Para que un grupo de archivos est disponible,
todos los archivos del grupo deben tener conexin. Si un grupo de archivos
no tiene conexin, todos los intentos de acceso al grupo de archivos por parte
de una instruccin SQL generan un error. Al generar un plan de consultas
para las instrucciones SELECT, el optimizador de consultas evita los ndices
no agrupados y las vistas indizadas que residen en los grupos de archivos sin
conexin. Esto permite que las instrucciones se ejecuten correctamente. No
obstante, si el grupo de archivos sin conexin contiene el montn o el ndice
agrupado de la tabla de destino, las instrucciones SELECT generan un error.
Adems, todas las instrucciones INSERT, UPDATE o DELETE que modifican
una tabla con un ndice en un grupo de archivos sin conexin generan un
error.
Si una base de datos se encuentra en estado RESTORING, se producirn
errores en la mayora de las instrucciones ALTER DATABASE. La excepcin
es el establecimiento de opciones de creacin de reflejo de base de datos.
Una base de datos puede encontrarse en estado RESTORING durante una
operacin de restauracin activa o cuando se produce un error en una
operacin de restauracin de una base de datos o de un archivo de registro
debido a un archivo de copia de seguridad daado.

Pgina 240 de 630

Configurar opciones
Para recuperar la configuracin actual de las opciones de base de datos,
utilice la vista de catlogo sys.databases o DATABASEPROPERTYEX. Para
obtener una lista de los valores predeterminados asignados a la base de
datos durante su creacin, vea Configurar las opciones de la base de datos.
Una vez configurada una opcin de la base de datos, la modificacin surte
efecto de inmediato.
Para cambiar los valores predeterminados de cualquiera de las opciones de
las bases de datos que se acaban de crear, cambie la opcin adecuada en la
base de datos model.
No todas las opciones de base de datos utilizan la clusula WITH
<termination> o se pueden especificar en combinacin con otras opciones.
En la siguiente tabla se incluyen estas opciones, su estado y el estado de
terminacin.
Categora de opciones
<db_state_option>
<db_user_access_option>
db_update_option>
<external_access_option>
<cursor_option>
<auto_option>
<sql_option>
<recovery_option>
<database_mirroring_option>
ALLOW_SNAPSHOT_ISOLATION
READ_COMMITED_SNAPSHOT
<service_broker_option>
DATE_CORRELATION_OPTIMIZATION
UNIVERSAL_PARAMETERIZATION

Se puede
especificar con
otras opciones
S
S
S
S
S
S
S
S
No
No
No
S
S
S

Puede utilizar la
clusula WITH
<termination>
S
S
S
No
No
No
No
No
No
No
S
No
S
S

Mover archivos
En SQL Server 2005, puede mover los archivos de sistema, de datos
definidos por el usuario o de registro si especifica la ubicacin nueva en
FILENAME. Esto puede resultar til en los siguientes escenarios:
Recuperacin de errores. Por ejemplo, la base de datos est en modo de
sospecha o cerrada debido a un error del hardware.
Reubicacin planeada.
Reubicacin para mantenimiento de disco programado.
Inicializar archivos
De forma predeterminada, los archivos de datos y registro se inicializan
mediante el relleno de los archivos con ceros al realizar una de las siguientes
operaciones:
Crear una base de datos
Pgina 241 de 630

Agregar archivos a una base de datos existente


Aumentar el tamao de un archivo existente
Restaurar una base de datos o un grupo de archivos
En SQL Server 2005, los archivos de datos se pueden inicializar de forma
instantnea. Esto permite la ejecucin rpida de estas operaciones con los
archivos.
Cambiar la intercalacin de la base de datos
Antes de aplicar otra intercalacin a una base de datos, asegrese de que se
cumplen las siguientes condiciones:
1. Es el nico usuario que utiliza actualmente la base de datos.
2. Ningn objeto enlazado a un esquema depende de la intercalacin de
la base de datos.
Si los siguientes objetos, los cuales dependen de la intercalacin de la
base de datos, existen en la base de datos, la instruccin ALTER
DATABASE database_name COLLATE genera un error. SQL Server
devuelve un mensaje de error para cada objeto que bloquee la accin
ALTER:
Vistas y funciones definidas por el usuario creadas con SCHEMABINDING
Columnas calculadas
Restricciones CHECK
Funciones de valores de tabla que devuelven tablas con columnas de
caracteres con intercalaciones heredadas de la intercalacin predeterminada
de la base de datos
3. Cambiar la intercalacin de la base de datos no crea duplicados entre
los nombres del sistema para los objetos de base de datos.
Los siguientes espacios de nombres pueden provocar errores en el
cambio de la intercalacin de la base de datos si se producen nombres
duplicados en la intercalacin cambiada:
Nombres de objetos, como un procedimiento, tabla, desencadenador o vista
Nombres de esquemas
Entidades de seguridad, como un grupo, funcin o usuario
Nombres de tipo escalar, como los tipos definidos por el usuario y por el
sistema
Nombres de catlogos de texto
Nombres de columnas o parmetros en un objeto
Nombres de ndices en una tabla
Los nombres duplicados resultantes de la nueva intercalacin provocarn que
la accin de cambio no se ejecute correctamente y SQL Server devolver un
mensaje de error que especifica el espacio de nombres donde se ha
encontrado el duplicado.
Ver informacin de base de datos
Puede utilizar vistas de catlogo, funciones del sistema y procedimientos
almacenados del sistema para devolver informacin sobre las bases de
datos, los archivos y los grupos de archivos.
Permisos
Pgina 242 de 630

Requiere el permiso ALTER en la base de datos.


Ejemplos
A. Agregar un archivo a una base de datos
En el siguiente ejemplo se agrega un archivo de datos de 5 MB a la base de
datos AdventureWorks.
USE master;
GO -- Get the SQL Server data path DECLARE @data_path nvarchar(256);
SET
@data_path
=
(SELECT
SUBSTRING(physical_name,
1,
CHARINDEX(N'master.mdf',
LOWER(physical_name))
1)
FROM
master.sys.master_files WHERE database_id = 1 AND file_id = 1);
EXECUTE ( 'ALTER DATABASE AdventureWorks ADD FILE ( NAME =
Test1dat2, FILENAME = '''+ @data_path + 't1dat2.ndf'', SIZE = 5MB,
MAXSIZE = 100MB, FILEGROWTH = 5MB )' );
GO
B. Agregar a una base de datos un grupo de archivos con dos archivos
En el siguiente ejemplo se crea el grupo de archivos Test1FG1 en la base de
datos AdventureWorks y se agregan dos archivos de 5 MB al grupo de
archivos.
USE master
GO
ALTER DATABASE AdventureWorks ADD FILEGROUP Test1FG1;
GO -- Get the SQL Server data path DECLARE @data_path nvarchar(256);
SET
@data_path
=
(SELECT
SUBSTRING(physical_name,
1,
CHARINDEX(N'master.mdf',
LOWER(physical_name))
1)
FROM
master.sys.master_files WHERE database_id = 1 AND file_id = 1);
EXECUTE ( 'ALTER DATABASE AdventureWorks ADD FILE ( NAME =
test1dat3, FILENAME = '''+ @data_path + 't1dat3.ndf'', SIZE = 5MB,
MAXSIZE = 100MB, FILEGROWTH = 5MB ), ( NAME = test1dat4, FILENAME
= '''+ @data_path + 't1dat4.ndf'', SIZE = 5MB, MAXSIZE = 100MB,
FILEGROWTH = 5MB ) TO FILEGROUP Test1FG1' );
GO
C. Agregar dos archivos de registro a una base de datos
En el siguiente ejemplo se agregan dos archivos de registro de 5 MB a la
base de datos AdventureWorks.
USE master;
GO -- Get the SQL Server data path DECLARE @data_path nvarchar(256);
SET
@data_path
=
(SELECT
SUBSTRING(physical_name,
1,
CHARINDEX(N'master.mdf',
LOWER(physical_name))
1)
FROM
master.sys.master_files WHERE database_id = 1 AND file_id = 1);
EXECUTE ( 'ALTER DATABASE AdventureWorks ADD LOG FILE ( NAME =
test1log2, FILENAME = '''+ @data_path + 'test2log.ldf'', SIZE = 5MB,
MAXSIZE = 100MB, FILEGROWTH = 5MB ), ( NAME = test1log3, FILENAME
= '''+ @data_path + 'test3log.ldf'', SIZE = 5MB, MAXSIZE = 100MB,
FILEGROWTH = 5MB )' );
GO
Pgina 243 de 630

D. Quitar un archivo de una base de datos


En el siguiente ejemplo se quita uno de los archivos agregados en el ejemplo
B.
USE master;
GO
ALTER DATABASE AdventureWorks REMOVE FILE test1dat4;
GO
E. Modificar un archivo
En el siguiente ejemplo aumenta el tamao de uno de los archivos agregados
en el ejemplo B.
USE master;
GO ALTER DATABASE AdventureWorks MODIFY FILE (NAME = test1dat3,
SIZE = 20MB);
GO
F. Mover un archivo a otra ubicacin
En el siguiente ejemplo se mueve el archivo Test1dat2, creado en el ejemplo
A, a otro directorio.
Nota:
Debe mover fsicamente el archivo al directorio nuevo antes de ejecutar este
ejemplo. A continuacin, detenga e inicie la instancia de SQL Server o
establezca la base de datos AdventureWorks en OFFLINE y despus en
ONLINE para implementar el cambio.
USE master;
GO
ALTER DATABASE AdventureWorks MODIFY FILE ( NAME = Test1dat2,
FILENAME = N'c:\t1dat2.ndf' );
GO
G. Mover tempdb a otra ubicacin
En el siguiente ejemplo se mueve tempdb de su ubicacin actual en el disco
a otra ubicacin del disco. Puesto que tempdb se vuelve a crear cada vez
que se inicia el servicio MSSQLSERVER, no es necesario mover fsicamente
los archivos de datos y de registro. Los archivos se crean cuando se reinicia
el servicio en el paso 3. Hasta que se reinicia, tempdb seguir funcionando
en su ubicacin existente.
1. Determine los nombres de los archivos lgicos de la base de datos
tempdb y su ubicacin actual en el disco.
SELECT name, physical_name FROM sys.master_files WHERE
database_id = DB_ID('tempdb');
GO
2. Cambie la ubicacin de cada archivo con ALTER DATABASE.
USE master;
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev,
FILENAME = 'E:\SQLData\tempdb.mdf');

Pgina 244 de 630

GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog,


FILENAME = 'E:\SQLData\templog.ldf');
GO
3. Detenga y reinicie la instancia de SQL Server.
4. Compruebe el cambio de los archivos.
SELECT name, physical_name FROM sys.master_files WHERE
database_id = DB_ID('tempdb');
5. Elimine los archivos tempdb.mdf y templog.ldf de su ubicacin original.
H. Establecer un grupo de archivos como predeterminado
En el siguiente ejemplo, el grupo de archivos Test1FG1 creado en el ejemplo
B se establece como predeterminado. A continuacin, el grupo de archivos
predeterminado se restablece al grupo de archivos PRIMARY. Tenga en
cuenta que PRIMARY se debe delimitar con corchetes o comillas.
USE master;
GO
ALTER DATABASE AdventureWorks MODIFY FILEGROUP Test1FG1
DEFAULT;
GO
ALTER DATABASE AdventureWorks MODIFY FILEGROUP [PRIMARY]
DEFAULT;
GO
I. Configurar opciones en una base de datos
En el siguiente ejemplo se establece el modelo de recuperacin y las
opciones de comprobacin de pginas de datos para la base de datos de
ejemplo AdventureWorks .
USE master;
GO
ALTER
DATABASE
AdventureWorks
SET
RECOVERY
FULL,
PAGE_VERIFY CHECKSUM;
GO
J. Establecer la base de datos en READ_ONLY
El cambio de una base de datos o un grupo de archivos a READ_ONLY o
READ_WRITE requiere el acceso exclusivo a la base de datos. En el
siguiente ejemplo la base de datos se establece en el modo SINGLE_USER
para tener acceso exclusivo. A continuacin, el ejemplo establece el estado
de la base de datos AdventureWorks en READ_ONLY y devuelve el acceso a
la base de datos a todos los usuarios.
Nota:
En este ejemplo se utiliza la opcin de terminacin WITH ROLLBACK
IMMEDIATE en la primera instruccin ALTER DATABASE. Todas las
transacciones incompletas se revierten y el resto de las conexiones a la base
de datos de ejemplo AdventureWorks se desconectan de inmediato.
USE master;
GO ALTER DATABASE AdventureWorks SET SINGLE_USER WITH
ROLLBACK IMMEDIATE;

Pgina 245 de 630

GO ALTER DATABASE AdventureWorks SET READ_ONLY; GO ALTER


DATABASE AdventureWorks SET MULTI_USER;
GO
K. Habilitar el aislamiento de instantnea en una base de datos
En el siguiente ejemplo se habilita la opcin del marco de aislamiento de
instantnea para la base de datos AdventureWorks.
USE AdventureWorks;
GO -- Check the state of the snapshot_isolation_framework -- in the
database.
SELECT
name,
snapshot_isolation_state,
snapshot_isolation_state_desc AS description FROM sys.databases WHERE
name = N'AdventureWorks';
GO
USE master;
GO
ALTER
DATABASE
AdventureWorks
SET
ALLOW_SNAPSHOT_ISOLATION ON; GO -- Check again. SELECT name,
snapshot_isolation_state, snapshot_isolation_state_desc AS description
FROM sys.databases WHERE name = N'AdventureWorks';
GO
El conjunto de resultados muestra que el marco de aislamiento de
instantnea est habilitado.
name
snapshot_isolation_state description
--------------- ------------------------ ----------AdventureWorks 1
ON
L. Crear una sesin de creacin de reflejo de la base de datos con un
testigo
La configuracin de la creacin de reflejo de la base de datos con un testigo
requiere configurar la seguridad y preparar la base de datos reflejada adems
de utilizar ALTER DATABASE para configurar los asociados..
M. Conmutacin por error manual en una sesin de creacin de reflejo
de la base de datos
La conmutacin por error manual se puede iniciar desde cualquier asociado
de creacin de reflejo de la base de datos. Antes de llevar a cabo la
conmutacin por error, debe comprobar si el servidor principal actual es
realmente el servidor principal. Por ejemplo, para la base de datos
AdventureWorks, ejecute la siguiente consulta en la instancia del servidor que
crea que es el servidor principal actual:
SELECT name, mirroring_role_desc FROM sys.databases WHERE name =
N'AdventureWorks';
GO
Si la instancia del servidor es la entidad de seguridad, el valor de
mirroring_role_desc es Principal. Si esta instancia del servidor se
corresponde con el servidor reflejado, la instruccin SELECT debe devolver
Mirror.
En el siguiente ejemplo se da por supuesto que el servidor es la entidad de
seguridad actual.

Pgina 246 de 630

1. Realice una conmutacin por error manual al asociado de creacin de


reflejo de la base de datos:
ALTER DATABASE AdventureWorks SET PARTNER FAILOVER; GO
2. Para comprobar los resultados de la conmutacin por error en el reflejo
nuevo, ejecute la siguiente consulta:
SELECT name, mirroring_role_desc FROM sys.databases WHERE
name = N'AdventureWorks'; GO
El valor actual de mirroring_role_desc es ahora Mirror.

Pgina 247 de 630

Manipulacin de Datos
Es el subconjunto de instrucciones SQL, utilizado para recuperar y tratar
datos.
INSERT (Transact-SQL)
Agrega una nueva fila a una tabla o vista.
Sintaxis
[ WITH <common_table_expression> [ ,...n ] ]
INSERT
[ TOP ( expression ) [ PERCENT ] ]
[ INTO]
{ <object> |
rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
} {
[ ( column_list ) ]
[ <OUTPUT Clause> ]
{ VALUES ( { DEFAULT |
NULL | expression } [ ,...n ] )
| derived_table
| execute_statement
}}
| DEFAULT VALUES [; ] <object> ::= { [ server_name . database_name .
schema_name .
| database_name .[ schema_name ] .
| schema_name
. ]
table_or_view_name }
Argumentos
WITH <common_table_expression>
Especifica el conjunto de resultados con un nombre temporal, denominado
tambin expresin de tabla comn, definido en el mbito de la instruccin
INSERT. El conjunto de resultados se deriva de una instruccin SELECT.
Las expresiones de tabla comunes tambin se pueden utilizar con las
instrucciones SELECT, DELETE, UPDATE y CREATE VIEW.
TOP ( expression ) [ PERCENT ]
Especifica el nmero o porcentaje de filas aleatorias que se van a insertar.
expression puede ser un nmero o un porcentaje de filas. Las filas a las que
se hace referencia en la expresin TOP utilizadas con INSERT, UPDATE o
DELETE no presentan ningn orden.
En las instrucciones INSERT, UPDATE y DELETE, se deben utilizar
parntesis para delimitar expression en TOP.
INTO
Es una palabra clave opcional que se puede utilizar entre INSERT y la tabla
de destino.
server_name
Es el nombre del servidor (con la funcin OPENDATASOURCE como nombre
del servidor) en el que se ubica la tabla o la vista. Si se especifica
server_name, database_name y schema_name son obligatorios.
database_name
Es el nombre de la base de datos.
schema_name
Es el nombre del esquema al que pertenece la tabla o la vista.
table_or view_name
Pgina 248 de 630

Es el nombre de la tabla o la vista que va a recibir los datos.


Se puede utilizar una variable table en su mbito como origen de tabla en
una instruccin INSERT.
La vista a la que hace referencia table_or_view_name debe poder
actualizarse y debe hacer referencia exactamente a una tabla base (fisica) en
la clusula FROM de la vista. Por ejemplo, la instruccin INSERT de una vista
de varias tablas debe utilizar una column_list que slo haga referencia a
columnas de una tabla base.
Rowset_function_limited:
Especifica
la
funcin
OPENQUERY
u
OPENROWSET.
WITH ( <table_hint_limited> [... n ] )
Especifica una o ms sugerencias de tabla permitidas para una tabla de
destino. La palabra clave WITH y los parntesis son obligatorios.
No se permiten READPAST, NOLOCK ni READUNCOMMITTED.
Importante:
La posibilidad de especificar las sugerencias HOLDLOCK, SERIALIZABLE,
READCOMMITTED, REPEATABLEREAD o UPDLOCK en tablas que son
destinos de instrucciones INSERT se eliminar en una versin futura de SQL
Server. Estas sugerencias no influyen en el rendimiento de las instrucciones
INSERT. Evite el uso de dichas sugerencias en los nuevos trabajos de
desarrollo y piense en modificar las aplicaciones que las utilizan actualmente.
Especificar la sugerencia TABLOCK en una tabla que es el destino de una
instruccin INSERT tiene el mismo efecto que especificar la sugerencia
TABLOCKX. Se realiza un bloqueo exclusivo en la tabla.
( column_list )
Es una lista de una o ms columnas en las que se insertarn los datos.
column_list se debe incluir entre parntesis y delimitar con comas.
Si la columna no se incluye en column_list, el SQL Server 2005 Database
Engine (Motor de base de datos de SQL Server 2005) debe poder
proporcionar un valor basado en la definicin de la columna; en caso
contrario, no se puede cargar la fila. El Database Engine (Motor de base de
datos) proporciona automticamente un valor para la columna si sta:
Tiene una propiedad IDENTITY. Se usa el valor de identidad incremental
siguiente.
Tiene un valor predeterminado. Se usa el valor predeterminado de la
columna.
Tiene un tipo de datos timestamp. Se utiliza el valor actual de marca de hora.
Acepta valores NULL. Se usa un valor NULL.
Es una columna calculada. Se utiliza el valor calculado.
Se debe utilizar column_list y la lista VALUES al insertar valores explcitos en
una columna de identidad. La opcin SET IDENTITY_INSERT debe ser ON
para la tabla.
OUTPUT
Devuelve las filas insertadas como parte de la operacin de insercin. La
clusula OUTPUT no se admite en las instrucciones DML que hacen
Pgina 249 de 630

referencia a vistas locales con particiones, vistas distribuidas con particiones,


tablas remotas o instrucciones INSERT que contengan execute_statement.

VALUES
Presenta la lista de valores de datos que se van a insertar. Debe haber un
valor de datos por cada columna en column_list, si se especifica, o en la
tabla. La lista de valores debe ir entre parntesis.
Si los valores de la lista VALUES no estn en el mismo orden que las
columnas de la tabla o no contienen un valor para cada columna de la tabla,
se debe usar column_list para especificar de forma explcita la columna que
almacenar cada valor entrante.
DEFAULT
Exige que el Database Engine (Motor de base de datos) cargue el valor
predeterminado definido para una columna. Si no existe ningn valor
predeterminado para la columna y sta admite valores NULL, se inserta
NULL. Para una columna definida con el tipo de datos timestamp, se inserta
el siguiente valor de marca de hora. DEFAULT no es un valor vlido para una
columna de identidad.
expression
Es una constante, variable o expresin. La expresin no puede contener una
instruccin SELECT o EXECUTE.
derived_table
Es cualquier instruccin SELECT vlida que devuelva filas con los datos que
se van a cargar en la tabla. La instruccin SELECT no puede contener una
expresin de tabla comn (CTE).
execute_statement
Es cualquier instruccin EXECUTE vlida que devuelva datos con
instrucciones SELECT o READTEXT. La instruccin SELECT no puede
contener una CTE.
Si se utiliza execute_statement con INSERT, cada conjunto de resultados
debe ser compatible con las columnas de la tabla o de column_list.
execute_statement se puede utilizar para ejecutar procedimientos
almacenados en el mismo servidor o en un servidor remoto. Se ejecuta el
procedimiento en el servidor remoto luego, se devuelven los conjuntos de
resultados al servidor local y se cargan en la tabla del servidor local.
Si execute_statement devuelve datos con la instruccin READTEXT, cada
instruccin READTEXT puede devolver un mximo de 1 MB (1024 KB) de
datos. execute_statement tambin se puede utilizar con procedimientos
extendidos. execute_statement inserta los datos devueltos por el subproceso
principal del procedimiento extendido; no obstante, los resultados de los
subprocesos distintos del subproceso principal no se insertan.
DEFAULT VALUES
Hace que la nueva fila contenga los valores predeterminados definidos para
cada columna.

Pgina 250 de 630

Nota:
INSERT anexa nuevas filas a una tabla. Para reemplazar los datos de una
tabla, se deben utilizar las instrucciones DELETE o TRUNCATE TABLE para
borrar los datos existentes antes de cargar los datos nuevos con INSERT.
Para modificar los valores de una columna en las filas existentes, utilice
UPDATE.
Puede crear una tabla nueva y cargarla con datos en un solo paso con la
opcin INTO de la instruccin SELECT.
En las columnas creadas con el tipo de datos uniqueidentifier se almacenan
valores binarios de 16 bytes con formato especial. A diferencia de las
columnas de identidad, el Database Engine (Motor de base de datos) no
genera automticamente valores de columnas con el tipo de datos
uniqueidentifier. Durante una operacin de insercin, se pueden usar
variables con un tipo de datos uniqueidentifier y constantes de cadena con
el formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los
guiones, donde x es un dgito hexadecimal de los intervalos 0-9 o a-f) para las
columnas uniqueidentifier. Por ejemplo, 6F9619FF-8B86-D011-B42D00C04FC964FF es un valor vlido para una variable o columna
uniqueidentifier. Utilice la funcin NEWID() para obtener un identificador
nico global (GUID).
La configuracin de la opcin SET ROWCOUNT se omite en las instrucciones
INSERT con vistas locales y remotas con particiones. Adems, esta opcin
no se admite para las instrucciones INSERT generadas en tablas remotas en
el Database Engine si el nivel de compatibilidad est establecido en 80 o
ms.
Cuando una instruccin INSERT detecta un error aritmtico (desbordamiento,
divisin por cero o error de dominio) al evaluar una expresin, el Database
Engine trata dichos errores como si SET ARITHABORT fuera ON. El resto del
lote se detiene y se devuelve un mensaje de error.

Reglas para insertar filas


Al insertar filas, se aplican las siguientes reglas:
Si se va a cargar un valor en columnas con un tipo de datos char, varchar o
varbinary, el relleno o truncamiento de los espacios en blanco finales
(espacios para char y varchar, y ceros para varbinary) se determinan
mediante la configuracin de SET ANSI_PADDING definida para la columna
al crear la tabla.
En la siguiente tabla se muestra la operacin predeterminada cuando
SET ANSI_PADDING es OFF.
Tipo de
datos
Char
Varchar
varbinary

Operacin predeterminada
Rellena el valor con espacios hasta el ancho definido de la columna.
Quita los espacios finales hasta el ltimo carcter distinto de espacio o
hasta un carcter de espacio nico para las cadenas compuestas
solamente de espacios.
Quita los ceros finales.
Pgina 251 de 630

Si se carga una cadena vaca (' ') en una columna con un tipo de datos
varchar o text, la operacin predeterminada consiste en cargar una cadena
de longitud cero.
Si una instruccin INSERT infringe una restriccin o una regla, o si contiene
un valor incompatible con el tipo de datos de la columna, la instruccin no se
puede ejecutar y el Database Engine muestra un mensaje de error.
Al insertar un valor NULL en una columna text o image, no se crea un
puntero de texto vlido ni se asigna previamente una pgina de texto de 8
KB. Si INSERT carga varias filas con SELECT o EXECUTE, cualquier
infraccin de una regla o restriccin que se produzca en los valores que se
cargan provoca que se finalice la instruccin completa y que no se carguen
filas.
Cuando se insertan valores en tablas en una instancia remota del Database
Engine y no se especifican todos los valores de todas las columnas, debe
identificar las columnas en las que se deben insertar los valores
especificados.
Utilizar desencadenadores INSTEAD OF en acciones INSERT
Cuando se define un desencadenador INSTEAD OF en las acciones INSERT
en una tabla o vista, se ejecuta el desencadenador en lugar de la instruccin
INSERT. Las versiones anteriores de SQL Server slo admiten
desencadenadores AFTER definidos en INSERT y otras instrucciones de
modificacin de datos.
Insertar valores en columnas de tipo definido por el usuario
Puede insertar valores en columnas de tipo definido por el usuario si:
Suministra un valor del tipo definido por el usuario.
Suministra un valor en un tipo de datos del sistema de SQL Server 2005
siempre que el tipo definido por el usuario admita la conversin implcita o
explcita del tipo. En el siguiente ejemplo se muestra cmo insertar un valor
en una columna de tipo definido por el usuario Point mediante la conversin
explcita a partir de una cadena.
INSERT INTO Cities (Location) VALUES ( CONVERT(Point, '12.3:46.2') );
Tambin se puede suministrar un valor binario sin realizar ninguna
conversin explcita dado que todos los tipos definidos por el usuario se
pueden convertir implcitamente a partir de este valor binario. Llama a una
funcin definida por el usuario que devuelve un valor del tipo definido por el
usuario. En el siguiente ejemplo se utiliza una funcin definida por el usuario
CreateNewPoint() para crear un valor nuevo del tipo definido por el usuario
Point e insertar el valor en la tabla Cities.
INSERT INTO Cities (Location) VALUES ( dbo.CreateNewPoint(x, y) );
Utilizar OPENROWSET y BULK para datos de carga masiva
En el SQL Server 2005 Database Engine , las sugerencias de tabla nuevas
disponibles con el proveedor de conjuntos de filas OPENROWSET BULK
ofrecen las siguientes optimizaciones de carga masiva con la instruccin
INSERT:
Pgina 252 de 630

Registro de carga masiva (minimizacin del nmero de registros para la


operacin de insercin)
Comprobacin de restricciones establecida en ON u OFF
Ejecucin de desencadenadores establecida en ON u OFF
Estos optimizadores son similares a los que hay disponibles con el comando
BULK INSERT.
Si una instruccin INSERT realiza una carga masiva en una tabla no vaca,
se aplican las siguientes mejoras adicionales del rendimiento:
Si se divide una pgina durante una carga masiva, se agregan a la pgina
filas nuevas que no se han registrado por completo.
Si hay ndices no agrupados, pero no hay ningn ndice agrupado en la tabla,
puede que las filas de ndice deban registrarse por completo, aunque las filas
de datos no necesiten registrarse por completo.
Permisos
El permiso INSERT es obligatorio en la tabla de destino.
Los permisos INSERT se conceden de forma predeterminada a los miembros
de la funcin fija de servidor sysadmin, las funciones fijas de base de datos
db_owner y db_datawriter y al propietario de la tabla. Los miembros de las
funciones sysadmin, db_owner y db_securityadmin, y el propietario de la
tabla pueden transferir permisos a otros usuarios.
Para ejecutar INSERT con la opcin BULK de la funcin OPENROWSET, el
usuario debe ser miembro de la funcin fija de servidor sysadmin o de la
funcin fija de servidor bulkadmin
Ejemplos
A. Usar una instruccin INSERT simple
En el siguiente ejemplo se inserta una fila en la tabla
Production.UnitMeasure. Dado que los valores para todas las columnas se
suministran e incluyen en el mismo orden que las columnas de la tabla, no es
necesario especificar los nombres de columna en column_list..
USE AdventureWorks; GO INSERT INTO Production.UnitMeasure VALUES
(N'F2', N'Square Feet', GETDATE()); GO

UPDATE (Transact-SQL)
Cambia los datos de una tabla o vista.
Sintaxis
[ WITH <common_table_expression> [...n] ] UPDATE [ TOP ( expression ) [
PERCENT ] ] { <object> | rowset_function_limited
[ WITH
( <Table_Hint_Limited> [ ...n ] ) ] } SET
{ column_name =
{ expression | DEFAULT | NULL }
| { udt_column_name.
{ { property_name = expression
| field_name = expression
}
| method_name ( argument [ ,...n ] )
}
}
| column_name { .WRITE ( expression , @Offset , @Length ) }
| @variable = expression
| @variable = column = expression
Pgina 253 de 630

[ ,...n ]
[ ,...n ] ]

} [ ,...n ] [ <OUTPUT Clause> ] [ FROM{ <table_source> }


[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
|
cursor_variable_name
}
]
}
} ]
[ OPTION ( <query_hint> [ ,...n ] ) ] [ ; ] <object> ::= { [ server_name .
database_name . schema_name . | database_name .[ schema_name ] .
| schema_name . ]
table_or_view_name}
Argumentos
WITH <common_table_expression>
Especifica la vista o el conjunto de resultados temporal indicado, que tambin
se conoce como expresin de tabla comn (CTE), definido en el mbito de la
instruccin UPDATE. El conjunto de resultados CTE se deriva de una
consulta simple. La instruccin UPDATE hace referencia al conjunto de
resultados.
Las expresiones de tabla comunes tambin se pueden utilizar con las
instrucciones SELECT, INSERT, DELETE y CREATE VIEW.
TOP ( expression ) [ PERCENT ]
Especifica el nmero o porcentaje de filas que se va a actualizar. expression
puede ser un nmero o un porcentaje de filas.
Las filas a las que se hace referencia en la expresin TOP utilizada con
INSERT, UPDATE o DELETE no se ordenan.
En las instrucciones INSERT, UPDATE y DELETE se deben utilizar
parntesis para delimitar expression en TOP.
server_name
Es el nombre del servidor (un nombre de servidor vinculado o la funcin
OPENDATASOURCE como nombre de servidor) en el que se encuentra la
tabla o la vista. Si se especifica server_name, son obligatorios
database_name y schema_name.
database_name
Es el nombre de la base de datos.
schema_name
Es el nombre del esquema al que pertenece la tabla o vista.
table_or view_name
Es el nombre de la tabla o vista cuyas filas se deben actualizar.
En este mbito, se puede utilizar una variable table como origen de tabla en
una instruccin UPDATE.
La vista a la que hace referencia table_or_view_name debe poder ser
actualizada y debe hacer referencia exactamente a una tabla base en la
clusula FROM de la vista.
rowset_function_limited
Es la funcin OPENQUERY u OPENROWSET, dependiendo del proveedor.
WITH ( <Table_Hint_Limited> )
Especifica una o ms sugerencias de tabla que se permiten para una tabla de
destino. La palabra clave WITH y los parntesis son obligatorios. No se
permiten NOLOCK ni READUNCOMMITTED.
SET
Pgina 254 de 630

Especifica la lista de nombres de variable o de columna que se van a


actualizar.
column_name
Es una columna que contiene los datos que se van a cambiar. column_name
debe existir en table_or view_name. Las columnas de identidad no se pueden
actualizar.
expression
Es una variable, un valor literal, una expresin o una instruccin de
subseleccin entre parntesis que devuelve un solo valor. El valor devuelto
por expression sustituye al valor existente en column_name o @variable.
DEFAULT
Especifica que el valor predeterminado definido para la columna debe
reemplazar al valor existente en esa columna. Esta operacin tambin puede
utilizarse para cambiar la columna a NULL si no tiene asignado ningn valor
predeterminado y se ha definido para aceptar valores NULL.
udt_column_name
Es una columna de un tipo definido por el usuario.
property_name | field_name
Es un miembro de propiedad pblico o un miembro de datos pblico de un
tipo definido por el usuario.
method_name ( argument [ ,... n] )
Es un mtodo mutador pblico no esttico de udt_column_name que utiliza
uno o varios argumentos.
.WRITE ( expression, @Offset , @Length )
Especifica que una seccin del valor de column_name se va a modificar.
expression sustituye a las unidades @Length a partir de @Offset de
column_name. Con esta clusula slo se pueden especificar columnas de
tipo varchar(max), nvarchar(max) o varbinary(max). column_name no
puede ser NULL y no se puede calificar con un nombre de tabla o alias de
tabla.
expression es el valor que se copia a column_name. expression debe
evaluarse como el tipo de column_name o debe tener capacidad para
convertirse implcitamente a ese tipo. Si expression se establece como NULL,
se omitir @Length, y se truncar el valor de column_name en el @Offset
especificado.
@Offset es el punto inicial del valor de column_name en el que se escribe
expression. @Offset es una posicin ordinal basada en cero, es bigint y no
puede ser un nmero negativo. Si @Offset es NULL, la operacin de
actualizacin anexa expression al final del valor de column_name existente y
@Length no se tiene en cuenta. Si @Offset es mayor que la longitud del valor
de column_name, el SQL Server 2005 Database Engine (Motor de base de
datos de SQL Server 2005) de Microsoft devuelve un error. Si la suma de
@Offset y @Length excede el final del valor subyacente de la columna, se
elimina hasta el ltimo carcter del valor. Si la suma de @Offset y
LEN(expression) es superior al tamao subyacente declarado, se produce un
error.
@Length es la longitud de la seccin de la columna, a partir de @Offset, que
se reemplaza por expression. @Length es bigint y no puede ser un nmero

Pgina 255 de 630

negativo. Si @Length es NULL, la operacin de actualizacin quita todos los


datos de @Offset hasta el final del valor de column_name.
@variable
Es una variable declarada que se establece en el valor devuelto por
expression.
SET @variable = column = expression establece la variable en el mismo valor
que la columna. Esto no es lo mismo que SET @variable = column, column =
expression, que establece la variable en el valor previo a la actualizacin de
la columna.
<OUTPUT_Clause>
Devuelve datos actualizados o expresiones basadas en ellos como parte de
la operacin UPDATE. La clusula OUTPUT no se admite en instrucciones
DML dirigidas a tablas o vistas remotas.
FROM <table_source>
Especifica que se utiliza un origen de tabla, vista o tabla derivada para
proporcionar los criterios de la operacin de actualizacin. Si el objeto que se
actualiza es el que se indica en la clusula FROM y slo hay una referencia
al objeto en ella, puede especificarse o no un alias de objeto. Si el objeto que
se actualiza aparece ms de una vez en la clusula FROM, una nica
referencia al objeto no debe especificar un alias de tabla. Todas las dems
referencias al objeto de la clusula FROM deben incluir un alias de objeto.
Una vista con un trigger INSTEAD OF UPDATE no puede ser el destino de
UPDATE con una clusula FROM.
WHERE
Especifica las condiciones que limitan las filas que se actualizan. Hay dos
modos de actualizacin, dependiendo del formato de clusula WHERE que
se utilice:
Las actualizaciones por bsqueda especifican una condicin de bsqueda
para calificar las filas que se van a actualizar.
Las actualizaciones posicionadas utilizan la clusula CURRENT OF para
especificar un cursor. La operacin de actualizacin se produce en la posicin
actual del cursor.
<search_condition>
Especifica la condicin que debe cumplirse para que se actualicen las filas.
La condicin de bsqueda tambin puede ser la condicin en la que se basa
una combinacin. El nmero de predicados que pueden incluirse en una
condicin de bsqueda no tiene lmite.
CURRENT OF
Indica que la actualizacin se realice en la posicin actual del cursor
especificado.
GLOBAL
Especifica que cursor_name hace referencia a un cursor global.
cursor_name
Es el nombre del cursor abierto desde el que se debe realizar la
recuperacin. Si hay un cursor global y otro local con el nombre
Pgina 256 de 630

cursor_name, este argumento hace referencia al cursor global si se


especifica GLOBAL; de lo contrario, hace referencia al cursor local. El cursor
debe permitir actualizaciones.
cursor_variable_name
Es el nombre de una variable de cursor. cursor_variable_name debe hacer
referencia a un cursor que permita actualizaciones.
OPTION ( <query_hint> [ ,... n ] )
Especifica que se utilizan las sugerencias del optimizador para personalizar el
modo en que el Database Engine procesa la instruccin.
Nota:
La instruccin UPDATE se registra; sin embargo, las actualizaciones
parciales de tipos de datos de valores grandes mediante la clusula WRITE
se registran mnimamente.
Se pueden utilizar instrucciones UPDATE en el cuerpo de las funciones
definidas por el usuario slo si la tabla que se modifica es una variable table.
Si la actualizacin de una fila infringe una restriccin o una regla, infringe la
configuracin de valores NULL de la columna o si el nuevo valor es de un tipo
de datos incompatible, se cancela la instruccin, se devuelve un error y no se
actualiza ningn registro.
Cuando una instruccin UPDATE encuentra un error aritmtico (error de
desbordamiento, divisin por cero o de dominio) durante la evaluacin de la
expresin, la actualizacin no se lleva a cabo. El resto del lote no se ejecuta y
se devuelve un mensaje de error.
Si la actualizacin de una o varias columnas que participan en un ndice
agrupado hace que el tamao del ndice agrupado y de la fila supere 8.060
bytes, la actualizacin no se produce y se devuelve un mensaje de error.
Si la instruccin UPDATE pudo cambiar ms de una fila durante la
actualizacin de la clave de agrupacin y una o varias columnas text, ntext o
image, la actualizacin parcial de estas columnas se ejecuta como una
sustitucin completa de los valores.
Todas las columnas char y nchar se rellenan a la derecha hasta la longitud
definida.
La configuracin de la opcin SET ROWCOUNT se omite para las
instrucciones UPDATE de tablas remotas y vistas locales y remotas con
particiones.
Si ANSI_PADDING se establece en OFF, se quitan todos los espacios finales
de los datos insertados en las columnas varchar y nvarchar, excepto en las
cadenas que contienen slo espacios. Estas cadenas se truncan en una
cadena vaca. Si ANSI_PADDING se establece en ON, se insertan espacios
al final. El controlador ODBC de Microsoft SQL Server y el proveedor OLE DB
para SQL Server establecen automticamente SET ANSI_PADDING en ON
para cada conexin. Se puede configurar en orgenes de datos ODBC o
mediante atributos o propiedades de conexin. Una actualizacin posicionada
que utiliza una clusula WHERE CURRENT OF actualiza la fila que se
encuentra en la posicin actual del cursor. Este mtodo puede ser ms
preciso que una actualizacin por bsqueda que utilice una clusula WHERE
<search_condition> para calificar las filas que se deben actualizar. Una
Pgina 257 de 630

actualizacin por bsqueda modifica varias filas cuando la condicin de


bsqueda no identifica una sola fila de forma exclusiva.

Utilizar UPDATE con la clusula FROM


Los resultados de una instruccin UPDATE estn sin definir si la instruccin
incluye una clusula FROM que no se especifica de manera que slo haya un
valor disponible para cada caso de columna que se actualice, es decir, si la
instruccin UPDATE no es determinista. Por ejemplo, en la instruccin
UPDATE de la siguiente secuencia de comandos, las dos filas de Table1
cumplen los requisitos de la clusula FROM de la instruccin UPDATE, pero
no se define qu fila de Table1 se utiliza para actualizar la fila de Table2.
USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.Table1', 'U') IS NOT NULL DROP TABLE dbo.Table1;
GO IF OBJECT_ID ('dbo.Table2', 'U') IS NOT NULL DROP TABLE
dbo.Table2;
GO
CREATE TABLE dbo.Table1 (ColA int NOT NULL, ColB decimal(10,3) NOT
NULL);
GO
CREATE TABLE dbo.Table2 (ColA int PRIMARY KEY NOT NULL, ColB
decimal(10,3) NOT NULL);
GO
INSERT INTO dbo.Table1 VALUES(1, 10.0); INSERT INTO dbo.Table1
VALUES(1, 20.0); INSERT INTO dbo.Table2 VALUES(1, 0.0);
GO
UPDATE dbo.Table2 SET dbo.Table2.ColB = dbo.Table2.ColB +
dbo.Table1.ColB FROM dbo.Table2 INNER JOIN dbo.Table1 ON
(dbo.Table2.ColA = dbo.Table1.ColA);
GO
SELECT ColA, ColB FROM dbo.Table2;
Puede ocurrir el mismo problema cuando se combinan las clusulas FROM y
WHERE CURRENT OF. En el ejemplo siguiente, las dos filas de Table2
cumplen los requisitos de la clusula FROM de la instruccin UPDATE. No se
ha definido qu fila de Table2 se utilizar para actualizar la fila de Table1.
USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.Table1', 'U') IS NOT NULL DROP TABLE dbo.Table1;
GO
IF OBJECT_ID ('dbo.Table2', 'U') IS NOT NULL DROP TABLE dbo.Table2;
GO
CREATE TABLE dbo.Table1 (c1 int PRIMARY KEY NOT NULL, c2 int NOT
NULL);
GO
Pgina 258 de 630

CREATE TABLE dbo.Table2 (d1 int PRIMARY KEY NOT NULL, d2 int NOT
NULL);
GO
INSERT INTO dbo.Table1 VALUES (1, 10); INSERT INTO dbo.Table2
VALUES (1, 20); INSERT INTO dbo.Table2 VALUES (2, 30);
GO
DECLARE abc CURSOR LOCAL FOR SELECT c1, c2 FROM dbo.Table1;
OPEN abc; FETCH abc; UPDATE dbo.Table1 SET c2 = c2 + d2 FROM
dbo.Table2 WHERE CURRENT OF abc; GO SELECT c1, c2 FROM
dbo.Table1;
GO

Actualizar columnas de tipos definidos por el usuario


Existen varios mtodos para actualizar los valores de columnas de tipos
definidos por el usuario:
Suministrar un valor de un tipo de datos del sistema de SQL Server, siempre
y cuando el tipo definido por el usuario admita la conversin implcita o
explcita desde ese tipo. En el ejemplo siguiente se muestra cmo actualizar
un valor de una columna de tipo Point, definido por el usuario, mediante la
conversin explcita de una cadena.
UPDATE Cities SET Location = CONVERT(Point, '12.3:46.2')
WHERE Name = 'Anchorage';
Invocar un mtodo, marcado como mutator, del tipo definido por el usuario,
para realizar la actualizacin. En el ejemplo siguiente se invoca un mtodo
mutador de tipo Point denominado SetXY. Esto actualiza el estado de la
instancia del tipo.
UPDATE Cities SET Location.SetXY(23.5, 23.5) WHERE Name =
'Anchorage';
Nota:
SQL Server devuelve un error si se invoca un mtodo mutador
en un valor NULL de Transact-SQL, o bien si un nuevo valor
producido por un mtodo mutador es NULL.
Modificar el valor de un propietario registrado o un miembro de datos pblico
del tipo definido por el usuario. La expresin que suministra el valor debe
poder convertirse implcitamente al tipo de la propiedad. En el ejemplo
siguiente se modifica el valor de la propiedad X del tipo Point definido por el
usuario.
UPDATE Cities SET Location.X = 23.5 WHERE Name = 'Anchorage';
Para modificar diferentes propiedades de la misma columna de tipo definido
por el usuario, emita varias instrucciones UPDATE o invoque un mtodo
mutador del tipo.
Actualizar tipos de datos de valores grandes
Utilice la clusula .WRITE (expression, @Offset, @Length) para realizar una
actualizacin parcial o completa de los tipos de datos varchar(max),
Pgina 259 de 630

nvarchar(max) y varbinary(max). Por ejemplo, la actualizacin parcial de


una columna varchar(max) podra eliminar o modificar slo los 200 primeros
caracteres de la columna, mientras que una actualizacin completa eliminara
o modificara todos los datos de la columna. Las actualizaciones .WRITE que
insertan o anexan datos nuevos se registran mnimamente si se ha
establecido para la base de datos el modelo de recuperacin por medio de
registros de operaciones masivas o el modelo de recuperacin simple. Tenga
en cuenta que el registro mnimo no se utiliza cuando se actualizan valores
existentes.
El SQL Server 2005 Database Engine (Motor de base de datos de SQL
Server 2005) convierte una actualizacin parcial en actualizacin completa
cuando la instruccin UPDATE realiza una de estas acciones:
Cambia una columna de clave de la tabla o vista con particiones.
Modifica ms de una fila y tambin actualiza la clave de un ndice agrupado
no nico en un valor no constante.
No se puede usar la clusula .WRITE para actualizar una columna NULL o
establecer el valor de column_name como NULL.
@Offset y @Length se especifican en bytes para los tipos de datos varbinary
y varchar, y en caracteres para el tipo de datos nvarchar. Se calculan los
desplazamientos correspondientes para las intercalaciones del juego de
caracteres de doble byte (DBCS).
Para que el rendimiento sea ptimo, se recomienda insertar o actualizar los
datos en tamaos de fragmento que sean mltiplos de 8.040 bytes.
Si en una clusula OUTPUT se hace referencia a la columna modificada por
la clusula .WRITE, se devuelve el valor completo de la columna, bien la
imagen anterior de deleted.column_name o bien la imagen posterior de
inserted.column_name, en la columna especificada en la variable de tabla.
Vea el ejemplo G a continuacin.
Para obtener la misma funcionalidad de .WRITE con otros tipos de datos de
carcter o binarios, utilice STUFF (Transact-SQL).
Actualizar columnas de tipo text, ntext e image
Al modificar una columna text, ntext o image con UPDATE, se inicializa la
columna, se le asigna un puntero de texto vlido y se le asigna al menos una
pgina de datos, a menos que la columna se actualice con NULL.
Para reemplazar o modificar grandes bloques de datos text, ntext o image,
utilice WRITETEXT o UPDATETEXT en lugar de la instruccin UPDATE.
Utilizar triggers INSTEAD OF en acciones UPDATE
Cuando se define un desencadenador INSTEAD OF para las acciones
UPDATE de una tabla, se ejecuta el desencadenador en lugar de la
instruccin UPDATE. En versiones anteriores de SQL Server slo se admita
la definicin de desencadenadores AFTER en instrucciones UPDATE y otras
instrucciones de modificacin de datos. No se puede especificar la clusula
FROM en una instruccin UPDATE que haga referencia, directa o
indirectamente, a una vista que tiene definido un desencadenador INSTEAD
OF.
Pgina 260 de 630

Configurar variables y columnas


Es posible utilizar nombres de variables en las instrucciones UPDATE para
mostrar los valores nuevos y antiguos afectados, pero slo se recomiendan
cuando la instruccin UPDATE afecte a un nico registro. Si la instruccin
UPDATE afecta a varios registros, para devolver los valores nuevos y
antiguos de cada registro, utilice la clusula OUTPUT.
Permisos
Se requieren permisos UPDATE en la tabla de destino. Tambin se requieren
permisos SELECT para la tabla que se actualiza si la instruccin UPDATE
contiene una clusula WHERE o en el caso de que el argumento expression
de la clusula SET utilice una columna de la tabla.
Los permisos para utilizar UPDATE corresponden de forma predeterminada a
los miembros de la funcin fija de servidor sysadmin, de las funciones fijas
de base de datos db_owner y db_datawriter y al propietario de la tabla. Los
miembros de las funciones sysadmin, db_owner y db_securityadmin y el
propietario de la tabla pueden transferir permisos a otros usuarios.
Ejemplos
A. Utilizar una instruccin UPDATE simple
En los ejemplos siguientes se muestra cmo se pueden ver afectadas todas
las filas si no se utiliza una clusula WHERE para especificar la fila o las filas
que se deben actualizar.
En este ejemplo se actualizan los valores de las columnas Bonus,
CommissionPct y SalesQuota de todas las filas de la tabla SalesPerson.
USE AdventureWorks;
GO UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
GO

DELETE (Transact-SQL)
Elimina filas de una tabla o vista.
Sintaxis
[ WITH <common_table_expression> [ ,...n ] ] DELETE
[ TOP
( expression ) [ PERCENT ] ]
[ FROM ]
{ <object> |
rowset_function_limited
[ WITH ( <table_hint_limited> [ ...n ] ) ]
}
[ <OUTPUT Clause> ]
[ FROM <table_source> [ ,...n ] ]
[ WHERE
{ <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ]
cursor_name }
| cursor_variable_name
}
]
}
} ] [ OPTION ( <Query Hint> [ ,...n ] ) ] [; ] <object> ::= {
[ server_name.database_name.schema_name.
|
database_name.
[ schema_name ] .
| schema_name. ]
table_or_view_name }
Argumentos
Pgina 261 de 630

WITH <common_table_expression>
Especifica el conjunto de resultados de nombre temporal, tambin conocido
como expresin de tabla comn, definido dentro del mbito de la instruccin
DELETE. El conjunto de resultados se deriva de una instruccin SELECT.
Las expresiones de tabla comunes tambin se pueden utilizar con las
instrucciones SELECT, INSERT, UPDATE y CREATE VIEW.
TOP ( expression ) [ PERCENT ]
Especifica el nmero o porcentaje de filas aleatorias que se van a eliminar.
expression puede ser un nmero o un porcentaje de filas. Las filas a las que
se hace referencia en la expresin TOP utilizada con INSERT, UPDATE o
DELETE no se ordenan.
En las instrucciones INSERT, UPDATE y DELETE se deben utilizar
parntesis para delimitar expression en TOP.
FROM
Se trata de una palabra clave opcional que se puede utilizar entre la palabra
clave DELETE y el destino table_or_view_name o rowset_function_limited.
server_name
Es el nombre del servidor (que utiliza un nombre de servidor vinculado o la
funcin OPENDATASOURCE (Transact-SQL) como nombre del servidor)
donde se encuentra la tabla o vista. Si se especifica server_name, son
obligatorios database_name y schema_name.
database_name
Es el nombre de la base de datos.
schema_name
Es el nombre del esquema al que pertenece la tabla o vista.
table_or view_name
Es el nombre de la tabla o vista cuyas filas se deben quitar.
En este mbito, se puede utilizar una variable table como origen de tabla en
una instruccin DELETE.
La vista a la que hace referencia table_or_view_name debe poderse
actualizar y debe hacer referencia exactamente a una tabla base en la
clusula FROM de la vista.
rowset_function_limited
Se trata de la funcin OPENQUERY (Transact-SQL) u OPENROWSET
(Transact-SQL), segn las capacidades del proveedor. Para obtener ms
informacin acerca de la funcionalidad que necesita el proveedor, vea
Requisitos de UPDATE y DELETE para los proveedores OLE DB.
WITH ( <table_hint_limited> [... n] )
Especifica una o ms sugerencias de tabla que se permiten para una tabla de
destino. La palabra clave WITH y los parntesis son obligatorios. No se
permiten NOLOCK ni READUNCOMMITTED.
<OUTPUT_Clause>
Devuelve filas eliminadas, o expresiones basadas en ellas, como parte de la
operacin DELETE. La clusula OUTPUT no se admite en instrucciones DML
dirigidas a tablas o vistas remotas.
.
Pgina 262 de 630

FROM <table_source>
Especifica una clusula FROM adicional. Esta extensin de Transact-SQL
para DELETE permite especificar datos de <table_source> y eliminar las filas
correspondientes de la tabla en la primera clusula FROM.
Se puede utilizar esta extensin, que especifica una combinacin, en lugar de
una subconsulta en la clusula WHERE para identificar las filas que se van a
quitar.
WHERE
Especifica las condiciones utilizadas para limitar el nmero de filas que se
van a eliminar. Si no se proporciona una clusula WHERE, DELETE quita
todas las filas de la tabla.
Hay dos formas de operaciones de eliminacin, que se basan en las
condiciones que se especifiquen en la clusula WHERE:
Las eliminaciones por bsqueda especifican una condicin de bsqueda que
califica las filas que se van a eliminar. Por ejemplo, WHERE column_name =
value.
Las eliminaciones por posicin utilizan la clusula CURRENT OF para
especificar un cursor. La operacin de eliminacin se produce en la posicin
actual del cursor. Este mtodo puede ser ms preciso que una instruccin
DELETE por bsqueda que utilice una clusula WHERE search_condition
para calificar las filas que se van a eliminar. Una instruccin DELETE por
bsqueda elimina varias filas si la condicin de bsqueda no identifica
exclusivamente una nica fila.
<search_condition>
Especifica las condiciones restrictivas de las filas que se van a eliminar. No
hay lmite en el nmero de predicados que se pueden incluir en una condicin
de bsqueda.
CURRENT OF
Especifica que la instruccin DELETE se ejecutar en la posicin actual del
cursor especificado.
GLOBAL
Especifica que cursor_name hace referencia a un cursor global.
cursor_name
Es el nombre del cursor abierto desde el que se realiza la recuperacin. Si
hay un cursor global y otro local con el nombre cursor_name, este argumento
hace referencia al cursor global si se especifica GLOBAL; de lo contrario,
hace referencia al cursor local. El cursor debe permitir actualizaciones.
cursor_variable_name
Es el nombre de una variable de cursor. La variable de cursor debe hacer
referencia a un cursor que permita realizar actualizaciones.
OPTION ( <query_hint> [ ,... n] )
Son palabras clave que indican que se utilizan sugerencias del optimizador
para personalizar el procesamiento de la instruccin por parte del Database
Engine (Motor de base de datos).

Pgina 263 de 630

Nota:
Es posible utilizar DELETE en el cuerpo de una funcin definida por el usuario
si el objeto que se va a modificar es una variable table.
La instruccin DELETE puede tener un error si infringe un desencadenador o
intenta quitar una fila a la que hacen referencia datos de otra tabla con una
restriccin FOREIGN KEY. Si la instruccin DELETE quita varias filas y
cualquiera de las filas eliminadas infringe un desencadenador o restriccin, se
cancela la instruccin, se devuelve un error y no se elimina ninguna fila.
Cuando una instruccin DELETE encuentra un error aritmtico
(desbordamiento, divisin por cero o error de dominio) al evaluar una
expresin, el Database Engine trata ese error como si SET ARITHABORT
fuese ON. Se cancela el resto del proceso por lotes y se devuelve un mensaje
de error. La configuracin de la opcin SET ROWCOUNT se ignora en las
instrucciones DELETE con tablas remotas y vistas divididas remotas y
locales. Si desea eliminar todas las filas de una tabla, utilice la instruccin
DELETE sin especificar una clusula WHERE, o utilice TRUNCATE TABLE.
TRUNCATE TABLE es ms rpido que DELETE y utiliza menos recursos de
los registros de transacciones y de sistema.

Utilizar un desencadenador INSTEAD OF en acciones DELETE


Cuando se define un desencadenador INSTEAD OF en las acciones DELETE
en una tabla o vista, se ejecuta el desencadenador en lugar de la instruccin
DELETE. Las versiones anteriores de SQL Server slo admitan
desencadenadores AFTER en DELETE y otras instrucciones de modificacin
de datos. No se puede especificar la clusula FROM en una instruccin
DELETE que haga referencia, directa o indirectamente, a una vista que tiene
definido un desencadenador INSTEAD OF.
Permisos
Se requieren permisos DELETE en la tabla de destino. Tambin se requieren
los permisos para utilizar SELECT si la instruccin contiene una clusula
WHERE. os permisos para utilizar DELETE corresponden de forma
predeterminada a los miembros de la funcin fija de servidor sysadmin, de
las funciones fijas de base de datos db_owner y db_datawriter y al
propietario de la tabla. Los miembros de las funciones sysadmin, db_owner
y db_securityadmin y el propietario de la tabla pueden transferir permisos a
otros usuarios.
Ejemplos
A. Utilizar DELETE sin la clusula WHERE
En el ejemplo siguiente se eliminan todas las filas de la tabla
SalesPersonQuotaHistory porque no se utiliza una clusula WHERE para
limitar el nmero de filas eliminadas.
USE AdventureWorks;
GO
DELETE FROM Sales.SalesPersonQuotaHistory;
Pgina 264 de 630

GO

Consultas Avanzadas
GROUP BY (Transact-SQL)
Especifica los grupos en los que se deben colocar las filas de salida. Si se
incluyen funciones de agregado en la <lista de seleccin> de la clusula
SELECT, GROUP BY calcula un valor de resumen para cada grupo. Cuando
se especifica GROUP BY, cada columna que est en una expresin no
agregada de la lista de seleccin se debe incluir en la lista de GROUP BY o
Pgina 265 de 630

la expresin GROUP BY debe coincidir exactamente con la expresin de la


lista de seleccin.
Nota:
Si no se especifica la clusula ORDER BY, los grupos devueltos con la
clusula GROUP BY no estn en un orden determinado. Se recomienda
utilizar siempre la clusula ORDER BY para especificar un orden determinado
de los datos.
Sintaxis
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
ROLLUP } ] ]

[ WITH { CUBE |

Argumentos
ALL
Incluye todos los grupos y conjuntos de resultados, incluso aqullos en los
que no hay filas que cumplan la condicin de bsqueda especificada en la
clusula WHERE. Cuando se especifica ALL, se devuelven valores NULL
para las columnas de resumen de los grupos que no cumplen la condicin de
bsqueda. No puede especificar ALL con los operadores CUBE y ROLLUP.
GROUP BY ALL no se admite en consultas que tienen acceso a tablas
remotas si tambin hay una clusula WHERE en la consulta.
group_by_expression
Es una expresin segn la cual se realiza la agrupacin;
group_by_expression tambin se conoce como columna de agrupacin.
group_by expression puede ser una columna o una expresin no agregada
que haga referencia a una columna devuelta por la clusula FROM. Un alias
de columna que est definido en la lista de seleccin no puede utilizarse para
especificar una columna de agrupamiento.
Nota:
Las columnas de tipo text, ntext e image no se pueden utilizar en
group_by_expression.
En las clusulas GROUP BY que no contengan CUBE o ROLLUP, el nmero
de elementos group_by_expression est limitado por los tamaos de columna
de GROUP BY, las columnas de agregado y los valores de agregado que
participan en la consulta. Este lmite procede del lmite de 8.060 bytes de la
tabla de trabajo intermedia que se necesita para contener los resultados
intermedios de la consulta. Se permite un mximo de 10 expresiones de
agrupamiento cuando se especifica CUBE o ROLLUP.
No se pueden especificar mtodos de tipos de datos xml directamente en
group_by_expression. En su lugar, haga referencia a una funcin definida por
el usuario que incluya mtodos de tipos de datos xml, o haga referencia a
una columna calculada que los utilice.
CUBE
Pgina 266 de 630

Especifica que, adems de las filas que normalmente proporciona GROUP


BY, deben incluirse filas de resumen en el conjunto de resultados. Se
devuelve una fila de resumen GROUP BY por cada posible combinacin de
grupo y subgrupo del conjunto de resultados. En el resultado se muestra una
fila de resumen GROUP BY como NULL, pero se utiliza para indicar todos los
valores. Utilice la funcin GROUPING para determinar si los valores NULL del
conjunto de resultados son valores de resumen GROUP BY.
El nmero de filas de resumen del conjunto de resultados se determina
mediante el nmero de columnas que contiene la clusula GROUP BY. Cada
operando (columna) de la clusula GROUP BY se enlaza segn el
agrupamiento NULL y se aplica el agrupamiento al resto de los operandos
(columnas). Debido a que CUBE devuelve todas las combinaciones posibles
de grupo y subgrupo, el nmero de filas es el mismo, independientemente del
orden en que se especifiquen las columnas de agrupamiento.
ROLLUP
Especifica que, adems de las filas que normalmente proporciona GROUP
BY, se incluyen filas de resumen en el conjunto de resultados. Los grupos se
resumen en un orden jerrquico, desde el nivel inferior del grupo hasta el
superior. La jerarqua del grupo se determina por el orden en que se
especifican las columnas de agrupamiento. Cambiar el orden de las
columnas de agrupamiento puede afectar al nmero de filas generadas en el
conjunto de resultados.
Importante:
Cuando se utiliza CUBE o ROLLUP no se admiten agregados Distinct, como
AVG(DISTINCT column_name), COUNT(DISTINCT column_name) y
SUM(DISTINCT column_name). Si se utilizan, el SQL Server 2005 Database
Engine (Motor de base de datos de SQL Server 2005) de Microsoft devuelve
un mensaje de error y cancela la consulta.

Pgina 267 de 630

UNION (Transact-SQL)
Combina los resultados de dos o ms consultas en un solo conjunto de
resultados que incluye todas las filas que pertenecen a las consultas de la
unin. La operacin UNION es distinta de la utilizacin de combinaciones de
columnas de dos tablas.
A continuacin se muestran las reglas bsicas para combinar los conjuntos
de resultados de dos consultas con UNION:
El nmero y el orden de las columnas deben ser idnticos en todas las
consultas.
Los tipos de datos deben ser compatibles.
Sintaxis
{ <query specification> | ( <query expression> ) } UNION [ ALL ] <query
specification | ( <query expression> ) [ UNION [ ALL ] <query specification> | (
<query expression> ) [ ...n ] ]
Argumentos
<query_specification> | ( <query_expression> )
Es una especificacin o expresin de consulta que devuelve datos que se
van a combinar con los datos de otra especificacin o expresin de consulta.
No es preciso que las definiciones de las columnas que forman parte de una
operacin UNION sean iguales, pero deben ser compatibles a travs de una
conversin implcita. Cuando los tipos de datos difieren, el tipo de datos
resultante se determina basndose en las reglas de prioridad de tipo de
datos. Cuando los tipos son iguales pero difieren en precisin, escala o
longitud, el resultado se determina basndose en las mismas reglas para
combinar expresiones.
Las columnas del tipo de datos xml deben ser equivalentes. Todas las
columnas deben tener un tipo de esquema XML o no tener tipo. Si tienen tipo,
debe ser el de la misma coleccin de esquemas XML.
UNION
Especifica que se deben combinar varios conjuntos de resultados para ser
devueltos como un solo conjunto de resultados.
ALL
Agrega todas las filas a los resultados. Incluye las filas duplicadas. Si no se
especifica, las filas duplicadas se eliminan.

TOP (Transact-SQL)
Especifica que slo se devolver el primer conjunto de filas del resultado de
la consulta. El conjunto de filas puede ser un nmero o un porcentaje de las
filas. La expresin TOP se puede utilizar en instrucciones SELECT, INSERT,
UPDATE y DELETE.

Pgina 268 de 630

Sintaxis
[ TOP (expression) [PERCENT] [ WITH TIES ] ]
Argumentos
expression
Es la expresin numrica que especifica el nmero de filas que se
devolvern. El valor expression se convierte implcitamente a un valor float si
se especific PERCENT; de lo contrario, se convierte a bigint.
En instrucciones INSERT, UPDATE y DELETE, se requieren parntesis que
delimiten el valor expression en TOP. Por compatibilidad con versiones
anteriores se admite TOP expression sin parntesis en instrucciones
SELECT, pero no se recomienda usar la instruccin de este modo.
Si la consulta contiene una clusula ORDER BY, se devolvern las primeras
filas de expression o el porcentaje de filas de expression ordenadas por la
clusula ORDER BY. Cuando la consulta no tiene una clusula ORDER BY,
el orden de las filas es arbitrario.

PERCENT
Indica que la consulta devuelve slo el primer porcentaje de filas de
expression del conjunto de resultados.
WITH TIES
Especifica que las filas adicionales se devolvern del conjunto de resultados
base con el mismo valor en las columnas ORDER BY que el que aparece en
la ltima de las filas de TOP n (PERCENT). TOP...WITH TIES slo se puede
especificar en instrucciones SELECT y siempre que haya una clusula
ORDER BY especificada.
Nota:
TOP no se puede utilizar conjuntamente con instrucciones UPDATE y
DELETE en vistas con particiones.
Las filas a las que se hace referencia en la expresin TOP utilizada con
INSERT, UPDATE o DELETE no se organizan en ningn orden. TOP n
devuelve n filas aleatorias. Por ejemplo, la siguiente instruccin de INSERT
contiene la clusula ORDER BY y an as esta clusula no afecta a las filas a
las que se hace referencia directamente en la instruccin INSERT.
INSERT TOP (2) INTO Table2 (ColumnB) SELECT ColumnA FROM Table1
ORDER BY ColumnA
La clusula ORDER BY de la consulta anterior slo hace referencia a las filas
devueltas por la instruccin SELECT anidada. La instruccin INSERT elige
cualquiera de las dos filas devueltas por la instruccin SELECT. Para
garantizar que se hayan insertado las dos filas superiores de la subconsulta
SELECT, vuelva a escribir la consulta de la manera siguiente.
INSERT INTO Table2 (ColumnB) SELECT TOP (2) ColumnA FROM Table1
ORDER BY ColumnA
Microsoft SQL Server 2005 permite la actualizacin de vistas creadas con la
clusula TOP. Dado que la clusula TOP se incluye en la definicin de vista,
Pgina 269 de 630

es posible que algunas filas puedan desaparecer de la vista a causa de una


actualizacin, si el resultado ya no cumple con los requisitos de la expresin
TOP.La expresin TOP de una consulta no afecta a las instrucciones que se
pueden ejecutar a partir de la activacin de un desencadenador. Las tablas
insertadas y actualizadas en los desencadenadores slo mostrarn las filas
verdaderamente afectadas por las instrucciones INSERT, UPDATE o
DELETE.

Ejemplos
A. Usar TOP con variables
En el ejemplo siguiente se utiliza una variable para obtener los 10 primeros
empleados enumerados en la tabla dbo.Employee de la base de datos
AdventureWorks.
USE AdventureWorks ;
GO
DECLARE @p AS int SET @p='10' SELECT TOP(@p)* FROM
HumanResources.Employee;
GO
B. Usar TOP con PERCENT y WITH TIES
En el ejemplo siguiente se obtiene el 10% de los empleados que tienen los
salarios ms altos y los devuelve en orden descendente de acuerdo con el
salario base. La especificacin de WITH TIES garantiza que tambin se
incluyan los empleados con salarios iguales al salario ms bajo en el conjunto
de resultados, aun cuando esto exceda el 10% de los empleados.
USE AdventureWorks ;
GO
SELECT TOP(10) PERCENT WITH TIES c.FirstName, c.LastName, e.Title,
e.Gender,
r.Rate
FROM
Person.Contact
c
INNER
JOIN
HumanResources.Employee e ON c.ContactID = e.ContactID INNER JOIN
HumanResources.EmployeePayHistory r ON r.EmployeeID = e.EmployeeID
ORDER BY Rate DESC;

Pgina 270 de 630

Funciones Predefinidas
Una funcin predefinida es una pieza de cdigo que trabaja como una sola
unidad lgica, ya definida en el SQL.
SQL Server 2005 proporciona numerosas funciones integradas y permite
crear funciones definidas por el usuario.
Tipos de funciones
Funcin
Funciones
de
conjuntos de filas
Funciones
de
agregado
Funciones
de
categora
Funciones escalares

Descripcin
Devuelven un objeto que se puede utilizar como las referencias a
tablas en una instruccin SQL.
Operan sobre una coleccin de valores y devuelven un solo valor de
resumen.
Devuelven un valor de categora para cada fila de una particin.
Operan sobre un valor y despus devuelven otro valor. Las funciones
escalares se pueden utilizar donde la expresin sea vlida.

Funciones escalares
Categora
funcin
Funciones
configuracin

de

la
Descripcin
de Devuelven informacin acerca de la configuracin actual.

Funciones del cursor

Devuelven informacin acerca de los cursores.

Funciones de fecha y Llevan a cabo operaciones sobre un valor de entrada de fecha y hora,
hora
y devuelven un valor numrico, de cadena o de fecha y hora.
Funciones
matemticas

Realizan clculos basados en valores de entrada proporcionados


como parmetros a las funciones y devuelven valores numricos.

Funciones
metadatos

de Devuelven informacin acerca de la base de datos y los objetos de la


base de datos.

Funciones
seguridad

de Devuelven informacin acerca de usuarios y funciones.

Funciones de cadena

Realizan operaciones con el valor de entrada de una cadena (char o


varchar) y devuelven una cadena o un valor numrico.

Funciones del sistema Realizan operaciones y devuelven informacin acerca de valores,


objetos y configuraciones de una instancia de SQL Server.
Funciones estadsticas Devuelven informacin estadstica acerca del sistema.
del sistema
Funciones de texto e Realizan operaciones sobre los valores de entrada o columnas de
imagen
texto o imagen, y devuelven informacin acerca del valor.

Determinismo de funcin
Las funciones integradas de SQL Server son deterministas o no
deterministas. Las funciones son deterministas cuando devuelven siempre el
mismo resultado cada vez que se llaman con un conjunto especfico de
valores de entrada. Las funciones son no deterministas cuando es posible
Pgina 271 de 630

que devuelvan distintos resultados cada vez que se llaman con un mismo
conjunto especfico de valores de entrada.
Intercalacin de funciones
Las funciones que toman una entrada de cadena de caracteres y devuelven
una salida de cadena de caracteres utilizan la intercalacin de la cadena de
entrada para la salida.
Las funciones que toman entradas que no son de caracteres y devuelven una
cadena de caracteres utilizan la intercalacin predeterminada de la base de
datos actual para la salida.
Las funciones que toman varias entradas de cadena de caracteres y
devuelven una cadena de caracteres utilizan las reglas de prioridad de
intercalacin para establecer la intercalacin de la cadena de salida.

Funciones de categora (Transact-SQL)


Las funciones de categora devuelven un valor de categora para cada fila de
una particin. Segn la funcin que se utilice, algunas filas pueden recibir el
mismo valor que otras. Las funciones de categora son no deterministas.
Transact-SQL proporciona las siguientes funciones de categora:
RANK

NTILE

DENSE_RANK

ROW_NUMBER

Funciones de agregado (Transact-SQL)


Las funciones de agregado realizan un clculo sobre un conjunto de valores y
devuelven un solo valor. Si exceptuamos la funcin COUNT, todas las
funciones de agregado ignoran los valores NULL. Las funciones de agregado
se suelen utilizar con la clusula GROUP BY de la instruccin SELECT.
Todas las funciones de agregado son deterministas. Esto significa que las
funciones de agregado devuelven el mismo resultado cada vez que son
llamadas con un conjunto especfico de valores de entrada.
Las funciones de agregado slo se pueden utilizar como expresiones en:
La lista de seleccin de una instruccin SELECT (en una subconsulta o en la
consulta externa).
Clusulas COMPUTE o COMPUTE BY.
Clusulas HAVING.
Transact-SQL proporciona las siguientes funciones de agregado:
AVG

MIN

CHECKSUM

SUM

CHECKSUM_AGG

STDEV

COUNT

STDEVP

COUNT_BIG

VAR
Pgina 272 de 630

GROUPING

VARP

MAX

Funciones de conjuntos de filas (Transact-SQL)


Las siguientes funciones de conjunto de filas devuelven un objeto que se
puede utilizar, en instrucciones Transact-SQL, en lugar de una referencia a
una tabla.
CONTAINSTABLE
OPENQUERY
FREETEXTTABLE

OPENROWSET

OPENDATASOURCE

OPENXML

Todas las funciones de conjuntos de filas son no deterministas. Por ello,


estas funciones no siempre devuelven el mismo resultado cada vez que se
llaman, incluso con el mismo conjunto de valores de entrada.

Funciones de fecha y hora (Transact-SQL)


Las siguientes funciones escalares realizan una operacin sobre un valor de
entrada de fecha y hora, y devuelven un valor de cadena, numrico, o de
fecha y hora.
La tabla siguiente muestra las funciones de fecha y hora de Transact-SQL y
su propiedad determinista.
DATEADD
DATEDIFF
DATENAME

DATEPART

DAY

GETDATE

GERUTCDATE

MONTH

YEAR

Funciones matemticas (Transact-SQL)


Las siguientes funciones escalares realizan un clculo, normalmente basado
en valores de entrada proporcionados como argumentos, y devuelven un
valor numrico:
ABS
DEGREES
RAND
ACOS

EXP

ROUND

ASIN

FLOOR

SIGN
Pgina 273 de 630

ATAN

LOG

SIN

ATN2

LOG10

SQRT

CEILING

PI

SQUARE

COS

POWER

TAN

COT

RADIANS

Nota:
Las funciones aritmticas, como ABS, CEILING, DEGREES, FLOOR,
POWER, RADIANS y SIGN, devuelven un valor del mismo tipo de datos que
el valor de entrada. Las funciones trigonomtricas y otras funciones, incluidas
EXP, LOG, LOG10, SQUARE y SQRT, convierten sus valores de entrada a
float y devuelven un valor de tipo float.
Todas las funciones matemticas, excepto RAND, son deterministas, lo que
significa que devuelven el mismo resultado cada vez que se llaman con un
conjunto especfico de valores de entrada. RAND es determinista slo
cuando se especifica un parmetro de inicializacin.

Funciones de cadena (Transact-SQL)


Estas funciones escalares realizan una operacin sobre un valor de cadena
de entrada y devuelven un valor de cadena o un valor numrico:
ASCII
NCHAR
SOUNDEX
CHAR

PATINDEX

SPACE

CHARINDEX

QUOTENAME

STR

DIFFERENCE

REPLACE

STUFF

LEFT

REPLICATE

SUBSTRING

LEN

REVERSE

UNICODE

LOWER

RIGHT

UPPER

LTRIM

RTRIM

Todas las funciones integradas de cadena son deterministas. Esto significa


que devuelven el mismo valor siempre que se llamen con un conjunto
determinado de valores de entrada.

Funciones del sistema (Transact-SQL)


Las siguientes funciones realizan operaciones y devuelven informacin sobre
valores, objetos y configuraciones de SQL Server 2005.
Pgina 274 de 630

En la siguiente tabla se presentan las funciones del sistema Transact-SQL:


APP_NAME
COALESCE
CURRENT_TIMESTA
MP
@@ERROR
ERROR_PROCEDUR
E
ERROR_STATE
fn_virtualfilestats
HOST_ID
IDENT_INCR
IDENTITY (funcin)
ISNUMERIC
PARSENAME
SCOPE_IDENTITY

Expresin CASE
COLUMNS_UPDAT
ED
CURRENT_USER

CAST y CONVERT
COLLATIONPROPERTY

ERROR_LINE
ERROR_NUMBER

ERROR_MESSAGE
ERROR_SEVERITY

DATALENGTH

Programa 5 Estrellas
fn_helpcollations
FORMATMESSAGE
HOST_NAME
IDENT_SEED
ISDATE
NEWID
@@ROWCOUNT
SERVERPROPERT
Y
STATS_DATE

fn_servershareddrives
GETANSINULL
IDENT_CURRENT
@@IDENTITY
ISNULL
NULLIF
ROWCOUNT_BIG
SESSIONPROPERTY

SQL
Server
2005
SESSION_USER
sys.dm_db_index_physical_st
SYSTEM_USER
USER_NAME

@@TRANCOUNT
XACT_STATE

ats
UPDATE()

Estrella 2
Unidad 2

Integridad Referencial

2007

Pgina 275 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 276 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 277 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 278 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 279 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 280 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 281 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 282 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 283 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 284 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 285 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 286 de 630

Unidad 2: Integridad Referencial


Objetivos
Dar una visin acerca de los conceptos bsicos sobre la
Integridad Referencial de una base de datos. Los temas
que se abordarn sern sobre los distintos tipos de
Restricciones que conforman la Integridad.

Pgina 287 de 630

Integridad Referencial
La integridad referencial es un sistema de reglas que garantizan que las
relaciones entre filas de tablas relacionadas sean vlidas y que no se
eliminen ni cambien accidentalmente los datos relacionados.
Procedimiento
Se puede establecer la integridad referencial cuando se cumplen las
siguientes condiciones:
La columna coincidente de la tabla principal es una clave principal o tiene una
restriccin UNIQUE.
Las columnas relacionadas en la tabla externa tienen el mismo tipo de datos
y el mismo tamao.
Cuando se exige la integridad referencial, se deben observar las reglas
siguientes:
o No se puede especificar un valor en la columna de clave
externa de la tabla relacionada si ese valor no existe en la
clave principal de la tabla relacionada. Sin embargo, se
puede especificar un valor NULL en la columna de clave
externa. Por ejemplo, no se puede indicar que se asigna
un trabajo a un empleado que no est incluido en la tabla
de empleados. Pero se puede indicar que un empleado no
tiene trabajo asignado mediante la especificacin de un
valor NULL en la columna de identificacin de la tabla de
empleados.
o No se puede eliminar una fila de una tabla de clave
principal si existen filas que coinciden con ella en una tabla
relacionada. Por ejemplo, no se puede eliminar una fila de
la tabla trabajos si hay empleados asignados al trabajo
representado por esa fila en la tabla de empleados.
o No se puede cambiar un valor de clave principal en la tabla
de clave principal si esa fila tiene filas relacionadas. Por
ejemplo, no puede cambiar el valor de clave unica de un
trabajo en la tabla de trabajos si hay empleados con dicho
valor de identificacin de trabajo en la tabla de
empleados.
Integridad Referencial es el estado en el que todos los valores de clave
externa de una base de datos son vlidos. Para que una clave externa sea
vlida, debe contener el valor NULL o un valor de clave existente de las
columnas de clave principal o exclusiva a la que hace referencia la clave
externa.

Pgina 288 de 630

Integridad Referencial Declarativa


Son restricciones FOREIGN KEY definidas como parte de una definicin de
tabla que exigen que las relaciones entre las tablas sean correctas. Las
restricciones garantizan que se realicen las acciones correctas cuando las
instrucciones DELETE, INSERT y UPDATE quitan, agregan o modifican los
valores de las claves principal o externa. Las acciones DRI exigidas por las
restricciones FOREIGN KEY se pueden complementar con una lgica de
integridad referencial adicional definida en triggers en una tabla.

Restricciones
Las restricciones le permiten definir la manera en que SQL Server 2005
Database Engine exigir automticamente la integridad de una base de
datos. Las restricciones definen reglas relativas a los valores permitidos en
las columnas y constituyen el mecanismo estndar para exigir la integridad.
El uso de restricciones es preferible al uso de Desencadenadores DML,
reglas y valores predeterminados. El optimizador de consultas tambin utiliza
definiciones de restricciones para generar planes de ejecucin de consultas
de alto rendimiento.
Clases de restricciones
SQL Server 2005 admite las siguientes clases de restricciones:
NOT NULL especifica que la columna no acepta valores NULL. Para obtener
ms informacin, vea Permitir valores NULL.
Las restricciones CHECK exigen la integridad del dominio mediante la
limitacin de los valores que se pueden asignar a una columna. Una
restriccin CHECK especifica una condicin de bsqueda booleana (se
evala como TRUE, FALSE o desconocido) que se aplica a todos los valores
que se indican en la columna. Se rechazan todos los valores que se evalan
como FALSE. En una misma columna se pueden especificar varias
restricciones CHECK. En el siguiente ejemplo se muestra la creacin de la
restriccin chk_id. Esta restriccin aumenta las exigencias del dominio de la
clave principal asegurndose de que se indiquen para la clave solamente los
nmeros comprendidos en un intervalo especificado.
CREATE TABLE cust_sample ( cust_id int PRIMARY KEY,
cust_name char(50), cust_address char(50), cust_credit_limit
money, CONSTRAINT chk_id CHECK (cust_id BETWEEN 0 and
10000 ) )
Las restricciones UNIQUE exigen la unicidad de los valores de un conjunto
de columnas. En una restriccin UNIQUE, dos filas de la tabla no pueden
tener el mismo valor en las columnas. Las claves principales tambin exigen
exclusividad, pero no aceptan NULL como uno de los valores exclusivos.
Para obtener ms informacin, vea Restricciones UNIQUE.
Las restricciones PRIMARY KEY sealan la columna o el conjunto de
columnas cuyos valores identifican de forma exclusiva cada una de las filas
de
una
tabla.
Pgina 289 de 630

Dos filas de la tabla no pueden tener el mismo valor de clave principal. No se


pueden asignar valores NULL a ninguna de las columnas de una clave
principal. Se recomienda utilizar una columna pequea de tipo entero como
clave principal. Todas las tablas tienen que tener una clave principal. Una
columna o combinacin de columnas certificada como valor de clave principal
se denomina clave candidata. En el siguiente ejemplo se crea la tabla
part_sample y especifica el campo part_nmbr como clave principal.
CREATE TABLE part_sample (part_nmbr int PRIMARY KEY,
part_name char(30), part_weight decimal(6,2), part_color char(15)
);
Las restricciones FOREIGN KEY identifican y exigen las relaciones entre las
tablas. Para obtener ms informacin, vea Restricciones FOREIGN KEY. Una
clave externa de una tabla apunta a una clave candidata de otra tabla. En el
siguiente ejemplo, la tabla order_part establece una clave externa que hace
referencia a la tabla part_sample previamente definida.
CREATE TABLE order_part (order_nmbr int, part_nmbr int
FOREIGN KEY REFERENCES part_sample(part_nmbr) ON
DELETE NO ACTION, qty_ordered int); GO
No se puede insertar una fila que tenga un valor de clave externa,
excepto NULL, si no hay una clave candidata con dicho valor. La
clusula ON DELETE controla las acciones que se llevarn a
cabo si intenta eliminar una fila a la que apuntan las claves
externas existentes. La clusula ON DELETE tiene las siguientes
opciones:
NO ACTION especifica que la eliminacin produce un
error.
CASCADE especifica que tambin se eliminan todas las
filas con claves externas que apuntan a la fila eliminada.
SET NULL especifica que todas las filas con claves
externas que apuntan a la fila eliminada se establecen en
NULL.
SET DEFAULT especifica que todas las filas con claves
externas que apuntan a la fila eliminada se establecen en
sus valores predeterminados.
La clusula ON UPDATE define las acciones que se llevarn a cabo si intenta
actualizar un valor de clave candidata a la que apuntan las claves externas
existentes. Esta clusula tambin admite las opciones NO ACTION,
CASCADE, SET NULL y SET DEFAULT.
Restricciones de tabla y de columna
Las restricciones se dividen en restricciones de columna o restricciones de
tabla. La restriccin de columna se especifica como parte de una definicin
de columna y slo se aplica a esa columna. Las restricciones de los ejemplos
anteriores son restricciones de columna. Las restricciones de tabla se
declaran de forma independiente de la definicin de las columnas y se
pueden aplicar a varias columnas de la tabla. Las restricciones de tabla se
deben utilizar cuando una restriccin tiene que incluir varias columnas.
Por ejemplo, si una tabla tiene dos o ms columnas en la clave principal,
tiene que utilizar una restriccin de tabla para incluir dichas columnas en la
clave principal. Piense en una tabla que registra los sucesos de una mquina
Pgina 290 de 630

de una fbrica. Suponga que se pueden producir eventos de distintos tipos al


mismo tiempo, pero no se pueden producir dos eventos del mismo tipo a la
vez. Esto se puede garantizar en la tabla si se incluyen las columnas
event_type y event_time en una clave principal de dos columnas, tal como se
muestra en el siguiente ejemplo.
CREATE TABLE factory_process (event_type int, event_time datetime,
event_site char(50), event_desc char(1024), CONSTRAINT event_key
PRIMARY KEY (event_type, event_time) )

Informacin adicional sobre las restricciones


Un ndice creado para una restriccin no se puede quitar con DROP INDEX;
la restriccin debe quitarse con ALTER TABLE. Un ndice creado y utilizado
por una restriccin se puede volver a generar con DBCC DBREINDEX.
Los nombres de las restricciones deben seguir las reglas de los
identificadores, excepto en que el nombre no puede empezar por un signo
numrico (#). Si no se proporciona el parmetro constraint_name, se asigna a
la restriccin un nombre generado por el sistema. El nombre de la restriccin
aparece en todos los mensajes de error relativos a las infracciones de la
restriccin.
Cuando se infringe una restriccin en una instruccin INSERT, UPDATE o
DELETE, la instruccin finaliza. Sin embargo, si SET XACT_ABORT se
establece en OFF y la instruccin es parte de una transaccin explcita,
contina el procesamiento de la transaccin. Si SET XACT_ABORT se
establece en ON, se revierte toda la transaccin. La instruccin ROLLBACK
TRANSACTION tambin se puede utilizar con la definicin de transaccin al
comprobar la funcin @@ERROR del sistema.
Si ALLOW_ROW_LOCKS = ON y ALLOW_PAGE_LOCK = ON, los bloqueos
de nivel de fila, pgina y tabla se permiten al tener acceso al ndice. El
Database Engine elige el bloqueo apropiado y puede cambiar de escala el
bloqueo desde un bloqueo de fila o pgina a un bloqueo de tabla.. Si
ALLOW_ROW_LOCKS = OFF y ALLOW_PAGE_LOCK = OFF, slo se
permite un bloqueo de nivel de tabla al tener acceso al ndice.
Si una tabla tiene restricciones FOREIGN KEY o CHECK y
desencadenadores, las condiciones de restriccin se evalan antes de que
se ejecute el trigger.
Para obtener un informe de una tabla y sus columnas, utilice sp_help o
sp_helpconstraint. Para cambiar el nombre de una tabla, utilice sp_rename.
Para obtener un informe de las vistas y procedimientos almacenados que
dependen de una tabla, utilice sp_depends.

Restricciones PRIMARY KEY


Una tabla suele tener una columna o una combinacin de columnas cuyos
valores identifican de forma nica cada fila de la tabla. Estas columnas se
denominan claves principales de la tabla y exigen la integridad de entidad de
Pgina 291 de 630

la tabla. Puede crear una clave principal mediante la definicin de una


restriccin PRIMARY KEY cuando cree o modifique una tabla.
Una tabla slo puede tener una restriccin PRIMARY KEY y ninguna columna
a la que se aplique una restriccin PRIMARY KEY puede aceptar valores
NULL. Debido a que las restricciones PRIMARY KEY garantizan datos
nicos, con frecuencia se definen en una columna de identidad.
Cuando especifica una restriccin PRIMARY KEY en una tabla, SQL Server
2005 Database Engine exige la unicidad de los datos mediante la creacin de
un ndice nico para las columnas de clave principal. Este ndice tambin
permite un acceso rpido a los datos cuando se utiliza la clave principal en
las consultas. De esta forma, las claves principales que se eligen deben
seguir las reglas para crear ndices nicos.
Si se define una restriccin PRIMARY KEY para ms de una columna, puede
haber valores duplicados dentro de la misma columna, pero cada
combinacin de valores de todas las columnas de la definicin de la
restriccin PRIMARY KEY debe ser nica.
Como se muestra en la siguiente ilustracin, las columnas ProductID y
VendorID de la tabla Purchasing.ProductVendor forman una restriccin
PRIMARY KEY compuesta para esta tabla. As se garantiza que la
combinacin de ProductID y VendorID es nica.

Cuando trabaja con combinaciones, las restricciones PRIMARY KEY


relacionan una tabla con otra. Por ejemplo, para determinar los proveedores
que suministran determinados productos, puede utilizar una combinacin de
tres elementos entre las tablas Purchasing.Vendor, Production.Product y
Purchasing.ProductVendor. Puesto que ProductVendor contiene las
columnas de ProductID y VendorID, se puede obtener acceso a las tablas
Product y Vendor mediante su relacin con ProductVendor.

Una tabla slo puede incluir una restriccin PRIMARY KEY.


El ndice generado por una restriccin PRIMARY KEY no puede hacer que el
nmero de ndices de la tabla exceda de 249 ndices no agrupados y 1 ndice
agrupado.
Si no se especifica CLUSTERED o NONCLUSTERED para una restriccin
PRIMARY KEY, se utiliza CLUSTERED si no hay ndices agrupados
especificados para las restricciones UNIQUE.
Todas las columnas definidas en una restriccin PRIMARY KEY se deben
definir como NOT NULL. Si no se especifica la capacidad de aceptar valores
NULL, se establece la capacidad de aceptar valores NULL de todas las
columnas que participen en una restriccin PRIMARY KEY en NOT NULL.
Si la clave principal se define en una columna de tipo definido por el usuario
CLR, la implementacin del tipo debe admitir el orden binario.
Pgina 292 de 630

Restricciones UNIQUE
Puede utilizar restricciones UNIQUE para garantizar que no se escriben
valores duplicados en columnas especficas que no forman parte de una
clave principal. Tanto la restriccin UNIQUE como la restriccin PRIMARY
KEY exigen la unicidad; sin embargo, debe utilizar la restriccin UNIQUE y no
PRIMARY KEY si desea exigir la unicidad de una columna o una
combinacin de columnas que no forman la clave principal.
En una tabla se pueden definir varias restricciones UNIQUE, pero slo una
restriccin PRIMARY KEY.
Adems, a diferencia de las restricciones PRIMARY KEY, las restricciones
UNIQUE admiten valores NULL. Sin embargo, de la misma forma que
cualquier valor incluido en una restriccin UNIQUE, slo se admite un valor
NULL por columna.
Es posible hacer referencia a una restriccin UNIQUE con una restriccin
FOREIGN KEY.
Si no se especifica CLUSTERED o NONCLUSTERED para una restriccin
UNIQUE, de forma predeterminada se utiliza NONCLUSTERED.
Cada restriccin UNIQUE genera un ndice. El nmero de restricciones
UNIQUE no puede hacer que el nmero de ndices de la tabla exceda de 249
ndices no agrupados y 1 ndice agrupado.
Si se define una restriccin nica en una columna de tipo definido por el
usuario CLR, la implementacin del tipo debe admitir el orden binario o
basado en el operador.

Pgina 293 de 630

Restricciones FOREIGN KEY


Una clave externa (FK) es una columna o combinacin de columnas que se
utiliza para establecer y exigir un vnculo entre los datos de dos tablas. Puede
crear una clave externa mediante la definicin de una restriccin FOREIGN
KEY cuando cree o modifique una tabla.
En una referencia de clave externa, se crea un vnculo entre dos tablas
cuando las columnas de una de ellas hacen referencia a las columnas de la
otra que contienen el valor de clave principal. Esta columna se convierte en
una clave externa para la segunda tabla.
Por ejemplo, la tabla Sales.SalesOrderHeader de la base de datos
AdventureWorks tiene un vnculo a la tabla Sales.SalesPerson porque
existe una relacin lgica entre pedidos de ventas y personal de ventas. La
columna SalesPersonID de la tabla SalesOrderHeader coincide con la
columna de clave principal de la tabla SalesPerson. La columna
SalesPersonID de la tabla SalesOrderHeader es la clave externa para la
tabla SalesPerson.

No es necesario que una restriccin FOREIGN KEY est vinculada


nicamente a una restriccin PRIMARY KEY de otra tabla; tambin puede
definirse para que haga referencia a las columnas de una restriccin UNIQUE
de otra tabla. Una restriccin FOREIGN KEY puede contener valores NULL,
pero si alguna columna de una restriccin FOREIGN KEY compuesta
contiene valores NULL, se omitir la comprobacin de los valores que
Pgina 294 de 630

componen la restriccin FOREIGN KEY. Para asegurarse de que todos los


valores de la restriccin FOREIGN KEY compuesta se comprueben,
especifique NOT NULL en todas las columnas que participan.
Nota:
Una restriccin FOREIGN KEY puede hacer referencia a columnas de tablas
de la misma base de datos o a columnas de una misma tabla. Se denominan
tablas con referencia a s mismas. Suponga, por ejemplo, una tabla de
empleados con tres columnas: employee_number, employee_name y
manager_employee_number. Dado que el responsable tambin es un
empleado, hay una relacin de clave externa desde la columna
manager_employee_number a la columna employee_number.
Integridad referencial
Aunque el fin principal de una restriccin FOREIGN KEY es controlar los
datos que pueden almacenarse en la tabla de la clave externa; tambin
controla los cambios realizados en los datos de la tabla de la clave principal.
Por ejemplo, si se elimina la fila de un vendedor de la tabla
Sales.SalesPerson y el identificador del vendedor se utiliza para pedidos de
ventas en la tabla Sales.SalesOrderHeader, se rompe la integridad
relacional entre ambas tablas: los pedidos del vendedor eliminado quedarn
sin correspondencia en la tabla SalesOrderHeader sin ningn vnculo con los
datos de la tabla SalesPerson.
Con una restriccin FOREIGN KEY se evita esta situacin. Esta restriccin
exige la integridad referencial al garantizar que no se puedan realizar
cambios en los datos de la tabla de la clave principal si esos cambios anulan
el vnculo con los datos de la tabla de la clave externa. Si se intenta eliminar
la fila de una tabla de la clave principal o cambiar un valor de clave principal,
la accin no progresar si el valor de la clave principal cambiado o eliminado
corresponde a un valor de la restriccin FOREIGN KEY de otra tabla. Para
cambiar o eliminar una fila de una restriccin FOREIGN KEY, debe antes
eliminar o cambiar los datos de clave externa de la tabla de clave externa, lo
que vincula la clave externa con otros datos de clave principal.
Indexar restricciones FOREIGN KEY
La creacin de un ndice en una clave externa suele ser til por las siguientes
razones:
Los cambios en las restricciones PRIMARY KEY se comprueban con
restricciones FOREIGN KEY en las tablas relacionadas.
Las columnas de clave externa suelen utilizarse en los criterios de
combinacin cuando los datos de las tablas relacionadas se combinan en
consultas mediante la correspondencia de la columna o columnas de la
restriccin FOREIGN KEY de una tabla y la columna o columnas de la clave
nica o principal de la otra. Un ndice permite al SQL Server 2005 Database
Engine buscar con rapidez datos relacionados en la tabla de clave externa.
No obstante, no es necesario crear este ndice. Pueden combinarse los datos
de dos tablas relacionadas aunque no se hayan definido restricciones
PRIMARY KEY o FOREIGN KEY entre ellas, pero una relacin de clave
Pgina 295 de 630

externa entre dos tablas indica que stas se han optimizado para su
combinacin en una consulta que utilice las claves como criterio.
Nmero de restricciones FOREIGN KEY en una tabla
SQL Server no establece un lmite predefinido en el nmero de restricciones
FOREIGN KEY que una tabla puede incluir (que hagan referencia a otras
tablas) ni el nmero de restricciones FOREIGN KEY pertenecientes a otras
tablas que hagan referencia a determinada tabla. No obstante, el nmero real
de restricciones FOREIGN KEY se ve limitado por la configuracin de
hardware y el diseo de la base de datos y la aplicacin. Se recomienda que
una tabla no contenga ms de 253 restricciones FOREIGN KEY y que no sea
referencia para ms de 253 restricciones FOREIGN KEY. Tenga en cuenta el
costo de tiempo al exigir restricciones FOREIGN KEY cuando disee la base
de datos y las aplicaciones.
Si se especifica un valor distinto de NULL en la columna de una restriccin
FOREIGN KEY, el valor debe existir en la columna referenciada; de lo
contrario, se devolver un error de infraccin de clave externa.
Las restricciones FOREIGN KEY slo pueden hacer referencia a las tablas de
la misma base de datos en el mismo servidor. La integridad referencial entre
bases de datos debe implementarse a travs de desencadenadores.
Las restricciones FOREIGN KEY pueden hacer referencia a otras columnas
de la misma tabla. Esto se denomina autorreferencia.
La clusula REFERENCES de una restriccin FOREIGN KEY de nivel de
columna slo puede incluir una columna de referencia. Esta columna debe
tener el mismo tipo de datos que la columna en la que se define la restriccin.
La clusula REFERENCES de una restriccin FOREIGN KEY de nivel de
tabla debe tener el mismo nmero de columnas de referencia que el nmero
de columnas de la lista de columnas de la restriccin. El tipo de datos de
cada columna de referencia debe ser tambin el mismo que el de la columna
correspondiente de la lista de columnas.
No se puede especificar CASCADE, SET NULL o SET DEFAULT si una
columna del tipo timestamp forma parte de la clave externa o de la clave a la
que se hace referencia.
CASCADE, SET NULL, SET DEFAULT y NO ACTION se pueden combinar en
las tablas con relaciones referenciales entre s. Si Database Engine detecta
NO ACTION, detiene y revierte las acciones CASCADE, SET NULL y SET
DEFAULT relacionadas. Cuando una instruccin DELETE hace que se
combinen las acciones CASCADE, SET NULL, SET DEFAULT y NO ACTION,
todas las acciones CASCADE, SET NULL y SET DEFAULT se aplican antes
de que Database Engine (Motor de base de datos) compruebe la existencia
de NO ACTION.
Las restricciones FOREIGN KEY no se exigen en tablas temporales.
Las restricciones FOREIGN KEY slo pueden hacer referencia a las
columnas de las restricciones PRIMARY KEY o UNIQUE de la tabla de
referencia o a las columnas en UNIQUE INDEX de la tabla de referencia.
Si la clave externa se define en una columna de tipo definido por el usuario
CLR, la implementacin del tipo debe admitir el orden binario. Una columna
de tipo varchar(max) puede participar en una restriccin FOREIGN KEY slo
Pgina 296 de 630

si la clave principal a la que hace referencia se define tambin como un tipo


varchar(max).

Restricciones CHECK
Las restricciones CHECK exigen la integridad del dominio mediante la
limitacin de los valores que puede aceptar una columna. Son similares a las
restricciones FOREIGN KEY porque controlan los valores que se colocan en
una columna. La diferencia estriba en la forma en que determinan los valores
vlidos: las restricciones FOREIGN KEY obtienen la lista de valores vlidos
de otra tabla, mientras que las restricciones CHECK determinan los valores
vlidos a partir de una expresin lgica que no se basa en datos de otra
columna. Por ejemplo, es posible limitar el intervalo de valores para una
columna salary creando una restriccin CHECK que slo permita datos entre
15.000 y 100.000 dlares. De este modo se impide que se escriban salarios
superiores al intervalo de salario normal.
Puede crear una restriccin CHECK con cualquier expresin lgica
(booleana) que devuelva TRUE (verdadero) o FALSE (falso) basndose en
operadores lgicos. Para el ejemplo anterior, la expresin lgica sera: salary
>= 15000 AND salary <= 100000.
Puede aplicar varias restricciones CHECK a una sola columna. Tambin
puede aplicar una sola restriccin CHECK a varias columnas si se crea en el
nivel de la tabla. Por ejemplo, una restriccin CHECK para varias columnas
se puede utilizar para confirmar que cualquier fila con un valor USA en la
columna country/region tiene tambin un valor de dos caracteres en la
columna state. As se pueden comprobar varias condiciones en un mismo
sitio.
Advertencia:
Las restricciones que incluyen la conversin de tipos de datos implcitos o
explcitos pueden impedir la correcta ejecucin de determinadas operaciones.
Por ejemplo, las restricciones definidas en tablas que son orgenes de un
cambio de particin pueden impedir que una operacin ALTER
TABLE...SWITCH se realice correctamente. Evite la conversin de tipos de
datos en las definiciones de las restricciones.

Limitaciones de las restricciones CHECK


Las restricciones CHECK rechazan los valores que se evalan como FALSE.
Puesto que los valores nulos se evalan como UNKNOWN, su presencia en
las expresiones puede reemplazar una restriccin. Por ejemplo, supongamos
que coloca una restriccin en una columna int MyColumn que especifica que
MyColumn slo puede contener el valor 10 (MyColumn = 10). Si inserta el
valor NULL en MyColumn, SQL Server 2005 Database Engine inserta NULL
y no devuelve un error.
Pgina 297 de 630

Una restriccin CHECK devuelve TRUE cuando la condicin que est


comprobando no es FALSE para ninguna fila de la tabla. Si una tabla recin
creada no tiene filas, cualquier restriccin CHECK en esta tabla se
considerar vlida. Esta situacin puede generar resultados inesperados,
como en el siguiente ejemplo.
CREATE TABLE CheckTbl (col1 int, col2 int); GO CREATE FUNCTION
CheckFnctn() RETURNS int AS BEGIN DECLARE @retval int SELECT
@retval = COUNT(*) FROM CheckTbl RETURN @retval END; GO ALTER
TABLE
CheckTbl
ADD
CONSTRAINT
chkRowCount
CHECK
(dbo.CheckFnctn() >= 1 ); GO.
La restriccin CHECK que se agrega especifica que como mnimo debe
existir una fila en la tabla CheckTbl. Sin embargo, puesto que no hay filas en
la tabla contra la que se comprueba la condicin de esta restriccin, la
instruccin ALTER TABLE ser correcta.
Las restricciones CHECK no se validan durante las instrucciones DELETE.
Por lo tanto, la ejecucin de instrucciones DELETE en las tablas con ciertos
tipos de restricciones de comprobacin puede generar resultados
inesperados. Por ejemplo, imaginemos que las siguientes instrucciones se
ejecutan en la tabla CheckTbl.
INSERT INTO CheckTbl VALUES (10, 10) GO DELETE CheckTbl WHERE
col1 = 10;
La instruccin DELETE ser correcta aunque la restriccin CHECK
especifique que la tabla CheckTbl debe tener al menos 1 fila.

Una columna puede tener cualquier nmero de restricciones CHECK y la


condicin puede incluir varias expresiones lgicas combinadas con AND y
OR. Varias restricciones CHECK para una columna se validan en el orden en
que se crean.
La condicin de bsqueda debe evaluarse como una expresin booleana y
no puede hacer referencia a otra tabla.
Una restriccin CHECK en el nivel de columna slo puede hacer referencia a
la columna restringida y una restriccin CHECK en el nivel de tabla slo
puede hacer referencia a columnas de la misma tabla. Las restricciones
CHECK y las reglas sirven para la misma funcin de validacin de los datos
durante las instrucciones INSERT y UPDATE.
Cuando hay una regla y una o ms restricciones CHECK para una o varias
columnas, se evalan todas las restricciones.
Las restricciones CHECK no se pueden definir en las columnas de tipo text,
ntext o image.

Pgina 298 de 630

Definiciones DEFAULT
Cada columna de un registro debe contener un valor, aunque sea un valor
NULL. Puede haber situaciones en las que se deba cargar una fila de datos
en una tabla, pero no conozca el valor de una columna o el valor ya no exista.
Si la columna se aceptan valores NULL, puede cargar la fila con un valor
NULL. Pero, dado que puede no resultar conveniente utilizar columnas que
acepten valores NULL, una mejor solucin podra ser establecer una
definicin DEFAULT para la columna siempre que sea necesario. Por
ejemplo, es habitual especificar el valor cero como valor predeterminado para
las columnas numricas, o N/D (no disponible) como valor predeterminado
para las columnas de cadenas cuando no se especifica ningn valor.
Al cargar una fila en una tabla con una definicin DEFAULT para una
columna, se indica implcitamente a SQL Server 2005 Database Engine que
cargue un valor predeterminado en la columna en la que no se haya
especificado ningn valor.
Nota:
Tambin puede indicarle explcitamente a Database Engine (Motor de base
de datos) que inserte un valor predeterminado para una columna mediante la
clusula DEFAULT VALUES de la instruccin INSERT STATEMENT.
Si una columna no permite valores NULL y no tiene una definicin DEFAULT,
deber especificar explcitamente un valor para la columna o Database
Engine (Motor de base de datos) devolver un error para indicar que la
columna no permite valores NULL.
El valor insertado en una columna que se define mediante la combinacin de
la definicin DEFAULT y la aceptacin de valores NULL de la columna puede
resumirse segn se muestra en siguiente la tabla.
Definicin
de columna

Permite
valores
NULL
No permite
valores
NULL

Ninguna
entrada,
ninguna
definicin
DEFAULT
NULL

Ninguna entrada,
definicin DEFAULT

Especifique
un valor NULL

Valor
predeterminado

NULL

Error

Valor
predeterminado

Error

Una tabla slo puede incluir una definicin DEFAULT.


Una definicin DEFAULT puede contener valores constantes, funciones o
NULL.

Pgina 299 de 630

En una definicin DEFAULT, constant_expression no puede hacer referencia


a otra columna de la tabla o a otras tablas, vistas o procedimientos
almacenados.
Las definiciones DEFAULT no se pueden crear en columnas con un tipo de
datos timestamp o en columnas con la propiedad IDENTITY.
Las definiciones DEFAULT no se pueden crear para columnas con tipos de
datos de alias si stos estn enlazados con un objeto predeterminado.

Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 3
Objetos Avanzados

2007

Pgina 300 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 301 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 302 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 303 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 304 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 305 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 306 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 307 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 308 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 309 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 310 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 311 de 630

Unidad 3: Objetos Avanzados


Objetivos
Dar una visin acerca de algunos Objetos importantes de
SQL Server 2005:
e. Vistas
f. Sinnimos

Pgina 312 de 630

Vistas
Una vista se puede considerar una tabla virtual o una consulta almacenada.
Si la vista no est indexada, sus datos no se almacenan en la base de datos
como un objeto diferente. Lo que se almacena en la base de datos es una
instruccin SELECT. El resultado de la instruccin SELECT forma la tabla
virtual que devuelve la vista. El usuario puede utilizar dicha tabla virtual
haciendo referencia al nombre de la vista en instrucciones Transact-SQL, de
la misma forma en que se hace referencia a las tablas.
En esta seccin se proporciona la informacin necesaria para comprender,
disear y crear vistas.
Tema
Descripcin de
vistas
Disear e
implementar
vistas
Modificar vistas

Descripcin
Se explican los conceptos de vista, los tipos de vistas y los
escenarios para utilizar las vistas, con ejemplos.
Se proporcionan directrices especficas para disear vistas
estndar, indexadas y con particiones, con vnculos a los temas
necesarios para crear vistas.
Se describen los procedimientos y se incluyen los vnculos
necesarios para modificar la definicin de una vista, modificar
datos mediante una vista y eliminar una vista.

Descripcin de Vistas
Una vista es una tabla virtual cuyo contenido est definido por una consulta.
Al igual que una tabla real, una vista consta de un conjunto de columnas y
filas de datos con un nombre. Sin embargo, a menos que est indexada, una
vista no existe como conjunto de valores de datos almacenados en una base
de datos. Las filas y las columnas de datos proceden de tablas a las que se
hace referencia en la consulta que define la vista y se producen de forma
dinmica cuando se hace referencia a la vista.
Una vista acta como filtro de las tablas subyacentes a las que se hace
referencia en ella. La consulta que define la vista puede provenir de una o de
varias tablas, o bien de otras vistas de la base de datos actual u otras bases
de datos. Asimismo, es posible utilizar las consultas distribuidas para definir
vistas que utilicen datos de orgenes heterogneos. Esto puede resultar de
utilidad, por ejemplo, si desea combinar datos de estructura similar que
proceden de distintos servidores, cada uno de los cuales almacena los datos
para una regin distinta de la organizacin.
Las consultas distribuidas obtienen acceso a datos de varios orgenes de
datos heterogneos. Estos orgenes de datos pueden estar almacenados en
el mismo equipo o en equipos diferentes. Microsoft SQL Server 2005 admite
consultas distribuidas utilizando OLE DB.
No existe ninguna restriccin a la hora de consultar vistas y muy pocas
restricciones a la hora de modificar los datos de stas.
En esta ilustracin se muestra una vista basada en dos tablas.

Pgina 313 de 630

Disear e implementar Vistas


Antes de crear una vista, considere las siguientes indicaciones:
Slo puede crear vistas en la base de datos actual. Sin embargo, las tablas y
las vistas a las que se haga referencia desde la nueva vista pueden
encontrarse en otras bases de datos e, incluso, en otros servidores, si la vista
se define mediante consultas distribuidas.
Los nombres de las vistas deben seguir las reglas que se aplican a los
identificadores y ser nicos para cada esquema. Adems, el nombre debe ser
distinto del de las tablas incluidas en ese esquema. (Un esquema es un
contenedor que contiene tablas, vistas, procedimientos, etc. Se encuentra
dentro de una base de datos, que a su vez est dentro de un servidor. Estas
entidades se acomodan como cajas anidadas.).
Se pueden generar vistas dentro de otras vistas. Microsoft SQL Server 2005
permite anidar vistas. El anidamiento no debe superar los 32 niveles.
Posiblemente el lmite real del anidamiento de vistas sea inferior en funcin
de la complejidad de la vista y de la memoria disponible.
No puede asociar con las vistas reglas ni definiciones DEFAULT. (Las reglas
son una caracterstica de compatibilidad con versiones anteriores que
realizan algunas de las mismas funciones que las restricciones CHECK. Es
preferible el uso de restricciones CHECK, que son la forma estndar para
restringir los valores de una columna. Las restricciones CHECK son tambin
ms concisas que las reglas. Slo se puede aplicar una regla a una columna,
mientras que se le pueden aplicar varias restricciones CHECK. Las
restricciones CHECK se especifican como parte de la instruccin CREATE
TABLE, mientras que las reglas se crean como objetos separados que
despus se asocian a la columna.)
Los desencadenadores AFTER no se pueden asociar con las vistas; slo se
pueden asociar los desencadenadores INSTEAD OF.
Pgina 314 de 630

La consulta que define la vista no puede incluir las clusulas COMPUTE ni


COMPUTE BY, y tampoco puede incluir la palabra clave INTO.
La consulta que define la vista no puede incluir la clusula ORDER BY, a
menos que tambin haya una clusula TOP en la lista de seleccin de la
instruccin SELECT.
La consulta que define la vista no puede incluir la clusula OPTION que
especifica una sugerencia de consulta.
La consulta que define la vista no puede incluir la clusula TABLESAMPLE.
No se pueden definir ndices de texto completo en las vistas.
No se pueden crear vistas temporales, ni vistas dentro de tablas temporales.
Las vistas, las tablas o las funciones que participan en una vista creada con
la clusula SCHEMABINDING no se pueden quitar, a menos que se quite o
cambie esa vista de forma que deje de tener un enlace de esquema. Adems,
las instrucciones ALTER TABLE sobre tablas que participan en vistas que
tienen enlaces de esquemas provocarn un error si estas instrucciones
afectan a la definicin de la vista.
Si una vista no se crea con la clusula SCHEMABINDING, debe ejecutarse
sp_refreshview cuando se realicen cambios en los objetos subyacentes de la
vista que afecten a la definicin de sta. De lo contrario, la vista puede
generar resultados inesperados cuando se realiza una consulta.
No puede emitir consultas de texto completo en una vista, aunque una
definicin de vista puede incluir una consulta de texto completo si sta hace
referencia a una tabla configurada para la indizacin de texto completo.
Debe especificar el nombre de todas las columnas de la vista en el caso de
que:
o Alguna de las columnas de la vista derive de una expresin
aritmtica, una funcin integrada o una constante.
o Dos o ms columnas de la vista tuviesen, en caso
contrario, el mismo nombre (normalmente, debido a que la
definicin de la vista incluye una combinacin y las
columnas de dos o ms tablas diferentes tienen el mismo
nombre).
o Desee darle a una columna de la vista un nombre distinto
del de la columna de la que deriva. (Tambin puede
cambiar el nombre de las columnas en la vista). Una
columna de una vista hereda los tipos de datos de la
columna de la que deriva, aunque no cambie su nombre.
Nota:
Esta regla no se aplica cuando una vista se basa en una
consulta que contiene una combinacin externa, ya que las
columnas pueden cambiar al pasar de no permitir valores NULL
a permitirlos.
o De lo contrario, no necesitar especificar nombres de
columnas cuando cree la vista. SQL Server asigna a las
columnas de la vista los mismos nombres y tipos de datos
de las columnas a las que se hace referencia en la
consulta que define la vista. La lista de seleccin puede ser
Pgina 315 de 630

una enumeracin completa o parcial de los nombres de las


columnas de las tablas base.
Para crear una vista, debe contar con el permiso del owner de la base de
datos y, si la vista se crea con la clusula SCHEMABINDING, debe contar
tambin con los permisos correspondientes para las tablas o las vistas a las
que se haga referencia en la definicin de la vista.
De forma predeterminada, a medida que se agregan o se actualizan filas
mediante una vista, stas desaparecen del mbito de la vista cuando dejan
de cumplir los criterios de la consulta que define la vista. Por ejemplo, se
puede crear una consulta que defina una vista cuya misin sea recuperar
todas las filas de una tabla en las que el salario del empleado no supere los
30.000 dlares. Si el salario del empleado asciende a 32.000 dlares, la
consulta de la vista ya no mostrar la fila correspondiente a ese empleado, ya
que su salario no cumple el criterio especificado por la vista. No obstante, la
clusula WITH CHECK OPTION exige que todas las instrucciones de
modificacin de datos ejecutadas en la vista se ajusten a los criterios
especificados en la instruccin SELECT que define la vista. Si utiliza esta
clusula, no podr modificar las filas de forma que desaparezcan de la vista.
Cualquier modificacin que provoque esto, se anula y aparece un error.
Se puede cifrar la definicin de una vista con el fin de que nadie pueda tener
acceso a ella, incluido el propietario de la vista.
Para crear una vista se utiliza la sentencia:
CREATE VIEW (Transact-SQL)
Crea una tabla virtual que representa los datos de una o ms tablas de una
forma alternativa. CREATE VIEW debe ser la primera instruccin en un lote
de consultas.
Nota:
Una vista slo se puede crear en la base de datos actual. Una vista
puede tener un mximo de 1.024 columnas.

Cuando se realiza una consulta a travs de una vista, el Database Engine se


asegura de que todos los objetos de base de datos a los que se hace
referencia en algn lugar de la instruccin existen, que son vlidos en el
contexto de la instruccin y que las instrucciones de modificacin de datos no
infringen ninguna regla de integridad de los datos. Las comprobaciones que
no son correctas devuelven un mensaje de error. Las comprobaciones
correctas traducen la accin a una accin con las tablas subyacentes.
Si una vista depende de una tabla o vista que se ha quitado, el Database
Engine (Motor de base de datos) genera un mensaje de error si alguien trata
de utilizar la vista. Si se crea una nueva tabla o vista y la estructura de la
tabla no cambia con respecto a la tabla base anterior para sustituir a la
Pgina 316 de 630

eliminada, se puede volver a utilizar la vista. Si cambia la estructura de la


nueva tabla o vista, es necesario eliminar la vista y volver a crearla.
Cuando se crea una vista, la informacin sobre ella se almacena en estas
vistas de catlogo: sys.views, sys.columns y sys.sql_dependencies. El texto
de la instruccin CREATE VIEW se almacena en la vista de catlogo
sys.sql_modules.
El resultado de una consulta que utiliza un ndice de una vista definido con
expresiones numeric o float podra diferir de una consulta similar que no
utiliza el ndice de la vista. Esta diferencia se podra deber a errores de
redondeo durante las acciones INSERT, DELETE o UPDATE en las tablas
subyacentes.
Cuando se crea una vista, el Database Engine (Motor de base de datos)
guarda la configuracin de SET QUOTED_IDENTIFIER y SET ANSI_NULLS.
Esta configuracin original se utiliza para analizar la vista cuando sta se
utiliza. Por tanto, cualquier configuracin de sesin de cliente de SET
QUOTED_IDENTIFIER y SET ANSI_NULLS no afecta a la definicin de la
vista cuando se obtiene acceso a ella.
Nota:
El valor de nivel de compatibilidad determina si el Database Engine (Motor de
base de datos) interpreta una cadena vaca como un espacio nico o como
una cadena vaca verdadera. Si el nivel de compatibilidad es menor o igual
que 65, el Database Engine (Motor de base de datos) interpreta las cadenas
vacas como espacios nicos. Si el nivel de compatibilidad es mayor o igual
que 70, el Database Engine (Motor de base de datos) interpreta las cadenas
vacas como cadenas vacas.

Modificar Vistas
Los siguientes temas proporcionan informacin necesaria para modificar la
definicin de una vista, modificar los datos por medio de una vista, consultar
los metadatos de una vista y quitar vistas.
Modificar y cambiar el nombre de una vista
Modificar datos mediante una vista
Obtener informacin acerca de una vista
Eliminar una vista
Modificar y cambiar el nombre de una vista
Despus de definir una vista, puede cambiar su nombre o modificar su
definicin sin tener que quitar la vista ni volver a crearla. Quitar una vista y
volver a crearla provoca que se pierdan los permisos asociados a la ella.
Cuando vaya a cambiar el nombre de una vista, tenga en cuenta las
siguientes directrices:
La vista cuyo nombre vaya a cambiar debe encontrarse en la base de datos
actual.
El nuevo nombre debe seguir las reglas definidas para los identificadores.
Pgina 317 de 630

Slo puede cambiar el nombre de las vistas para las que tiene permiso.
El propietario de la base de datos puede cambiar el nombre de las vistas de
cualquier usuario.
La modificacin de una vista no afecta a los objetos dependientes, como
pueden ser los procedimientos almacenados o los desencadenadores, a
menos que la definicin de la vista cambie de tal modo que el objeto
dependiente deje de ser vlido. Por ejemplo, una vista employees_view de la
base de datos AdventureWorks se define como:
CREATE VIEW employees_view
AS
SELECT EmployeeID FROM HumanResources.Employee
El procedimiento almacenado employees_proc se define como:

CREATE PROC employees_proc


AS
SELECT EmployeeID from employees_view
La vista employees_view se modifica para recuperar la columna LastName,
en vez de EmployeeID:

ALTER VIEW employees_view


AS
SELECT LastName FROM Person.Contact c
JOIN HumanResources.Employee e ON c.ContactID =
e.ContactID
Ahora, el procedimiento almacenado employees_proc da lugar a un error
cuando se ejecuta, porque la columna EmployeeID ya no se encuentra en la
vista.
Tambin puede modificar una vista para cifrar su definicin o para garantizar
que todas las instrucciones que impliquen una modificacin de datos y que se
ejecuten en la vista sigan los criterios especificados en la instruccin SELECT
que define la vista.
Para modificar una vista se utiliza la sentencia:
ALTER VIEW (Transact-SQL)
Modifica una vista creada anteriormente. Esto incluye una vista indizada.
ALTER VIEW no afecta a desencadenadores ni procedimientos almacenados
dependientes y no cambia permisos.
Nota:
Si la anterior definicin de vista se cre utilizando WITH ENCRYPTION o
CHECK OPTION, estas opciones slo se habilitan si se incluyen en
ALTER VIEW.

Pgina 318 de 630

Si una vista que est actualmente en uso se modifica mediante ALTER


VIEW, el Database Engine (Motor de base de datos) impone un bloqueo
exclusivo de esquema sobre la vista. Cuando se concede el bloqueo, y no
hay usuarios activos de la vista, el Database Engine (Motor de base de datos)
elimina todas las copias de la vista de la cach de procedimientos. Los
planes existentes que hacen referencia a la vista permanecen en la cach,
pero se vuelven a compilar cuando se llaman.
ALTER VIEW se puede aplicar a vistas indizadas; no obstante, quita
incondicionalmente todos los ndices de la vista.
Permisos
Para ejecutar ALTER VIEW, como mnimo, se necesita el permiso ALTER en
OBJECT.
Ejemplos
En el siguiente ejemplo se crea una vista que contiene todos los empleados y
sus fechas de contratacin denominada EmployeeHireDate. Se conceden
permisos sobre la vista, pero los requisitos se han cambiado para seleccionar
los empleados que tienen fechas de contratacin anteriores a una fecha
determinada. A continuacin, se utiliza ALTER VIEW para reemplazar la
vista.
La vista debe cambiarse para que incluya slo a los empleados que se
contrataron antes de 1997. Si no se utiliza ALTER VIEW, sino que la vista se
quita y se vuelve a crear, deben volver a crearse la instruccin GRANT
utilizada anteriormente y cualquier otra instruccin relacionada con permisos
pertenecientes a esta vista.

Modificar datos mediante una vista


Puede modificar los datos de una tabla base subyacente a travs de una
vista, de la misma forma que se modifican los datos de una tabla mediante
las instrucciones UPDATE, INSERT y DELETE, o mediante la utilidad bcp y
la instruccin BULK INSERT. No obstante, las siguientes restricciones se
aplican a la actualizacin de vistas, pero no a las tablas:
Nota:
Algunas de las siguientes restricciones no se aplican a vistas con particiones
y ninguna de las restricciones se aplica a actualizaciones que se lleven a cabo
por medio de desencadenadores INSTEAD OF. Para obtener ms
informacin, vea "Otras opciones para modificar datos mediante una vista"
ms adelante en este tema.
Cualquier modificacin, incluidas las instrucciones UPDATE, INSERT y
DELETE, debe hacer referencia a las columnas de una nica tabla base.
Las columnas que se vayan a modificar en la vista deben hacer referencia
directa a los datos subyacentes de las columnas de la tabla. No se pueden
obtener de ninguna otra forma, como las siguientes:
Una funcin de agregado (AVG, COUNT, SUM, MIN,
MAX, GROUPING, STDEV, STDEVP, VAR y VARP).

Un clculo; la columna no se puede calcular a partir de


una expresin que utilice otras columnas. Las columnas
Pgina 319 de 630

formadas con operadores de conjunto (UNION, UNION


ALL, CROSSJOIN, EXCEPT e INTERSECT) equivalen a
un clculo y tampoco se pueden actualizar.
Las columnas que se modifican no pueden verse afectadas por clusulas
GROUP BY, HAVING ni DISTINCT.
No se puede usar TOP en ninguna parte de select_statement de la vista
cuando se especifica tambin WITH CHECK OPTION.
Las restricciones anteriores se aplican a cualquier subconsulta de la clusula
FROM de la vista, al igual que a la propia vista. Por lo general, Microsoft SQL
Server 2005 debe poder realizar claramente el seguimiento de modificaciones
desde la definicin de vista a una tabla base. Por ejemplo, la siguiente vista
no se puede actualizar:

CREATE VIEW TotalSalesContacts


AS
SELECT C.LastName,
SUM(O.TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader O, Person.Contact C
WHERE C.ContactID = O.ContactID
GROUP BY LastName
Una modificacin efectuada en la columna LastName de TotalSalesContacts
no sera aceptable porque la columna se ha visto afectada por una clusula
GROUP BY. Si existe ms de una instancia de un mismo apellido, SQL
Server no sabra cul actualizar, insertar o eliminar. Asimismo, cualquier otro
intento de modificar la columna TotalSales de TotalSalesContacts
devolvera un error, porque es una columna derivada de una funcin de
agregado. SQL Server no puede hacer el seguimiento de esta columna
directamente hasta su tabla base, SalesOrderHeader.
Se aplican las siguientes directrices adicionales:
Todas las instrucciones de modificacin de datos que se ejecuten en la vista
deben cumplir los criterios especificados en la instruccin SELECT que la
definen, en caso de utilizar la clusula WITH CHECK OPTION en su
definicin. Si se utiliza esta clusula, no es posible modificar las filas de forma
que desaparezcan de la vista. Cualquier modificacin que provoque esto se
anula y aparece un error.
Las instrucciones INSERT deben especificar valores para las columnas de la
tabla subyacente que no permiten valores NULL y no tienen definiciones
DEFAULT.
Los datos modificados en las columnas de la tabla subyacente se ajustan a
las condiciones que afectan a esas columnas, como la capacidad de aceptar
de valores NULL, las restricciones, las definiciones DEFAULT, etc. Por
ejemplo, si se elimina una fila, todas las restricciones FOREIGN KEY
subyacentes de las tablas relacionadas deben cumplirse para que pueda
llevarse a cabo la eliminacin.
Una vista con particiones distribuidas (vista remota) no se puede actualizar
mediante un cursor controlado por conjunto de claves. Esta restriccin se
Pgina 320 de 630

puede resolver declarando el cursor en las tablas subyacentes, y no en la


propia vista.
En una vista no se pueden utilizar las instrucciones READTEXT y
WRITETEXT con columnas text, ntext o image.

Obtener informacin acerca de una vista


Puede obtener informacin acerca de la definicin de una vista siempre que
no est cifrada. Es posible que necesite ver la definicin de la vista para
entender cmo derivan sus datos de las tablas de origen o para ver los datos
que ella misma define.
Las vistas se consultan de la misma manera que cualquier tabla. No
obstante, se omiten las sugerencias de tabla que se utilizan al consultar la
vista. Para obtener ms informacin acerca de las sugerencias de tabla, vea
SELECT (Transact-SQL).
Si cambia el nombre de un objeto al que hace referencia una vista, deber
modificar sta para que el texto refleje el nuevo nombre. Por lo tanto, antes
de cambiar el nombre de un objeto, observe las dependencias del mismo a
fin de determinar si el cambio propuesto afecta a alguna vista.
Para obtener informacin acerca de una vista, pueden utilizarse los
siguientes comandos:
sys.views (Transact-SQL)
sys.columns (Transact-SQL)
sp_helptext (Transact-SQL)
Para ver los datos definidos por una vista se utiliza el comando:
SELECT (Transact-SQL)
Para ver la dependencia de una vista se utiliza el comando:
sys.sql_dependencies (Transact-SQL)

Eliminar una vista


Despus de crear una vista, puede eliminarla si no la necesita o si desea
borrar la definicin de la vista y los permisos asociados. Cuando se elimina
una vista, las tablas y los datos en los que est basada no se ven afectados.
Se producen errores al ejecutar las consultas, en el caso de que stas utilicen
objetos que dependen de la vista eliminada y a menos que se cree otra vista
con el mismo nombre. No obstante, si la nueva vista no incluye columnas
Pgina 321 de 630

esperadas por los objetos dependientes de la misma, las consultas que


utilicen los objetos que dependen de la vista dan lugar a errores cuando se
ejecutan. Por ejemplo, la vista my_view que recupera todas las columnas de
la tabla HumanResources.Employee de la base de datos AdventureWorks
se elimina y se reemplaza con una nueva vista denominada my_view. Esta
vista recupera en su lugar todas las columnas de la tabla
Production.Product. Los procedimientos almacenados que hagan referencia
a columnas de la tabla Employee subyacente de my_view generan ahora un
error porque dichas columnas ya no aparecen en la vista. En su lugar, son
sustituidas por las columnas de la tabla Product.
Para eliminar una vista se utiliza la sentencia:
DROP VIEW (Transact-SQL)
Quita una o ms vistas de la base de datos actual. DROP VIEW se puede
ejecutar en vistas indexadas.
Nota:
Cuando se quita una vista, la definicin y otra informacin de la vista se
elimina del catlogo del sistema. Tambin se eliminan todos los permisos de
la vista.
Las vistas de una tabla que se ha quitado mediante DROP TABLE se deben
quitar explcitamente con DROP VIEW.
Cuando se ejecuta en una vista indizada, DROP VIEW quita
automticamente todos los ndices de una vista. Para mostrar todos los
ndices de una vista, utilice sp_helpindex.
Cuando se realiza una consulta a travs de una vista, el SQL Server 2005
Database Engine de Microsoft comprueba que todos los objetos de base de
datos a los que se hace referencia en la instruccin existen, que son vlidos
en el contexto de la instruccin y que las instrucciones de modificacin de
datos no infringen ninguna regla de integridad de los datos. Las
comprobaciones que no son correctas devuelven un mensaje de error. Las
comprobaciones correctas traducen la accin a una accin contra la tabla o
las tablas subyacentes. Si las vistas o tablas subyacentes han cambiado
desde que se cre la vista, puede ser til quitar y volver a crear la vista.
Permisos:Para ejecutar DROP VIEW, como mnimo, se necesita el permiso
ALTER en SCHEMA o el permiso CONTROL en OBJECT.

Sinnimos
Un sinnimo es un objeto de base de datos que sirve para los siguientes
objetivos:
Proporciona un nombre alternativo para otro objeto de base de datos,
denominado objeto base, que puede existir en un servidor local o remoto.
Pgina 322 de 630

Proporciona una capa de abstraccin que protege una aplicacin cliente de


cambios realizados en el nombre o la ubicacin del objeto base.
Por ejemplo, suponga la tabla Employee de Adventure Works, situada en un
servidor denominado Server1. Para hacer referencia a esta tabla desde otro
servidor, Server2, una aplicacin cliente tendra que usar el nombre de
cuatro partes Server1.AdventureWorks.Person.Employee. Adems, si la
ubicacin de la tabla cambiara, por ejemplo a otro servidor, la aplicacin
cliente debera modificarse para reflejar ese cambio.
Para solucionar ambas cosas, puede crear un sinnimo, EmpTable, en
Server2 para la tabla Employee en Server1. Ahora la aplicacin cliente slo
tiene que usar el nombre de una parte, EmpTable, para hacer referencia a la
tabla Employee. Adems, si la ubicacin de la tabla Employee cambia,
tendr que modificar el sinnimo, EmpTable, para que apunte a la nueva
ubicacin de la tabla Employee. Puesto que no hay ninguna instruccin
ALTER SYNONYM, primero tiene que quitar el sinnimo, EmpTable, y, a
continuacin, volver a crearlo con el mismo nombre, pero apuntando a la
nueva ubicacin de Employee.
Un sinnimo pertenece a un esquema y, al igual que otros objetos de un
esquema, el nombre de un sinnimo debe ser nico. Puede crear sinnimos
para los siguientes objetos de base de datos:
Procedimiento almacenado del
ensamblado (CLR)
Funcin escalar del ensamblado (CLR)
Procedimiento de filtro de rplica
Funcin escalar de SQL
Funcin SQL con valores de tabla en lnea
Ver
1

Funcin con valores de tabla del


ensamblado (CLR)
Funcin de agregado del ensamblado (CLR)
Procedimiento almacenado extendido
Funcin SQL con valores de tabla
Procedimiento almacenado de SQL
Tabla1 (definida por el usuario)

Incluye tablas temporales locales y globales

Nota:
No pueden usarse nombres de cuatro partes para objetos base de funcin.
Un sinnimo no puede ser el objeto base de otro sinnimo y un sinnimo no
puede hacer referencia a una funcin de agregado definida por el usuario.
El enlace entre un sinnimo y su objeto base slo es mediante el nombre.
Todas las comprobaciones de existencia, tipo y permisos en el objeto base se
posponen hasta la ejecucin. Por tanto, el objeto base puede modificarse,
quitarse o quitarse y reemplazarse por otro objeto con el mismo nombre que
el objeto base original.
Por ejemplo, suponga un sinnimo, MyContacts, que hace referencia a la
tabla Person.Contact de Adventure Works. Si la tabla Contact se quita y
reemplaza por una vista llamada Person.Contact, MyContacts ahora hace
referencia a la vista Person.Contact.
Las referencias a sinnimos no estn enlazadas a esquema. Por tanto, un
sinnimo puede quitarse en cualquier momento. Sin embargo, al quitar un
Pgina 323 de 630

sinnimo se corre el riesgo de dejar referencias pendientes al sinnimo


quitado. Estas referencias slo se encontrarn en tiempo de ejecucin.
Sinnimos y esquemas
Si tiene un esquema predeterminado que no posee y desea crear un
sinnimo, debe calificar el nombre del sinnimo con el nombre de un
esquema que posea. Por ejemplo, si posee un esquema x, pero y es su
esquema predeterminado y utiliza la instruccin CREATE SYNONYM, debe
poner un prefijo al nombre del sinnimo con el esquema x, en lugar de
asignar un nombre al sinnimo mediante un nombre con una sola parte.
Para crear un sinnimo se utiliza la sentencia:
CREATE SYNONYM (Transact-SQL)
Crea un nuevo sinnimo.
Nota:
No es necesario que el objeto base exista en el momento de crear el
sinnimo. SQL Server comprueba la existencia del objeto base en tiempo de
ejecucin
Permisos
Para crear un sinnimo en un esquema determinado, el usuario debe tener el
permiso CREATE SYNONYM y ser propietario del esquema o tener el
permiso ALTER SCHEMA.
El permiso CREATE SYNONYM se puede conceder.

Nota:
No se necesitan permisos en el objeto base para compilar correctamente la
instruccin CREATE SYNONYM, porque la comprobacin de los permisos
para el objeto base no se realiza hasta el momento de la ejecucin.

Para eliminar un sinnimo se utiliza la sentencia:

DROP SYNONYM (Transact-SQL)


Quita un sinnimo de un esquema especificado.
Nota:
Las referencias a sinnimos no estn enlazadas al esquema, por lo que un
sinnimo se puede quitar cuando se desee. Las referencias a sinnimos
Pgina 324 de 630

quitados slo se encontrarn en tiempo de ejecucin.


Es posible crear, quitar y hacer referencia a sinnimos en SQL dinmico.
Permisos
Para quitar un sinnimo, un usuario debe cumplir al menos una de las
condiciones siguientes. El usuario debe ser:
El propietario actual del sinnimo.
Receptor del permiso CONTROL en el sinnimo.
Receptor del permiso ALTER SCHEMA en el esquema contenedor.
Ejemplos
En el ejemplo siguiente, primero se crea el sinnimo MyProduct y despus se
quita.
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks.
CREATE SYNONYM MyProduct FOR AdventureWorks.Production.Product;
GO
-- Drop synonym MyProduct. USE tempdb
GO DROP SYNONYM MyProduct;
GO

Conceder permisos para un sinnimo


Slo los propietarios de los sinnimos, miembros de db_owner o miembros
de db_ddladmin pueden conceder permiso para un sinnimo.
Puede conceder (GRANT), denegar (DENY) o revocar (REVOKE) todos o
cualquiera de los siguientes permisos para un sinnimo:
CONTROL
DELETE
EXECUTE
INSERT
SELECT
TAKE OWNERSHIP
UPDATE
VIEW DEFINITION

Pgina 325 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 4
T-SQL Avanzado

2007

Pgina 326 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 327 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 328 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 329 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 330 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 331 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 332 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 333 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 334 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 335 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 336 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 337 de 630

Unidad 4: T-SQL Avanzado


Objetivos
Dar una visin acerca de los conceptos avanzados sobre el
Transac SQL. Los temas que se abordarn sern los
siguientes:
g. Procedimientos Almacenados
h. Funciones Definidas por el Usuario
i. SubConsultas

Pgina 338 de 630

Procedimientos Almacenados
Un procedimiento almacenado es una coleccin guardada de instrucciones
Transact-SQL o una referencia a un mtodo Common Language Runtime
(CLR) de Microsoft .NET Framework. Dicho procedimiento puede recopilar y
devolver parmetros proporcionados por el usuario. Los procedimientos se
pueden crear para uso permanente o para uso temporal en una sesin, un
procedimiento local temporal, o para su uso temporal en todas las sesiones,
un procedimiento temporal global.
Los procedimientos almacenados tambin se pueden crear de modo que se
ejecuten de forma automtica al iniciarse una instancia de SQL Server.
Sintaxis
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { <sql_statement> [;][ ...n ] | <method_specifier> }
[;]
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]
<sql_statement> ::=
{ [ BEGIN ] statements [ END ] }
<method_specifier> ::=
EXTERNAL NAME assembly_name.class_name.method_name

Argumentos
schema_name
Es el nombre del esquema al que pertenece el procedimiento.
procedure_name
Es el nombre del nuevo procedimiento almacenado. Los nombres de
los procedimientos deben cumplir las reglas de los identificadores y
deben ser exclusivos en el esquema.
Se recomienda no utilizar el prefijo sp_ en el nombre del
procedimiento. SQL Server utiliza este prefijo para designar a los
procedimientos almacenados del sistema.
Los procedimientos temporales locales o globales se pueden crear
anteponiendo el signo de nmero (#) a procedure_name
Pgina 339 de 630

(#procedure_name) para los procedimientos temporales locales y dos


signos de nmero para los procedimientos temporales globales
(##procedure_name). No es posible especificar nombres temporales
para los procedimientos almacenados CLR.
El nombre completo de un procedimiento almacenado o un
procedimiento almacenado temporal global, incluidas ##, no puede
superar los 128 caracteres. El nombre completo de un procedimiento
almacenado temporal local, incluidas #, no puede superar los 116
caracteres.

; number
Es un entero opcional que se utiliza para agrupar procedimientos que
tengan el mismo nombre. Estos procedimientos agrupados se pueden
quitar juntos mediante una instruccin DROP PROCEDURE. Por
ejemplo, una aplicacin denominada orders puede utilizar
procedimientos denominados orderproc;1, orderproc;2, etc. La
instruccin DROP PROCEDURE orderproc quita el grupo completo.
Si el nombre contiene identificadores delimitados, el nmero no debe
incluirse como parte del identificador; slo utilice el delimitador
adecuado alrededor de procedure_name.
Los procedimientos almacenados numerados tienen las siguientes
restricciones:
No permiten el uso de tipos de datos xml o tipos definidos por el usuario
CLR.
No permiten crear una gua de plan en un procedimiento almacenado
numerado.
Nota:
Esta caracterstica se quitar en una versin futura de Microsoft SQL Server.
Evite utilizar esta caracterstica en nuevos trabajos de desarrollo y tenga
previsto modificar las aplicaciones que actualmente la utilizan.
@ parameter
Es un parmetro del procedimiento. En una instruccin CREATE
PROCEDURE se pueden declarar uno o ms parmetros. El usuario
debe proporcionar el valor de cada parmetro declarado cuando se
llama al procedimiento, a menos que se haya definido un valor
predeterminado para el parmetro o se haya establecido en el mismo
valor que otro parmetro. Un procedimiento almacenado puede tener
un mximo de 2.100 parmetros.
Especifique un nombre de parmetro con un signo (@) como primer
carcter. El nombre del parmetro se debe ajustar a las reglas de los
identificadores. Los parmetros son locales para el procedimiento; los
mismos nombres de parmetro se pueden utilizar en otros
procedimientos. De manera predeterminada, los parmetros slo
pueden ocupar el lugar de expresiones constantes; no se pueden
Pgina 340 de 630

utilizar en lugar de nombres de tabla, nombres de columna o nombres


de otros objetos de base de datos
No es posible declarar parmetros si se ha especificado FOR
REPLICATION.
[ type_schema_name. ] data_type
Es el tipo de datos del parmetro y el esquema al que pertenece. Se
pueden utilizar todos los tipos de datos, excepto table, como un
parmetro de un procedimiento almacenado Transact-SQL. Sin
embargo, el tipo de datos cursor slo se puede utilizar en parmetros
OUTPUT. Cuando se especifica un tipo de datos cursor, deben
especificarse tambin las palabras clave VARYING y OUTPUT. Con el
tipo de datos cursor, es posible especificar varios parmetros de
salida.
En los procedimientos almacenados CLR, no es posible especificar
como parmetros los tipos char, varchar, text, ntext, image, cursor y
table.
Si el tipo de datos del parmetro es un tipo definido por el usuario
CLR, es necesario disponer de permiso EXECUTE en el tipo.
Si no se especifica el parmetro type_schema_name, el SQL Server
2005 Database Engine (Motor de base de datos de SQL Server 2005)
hace referencia a type_name en el siguiente orden:
Los tipos de datos del sistema de SQL Server.
El esquema predeterminado del usuario actual en la base de datos actual.
El esquema dbo en la base de datos actual.
En los procedimientos almacenados numerados, el tipo de datos no
puede ser un tipo xml o definido por el usuario CLR.
VARYING
Especifica el conjunto de resultados admitido como un parmetro de
salida. Este parmetro es creado de forma dinmica por el
procedimiento almacenado y su contenido puede variar. Slo se aplica
a los parmetros de tipo cursor.
default
Es un valor predeterminado para el parmetro. Si se define un valor
default, el procedimiento se puede ejecutar sin especificar un valor
para ese parmetro. El valor predeterminado debe ser una constante o
puede ser NULL. Si el procedimiento utiliza el parmetro con la
palabra clave LIKE, puede incluir los siguientes caracteres comodn: %
_ [] y [^].
Nota:
Pgina 341 de 630

Los valores predeterminados slo se registran en la columna


sys.parameters.default en los procedimientos CLR. Esa columna
ser NULL en los parmetros de procedimientos Transact-SQL.

OUTPUT
Indica que se trata de un parmetro de salida. El valor de esta opcin
puede devolverse a la instruccin EXECUTE que llama. Utilice los
parmetros OUTPUT para devolver valores al autor de la llamada del
procedimiento. Los parmetros text, ntext e image no se pueden
utilizar como parmetros OUTPUT, a menos que se trate de un
procedimiento CLR. Un parmetro de salida que utilice la palabra clave
OUTPUT puede ser un marcador de posicin de cursor, a menos que
el procedimiento sea un procedimiento CLR.
RECOMPILE
Indica que el Database Engine (Motor de base de datos) no almacena
en cach un plan para este procedimiento y que ste se compila en
tiempo de ejecucin. Esta opcin no se puede utilizar cuando se
especifica FOR REPLICATION. No es posible especificar RECOMPILE
en los procedimientos almacenados CLR.
Para indicar al Database Engine (Motor de base de datos) que
descarte planes para las consultas individuales de un procedimiento
almacenado, se debe utilizar la sugerencia de consulta RECOMPILE.
La sugerencia de consulta RECOMPILE deber ser usada cuando se
utilicen valores atpicos o temporales en slo un subconjunto de
consultas que pertenece al procedimiento almacenado.
ENCRYPTION
Indica que SQL Server convertir el texto original de la instruccin
CREATE PROCEDURE en un formato complejo. La salida de la
complejidad no es directamente visible en ninguna de las vistas de
catlogo de SQL Server 2005. Los usuarios que no disponen de
acceso a las tablas del sistema o a los archivos de base de datos no
pueden recuperar el texto complejo. Sin embargo, estar disponible
para los usuarios con privilegios que puedan obtener acceso a las
tablas del sistema a travs del puerto DAC o directamente a los
archivos de base de datos. Adems, los usuarios que pueden adjuntar
un depurador al proceso del servidor pueden recuperar el
procedimiento descifrado de la memoria en tiempo de ejecucin.
Esta opcin no es vlida en los procedimientos almacenados CLR.
Los procedimientos creados mediante esta opcin no se pueden
publicar como parte de la rplica de SQL Server.
EXECUTE AS
Pgina 342 de 630

Especifica el contexto de seguridad en el que se ejecuta el


procedimiento almacenado.
FOR REPLICATION
Especifica que los procedimientos almacenados creados para la
rplica no se pueden ejecutar en el suscriptor. Se utiliza un
procedimiento almacenado creado con la opcin FOR REPLICATION
como filtro de procedimiento almacenado y slo se ejecuta durante la
rplica. No es posible declarar parmetros si se ha especificado FOR
REPLICATION. No es posible especificar FOR REPLICATION en los
procedimientos almacenados CLR. La opcin RECOMPILE se pasa
por alto en los procedimientos creados con FOR REPLICATION.
Un procedimiento FOR REPLICATION tendr un tipo de objeto RF en
sys.objects y sys.procedures.
<sql_statement>
Una o ms instrucciones Transact-SQL que se van a incluir en el
procedimiento.
EXTERNAL NAME , assembly_name.class_name.method_name
Especifica el mtodo de un assembly de .NET Framework para que un
procedimiento almacenado CLR haga referencia a l. class_name
debe ser un identificador vlido de SQL Server que debe existir como
clase en el ensamblado. Si la clase tiene un nombre completo de
espacio de nombres que utiliza un punto (.) para separar las partes del
espacio de nombres, el nombre de la clase debe delimitarse mediante
parntesis ([ ]) o comillas (" "). El mtodo especificado debe ser un
mtodo esttico de la clase.
Nota:
De manera predeterminada, SQL Server no puede ejecutar cdigo CLR. Es
posible crear, modificar y quitar objetos de base de datos que hagan
referencia a mdulos CLR; no obstante, no es posible ejecutar esas
referencias en SQL Server hasta que se haya habilitado la opcin clr enabled.
Para habilitar la opcin, se utilizar sp_configure.
El tamao mximo de un procedimiento almacenado Transact-SQL es de 128
MB.

Un procedimiento almacenado definido por el usuario slo se puede crear en


la base de datos actual. Los procedimientos temporales constituyen una
excepcin a esta regla, puesto que siempre se crean en tempdb. Si no se
especifica el nombre de esquema, se utiliza el esquema predeterminado del
usuario que est creando el procedimiento.
La instruccin CREATE PROCEDURE no se puede combinar con otras
instrucciones Transact-SQL en un nico lote.
De manera predeterminada, los parmetros admiten valores NULL. Si se
pasa un valor de parmetro NULL y ese parmetro se utiliza en una
Pgina 343 de 630

instruccin CREATE TABLE o ALTER TABLE en la que la columna a la que


se hace referencia no admite valores NULL, el Database Engine (Motor de
base de datos) genera un error. Para impedir que se pase un valor NULL a
una columna que no admite valores NULL, se debe agregar lgica de
programacin al procedimiento o utilizar un valor predeterminado para la
columna mediante la palabra clave DEFAULT de CREATE TABLE o ALTER
TABLE.
Se recomienda especificar de forma explcita NULL o NOT NULL para cada
columna de una tabla temporal. Las opciones ANSI_DFLT_ON y
ANSI_DFLT_OFF controlan la forma en la que el Database Engine (Motor de
base de datos) asigna los atributos NULL o NOT NULL a las columnas si no
se especifican dichos atributos en una instruccin CREATE TABLE o ALTER
TABLE. Si una conexin ejecuta un procedimiento almacenado con valores
distintos para estas opciones a los que utiliz la conexin que cre el
procedimiento, las columnas de la tabla creada para la segunda conexin
pueden ser distintas al admitir valores NULL y exhibir distintos
comportamientos. Si se especifica NULL o NOT NULL explcitamente para
cada columna, las tablas temporales se crean con la misma capacidad de
admitir valores NULL para todas las conexiones que ejecutan el
procedimiento almacenado.

Utilizar las opciones de SET


El Database Engine (Motor de base de datos) guarda los valores de SET
QUOTED_IDENTIFIER y de SET ANSI_NULLS cuando se crea o modifica un
procedimiento almacenado Transact-SQL. Estos valores originales se utilizan
cuando se ejecuta el procedimiento almacenado. Por tanto, cualquier valor de
sesin de cliente de SET QUOTED_IDENTIFIER y SET ANSI_NULLS se
omite durante la ejecucin del procedimiento almacenado. Otras opciones de
SET, como SET ARITHABORT, SET ANSI_WARNINGS o SET
ANSI_PADDINGSno se guardan cuando se crea o se modifica un
procedimiento almacenado. Si la lgica del procedimiento almacenado
depende de un valor especfico, se debe incluir una instruccin SET al inicio
del procedimiento para garantizar el valor adecuado. Cuando una instruccin
SET se ejecuta desde un procedimiento almacenado, el valor permanece
vigente slo hasta que se completa la ejecucin del procedimiento
almacenado. A continuacin, el valor se restaura al que tena cuando se
llam al procedimiento almacenado. Esto permite a los clientes individuales
establecer las opciones deseadas sin afectar la lgica del procedimiento
almacenado.
Nota:
ANSI_WARNINGS no se respeta cuando se pasan parmetros en un
procedimiento almacenado, una funcin definida por el usuario o cuando se
declaran y establecen variables en una instruccin por lotes. Por ejemplo, si
una variable se define como char(3) y, a continuacin, se establece en un
valor con ms de tres caracteres, los datos se truncan al tamao definido y la
instruccin INSERT o UPDATE se ejecuta correctamente.

Pgina 344 de 630

Utilizar parmetros con procedimientos almacenados CLR


Los parmetros de un procedimiento almacenado CLR pueden ser de
cualquiera de los tipos de datos escalares del sistema de SQL Server.
Para que el Database Engine (Motor de base de datos) haga referencia al
mtodo correcto cuando est sobrecargado en .NET Framework, el mtodo
indicado en <method_specifier> debe tener las siguientes caractersticas:
Ser declarado un mtodo esttico.
Recibir el mismo nmero de parmetros que el nmero de parmetros del
procedimiento.
No ser un constructor ni un destructor de su clase.
Utilizar tipos de parmetros compatibles con los tipos de datos de los
parmetros correspondientes del procedimiento de SQL Server.
No devolver ningn valor o devolver un valor de tipo SQLInt32, SQLInt16,
System.Int32 o System.Int16.
Devolver sus parmetros por referencia y no por valor siempre que se haya
especificado OUTPUT para una declaracin de parmetros especfica.

Obtener informacin acerca de procedimientos almacenados


Para mostrar la definicin de un procedimiento almacenado Transact-SQL, se
debe utilizar la vista de catlogo sys.sql_modules de la base de datos en la
que se encuentra el procedimiento.
Por ejemplo:
USE AdventureWorks;
GO
SELECT definition
FROM sys.sql_modules
JOIN sys.objects ON sys.sql_modules.object_id = sys.objects.object_id AND TYPE =
'P';

Nota:
El texto de un procedimiento almacenado creado con la opcin
ENCRYPTION no se puede ver mediante la vista de catlogo
sys.sql_modules.
Para obtener un informe sobre los objetos a los que hace referencia un
procedimiento, se debe realizar una consulta a la vista de catlogo
sys.sql_dependencies o utilizar sp_depends para devolver informacin
sobre los objetos a los que hacen referencia los procedimientos almacenados
CLR. Para mostrar informacin acerca de los procedimientos almacenados
CLR, utilice la vista de catlogo sys.assembly_modules de la base de datos
en la que se encuentra el procedimiento.
Para mostrar informacin acerca de los parmetros definidos en un
procedimiento almacenado, se debe utilizar la vista de catlogo
sys.parameters de la base de datos en la que se encuentra el
procedimiento.

Pgina 345 de 630

Resolucin diferida de nombres


Es posible crear procedimientos almacenados que hagan referencia a tablas
que an no existen. En el momento de la creacin, slo se realiza la
comprobacin de la sintaxis. El procedimiento almacenado no se compila
hasta que se ejecuta por primera vez. Solamente durante la compilacin se
resuelven todos los objetos a los que se hace referencia en el procedimiento
almacenado. Por tanto, se puede crear un procedimiento almacenado con la
sintaxis correcta que haga referencia a tablas que todava no existen; no
obstante, el procedimiento almacenado provocar un error en tiempo de
ejecucin si las tablas a las que hace referencia no existen
Ejecutar procedimientos almacenados
Cuando ejecute un procedimiento almacenado definido por el usuario, ya sea
en un lote o en un mdulo como un procedimiento almacenado definido por el
usuario o una funcin, se recomienda calificar el nombre del procedimiento
almacenado con un nombre de esquema.
Es posible proporcionar los valores de los parmetros si se escribe un
procedimiento almacenado que los acepte. El valor proporcionado puede ser
una constante o una variable. No es posible especificar un nombre de funcin
como valor de un parmetro. Las variables pueden ser variables definidas por
el usuario o del sistema, como @@SPID.
Cuando un procedimiento se ejecuta por primera vez, se compila para
determinar que dispone de un plan de acceso ptimo para recuperar los
datos. En las siguientes ejecuciones del procedimiento almacenado se puede
volver a utilizar el plan ya generado si an permanece en la cach de planes
del Database Engine (Motor de base de datos).

Parmetros que utilizan el tipo de datos cursor


Los procedimientos almacenados Transact-SQL slo pueden utilizar el tipo
de datos cursor para los parmetros OUTPUT. Si se especifica el tipo de
datos cursor para un parmetro, se requieren los parmetros VARYING y
OUTPUT. Si se especifica la palabra clave VARYING para un parmetro, el
tipo de datos debe ser cursor y se debe especificar la palabra clave
OUTPUT.

Procedimientos almacenados temporales


El Database Engine (Motor de base de datos) admite dos tipos de
procedimientos temporales: locales y globales. Un procedimiento temporal
local slo es visible para la conexin que lo cre. Un procedimiento temporal
global est disponible para todas las conexiones. Los procedimientos
temporales locales se quitan automticamente al final de la sesin actual. Los
procedimientos temporales globales se quitan al final de la ltima sesin que
utiliza el procedimiento.

Pgina 346 de 630

Ejecutar procedimientos almacenados automticamente


Cuando se inicia SQL Server, se pueden ejecutar automticamente uno o
ms procedimientos almacenados. Los procedimientos almacenados deben
ser creados por el administrador del sistema en la base de datos master y
ejecutados bajo la funcin fija del servidor sysadmin como un proceso en
segundo plano. Los procedimientos no pueden tener ningn parmetro de
entrada o salida.

Anidamiento de procedimientos almacenados


Los procedimientos almacenados se pueden anidar. Esto significa que un
procedimiento almacenado puede llamar a otro. El nivel de anidamiento
aumenta cuando el procedimiento llamado inicia la ejecucin y disminuye
cuando el procedimiento llamado finaliza la ejecucin. Los procedimientos
almacenados se pueden anidar hasta en 32 niveles. Para estimar el tamao
de un procedimiento almacenado compilado, se debe utilizar los siguientes
contadores del Monitor de rendimiento.
Nombre del objeto del Monitor de Nombre del contador del Monitor de
rendimiento
rendimiento
SQLServer: Plan Cache
Frecuencia de aciertos de cach
Pginas de cach
Recuentos de objetos de cach*
* Estos contadores estn disponibles para varias categoras de objetos de
cach, incluidos secuencias sql ad hoc, secuencias sql preparadas,
procedimientos, desencadenadores, etc.

Limitaciones de <sql_statement>
En un procedimiento almacenado se puede especificar cualquier instruccin
SET, excepto SET SHOWPLAN_TEXT y SET SHOWPLAN_ALL. stas
deben ser las nicas instrucciones del lote. La opcin SET elegida
permanece vigente durante la ejecucin del procedimiento almacenado y,
despus, vuelve a su valor anterior.
En un procedimiento almacenado, los nombres de objeto utilizados en todas
las instrucciones de lenguaje de definicin de datos (DDL), como las
instrucciones CREATE, ALTER o DROP, las instrucciones DBCC, las
instrucciones EXECUTE y de SQL dinmico, deben completarse con el
nombre del esquema de objetos, si los usuarios que no son owners del
procedimiento almacenado, van a utilizar dicho procedimiento.
Permisos
Requiere el permiso CREATE PROCEDURE en la base de datos y el permiso
ALTER en el esquema en el que se va a crear el procedimiento.
Para los procedimientos almacenados CLR, requiere la propiedad del
ensamblado al que se hace referencia en <method_specifier> o el permiso
REFERENCES en ese ensamblado.
Pgina 347 de 630

Ejemplos
A. Utilizar un procedimiento simple
El siguiente procedimiento almacenado devuelve todos los empleados
(nombre y apellidos), sus puestos y los nombres de sus departamentos a
partir de una vista. Este procedimiento almacenado no utiliza ningn
parmetro.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'HumanResources.uspGetAllEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetAllEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetAllEmployees
AS
SELECT LastName, FirstName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment;
GO

El procedimiento almacenado uspGetEmployees se puede ejecutar de estas


formas:
EXECUTE HumanResources.uspGetAllEmployees;
GO
-- Or
EXEC HumanResources.uspGetAllEmployees;
GO
-- Or, if this procedure is the first statement within a batch:
HumanResources.uspGetAllEmployees;
B. Utilizar un procedimiento simple con parmetros
El siguiente procedimiento almacenado slo devuelve el empleado
especificado (nombre y apellidos), su puesto y el nombre de su departamento
a partir de una vista. Este procedimiento almacenado acepta coincidencias
exactas de los parmetros pasados.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'HumanResources.uspGetEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
SELECT FirstName, LastName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment
WHERE FirstName = @FirstName AND LastName = @LastName;
GO

El procedimiento almacenado uspGetEmployees se puede ejecutar de las


siguientes formas:
Pgina 348 de 630

EXECUTE HumanResources.uspGetEmployees N'Ackerman', N'Pilar';


-- Or
EXEC HumanResources.uspGetEmployees @LastName = N'Ackerman',
@FirstName = N'Pilar';
GO
-- Or
EXECUTE HumanResources.uspGetEmployees @FirstName = N'Pilar', @LastName
= N'Ackerman';
GO
-- Or, if this procedure is the first statement within a batch:
HumanResources.uspGetEmployees N'Ackerman', N'Pilar';

C. Utilizar un procedimiento simple con parmetros comodn


El siguiente procedimiento almacenado slo devuelve los empleados
especificados (nombre y apellidos), sus puestos y los nombres de sus
departamentos a partir de una vista. Este patrn de procedimiento
almacenado coincide con los parmetros pasados o, si stos no se
proporcionan, utiliza los valores predeterminados (apellidos que comienzan
por la letra D).
USE AdventureWorks;
GO
IF OBJECT_ID ( 'HumanResources.uspGetEmployees2', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees2;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees2
@LastName nvarchar(50) = N'D%',
@FirstName nvarchar(50) = N'%'
AS
SELECT FirstName, LastName, JobTitle, Department
FROM HumanResources.vEmployeeDepartment
WHERE FirstName LIKE @FirstName
AND LastName LIKE @LastName;
GO
El procedimiento almacenado uspGetEmployees2 se puede ejecutar en
muchas combinaciones. Aqu se muestran slo algunas de ellas:
EXECUTE HumanResources.uspGetEmployees2;
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'Wi%';
-- Or
EXECUTE HumanResources.uspGetEmployees2 @FirstNname = N'%';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'[CK]ars[OE]n';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'Hesse', N'Stefen';
-- Or
EXECUTE HumanResources.uspGetEmployees2 N'H%', N'S%';

Pgina 349 de 630

D. Utilizar parmetros OUTPUT


En el siguiente ejemplo se crea el procedimiento almacenado uspGetList.
Este procedimiento devuelve una lista de productos cuyos precios no superan
una cantidad especificada. El ejemplo se muestra con varias instrucciones
SELECT y varios parmetros OUTPUT. Los parmetros OUTPUT permiten a
un procedimiento externo, un lote o ms de una instruccin Transact-SQL
tener acceso a un conjunto de valores durante la ejecucin del procedimiento.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL
DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product varchar(40)
, @MaxPrice money
, @ComparePrice money OUTPUT
, @ListPrice money OUT
AS
SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice;
-- Populate the output variable @ListPprice.
SET @ListPrice = (SELECT MAX(p.ListPrice)
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice);
-- Populate the output variable @compareprice.
SET @ComparePrice = @MaxPrice;
GO

Ejecute uspGetList para obtener una lista de los productos de Adventure


Works (bicicletas) que cuestan menos de $700. Los parmetros OUTPUT,
@Cost y @ComparePrices se utilizan con el lenguaje de control de flujo
para devolver un mensaje en la ventana Mensajes.
Nota:
La variable OUTPUT debe definirse al crear el procedimiento y tambin al
utilizar la variable. El nombre del parmetro y de la variable no tienen por qu
coincidir; sin embargo, el tipo de datos y la posicin de los parmetros deben
coincidir, a menos que se utilice @ListPrice = variable.
DECLARE @ComparePrice money, @Cost money
EXECUTE Production.uspGetList '%Bikes%', 700,
@ComparePrice OUT,
@Cost OUTPUT
IF @Cost <= @ComparePrice
BEGIN
Pgina 350 de 630

PRINT 'These products can be purchased for less than


$'+RTRIM(CAST(@ComparePrice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all products in this category exceed
$'+ RTRIM(CAST(@ComparePrice AS varchar(20)))+'.'
ste es el conjunto de resultados parciales:
Copiar cdigo
Product
List Price
-------------------------------------------------- -----------------Road-750 Black, 58
539.99
Mountain-500 Silver, 40
564.99
Mountain-500 Silver, 42
564.99
...
Road-750 Black, 48
539.99
Road-750 Black, 52
539.99
(14 row(s) affected)
These items can be purchased for less than $700.00.

E. Utilizar la opcin WITH RECOMPILE


La clusula WITH RECOMPILE es til cuando los parmetros suministrados
al procedimiento no son los tpicos y cuando no debe almacenarse un nuevo
plan de ejecucin en la cach o en memoria.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'dbo.uspproduct_by_vendor', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.uspProductByVendor;
GO
CREATE PROCEDURE dbo.uspProductByVendor @Name varchar(30) = '%'
WITH RECOMPILE
AS
SELECT v.Name AS 'Vendor name', p.Name AS 'Product name'
FROM Purchasing.Vendor AS v
JOIN Purchasing.ProductVendor AS pv
ON v.VendorID = pv.VendorID
JOIN Production.Product AS p
ON pv.ProductID = p.ProductID
WHERE v.Name LIKE @Name;
GO

F. Utilizar la opcin WITH ENCRYPTION


En el siguiente ejemplo se crea el
HumanResources.uspEncryptThis.

procedimiento

almacenado

USE AdventureWorks;
GO
IF OBJECT_ID ( 'HumanResources.uspEncryptThis', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspEncryptThis;
Pgina 351 de 630

GO
CREATE PROCEDURE HumanResources.uspEncryptThis
WITH ENCRYPTION
AS
SELECT EmployeeID, Title, NationalIDNumber, VacationHours, SickLeaveHours
FROM HumanResources.Employee;
GO

La opcin WITH ENCRYPTION evita que se devuelva la definicin del


procedimiento almacenado, como se muestra en los siguientes ejemplos.
Ejecute sp_helptext:
EXEC sp_helptext 'HumanResources.uspEncryptThis';

Este es el conjunto de resultados.


The text for object 'HumanResources.uspEncryptThis' is encrypted.
Realice una consulta directamente a la vista de catlogo sys.sql_modules:
USE AdventureWorks;
GO
SELECT definition FROM sys.sql_modules
WHERE object_id = OBJECT_ID('HumanResources.uspEncryptThis');

Este es el conjunto de resultados.


definition
---------------------NULL
(1 row(s) affected)

G. Utilizar la resolucin diferida de nombres


En el siguiente ejemplo se crea el procedimiento uspProc1. Utiliza la
resolucin diferida de nombres. El procedimiento almacenado se crea aunque
la tabla a la que se hace referencia no exista en el momento de la
compilacin. Sin embargo, la tabla debe existir cuando se ejecute el
procedimiento.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'dbo.uspProc1', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.uspProc1;
GO
CREATE PROCEDURE dbo.uspProc1
AS
SELECT column1, column2 FROM table_does_not_exist
GO

Para comprobar que el procedimiento almacenado se ha creado, ejecute la


siguiente consulta:
USE AdventureWorks;
Pgina 352 de 630

GO
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('dbo.uspproc1');
Este es el conjunto de resultados.
definition
----------------------------------------------------------------------CREATE PROCEDURE uspproc1
AS
SELECT column1, column2 FROM table_does_not_exist
(1 row(s) affected)

H. Utilizar la clusula EXECUTE AS


En el siguiente ejemplo se muestra el uso de la clusula EXECUTE AS para
especificar el contexto de seguridad en el que se puede ejecutar un
procedimiento almacenado. En el ejemplo, la opcin CALLER especifica que
el procedimiento se puede ejecutar en el contexto del usuario que lo llama.
USE AdventureWorks;
GO
IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL
DROP PROCEDURE Purchasing.uspVendorAllInfo;
GO
CREATE PROCEDURE Purchasing.uspVendorAllInfo
WITH EXECUTE AS CALLER
AS
SELECT v.Name AS Vendor, p.Name AS 'Product name',
v.CreditRating AS 'Credit Rating',
v.ActiveFlag AS Availability
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor pv
ON v.VendorID = pv.VendorID
INNER JOIN Production.Product p
ON pv.ProductID = p.ProductID
ORDER BY v.Name ASC;
GO

I. Crear un procedimiento almacenado CLR


En el siguiente ejemplo se crea el procedimiento almacenado
GetPhotoFromDB que hace referencia al mtodo GetPhotoFromDB de la
clase LargeObjectBinary del ensamblado HandlingLOBUsingCLR . Antes de
que
se
cree
el
procedimiento
almacenado,
el
ensamblado
HandlingLOBUsingCLR se registra en la base de datos local.

Pgina 353 de 630

CREATE ASSEMBLY HandlingLOBUsingCLR


FROM '\\MachineName\HandlingLOBUsingCLR\bin\Debug\HandlingLOBUsingCLR.dll'';
GO
CREATE PROCEDURE dbo.GetPhotoFromDB
(
@ProductPhotoID int,
@CurrentDirectory nvarchar(1024),
@FileName nvarchar(1024)
)
AS EXTERNAL NAME HandlingLOBUsingCLR.LargeObjectBinary.GetPhotoFromDB;
GO

J. Utilizar un parmetro de cursor OUTPUT


Los parmetros de cursor OUTPUT se utilizan para volver a pasar un cursor
que es local en un procedimiento almacenado al lote, procedimiento
almacenado o desencadenador que llama.
Primero, crea el procedimiento que declara y, a continuacin, abre un cursor
en la tabla Currency:
USE AdventureWorks;
GO
IF OBJECT_ID ( 'dbo.uspCurrencyCursor', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.uspCurrencyCursor;
GO
CREATE PROCEDURE dbo.uspCurrencyCursor
@CurrencyCursor CURSOR VARYING OUTPUT
AS
SET @CurrencyCursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT CurrencyCode, Name
FROM Sales.Currency;
OPEN @CurrencyCursor;
GO
A continuacin, ejecuta un lote que declara una variable local de cursor,
ejecuta el procedimiento para asignar el cursor a la variable local y, por
ltimo, recupera las filas desde el cursor.
USE AdventureWorks;
GO
DECLARE @MyCursor CURSOR;
EXEC dbo.uspCurrencyCursor @CurrencyCursor = @MyCursor OUTPUT;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
FETCH NEXT FROM @MyCursor;
END;
CLOSE @MyCursor;
DEALLOCATE @MyCursor;
GO
Pgina 354 de 630

Funciones Definidas por el Usuario


En esta seccin se proporciona la informacin necesaria para comprender,
disear e implementar funciones definidas por el usuario.

Tema

Descripcin
Se explican los conceptos de las funciones definidas
Descripcin
de
por el usuario y se ofrecen descripciones y ejemplos de
funciones
definidas
todos los tipos disponibles en Microsoft SQL Server
por el usuario
2005.
Disear
funcionesSe proporcionan directrices, reglas y restricciones que
definidas
por
else deben tener en cuenta para disear funciones
usuario
definidas por el usuario.
Implementar
Se describen los procedimientos para crear, modificar o
funciones
definidas
eliminar funciones definidas por el usuario.
por el usuario

Descripcin de funciones definidas por el usuario


Al igual que las funciones en los lenguajes de programacin, las
funciones definidas por el usuario de Microsoft SQL Server 2005 son
rutinas que aceptan parmetros, realizan una accin, como un clculo
complejo, y devuelven el resultado de esa accin como un valor. El
valor devuelto puede ser un valor escalar nico o un conjunto de
resultados.
Ventajas de las funciones definidas por el usuario
Las ventajas de utilizar las funciones definidas por el usuario en SQL Server
son:
Permiten
una
programacin
modular.
Puede crear la funcin una vez, almacenarla en la base de datos y llamarla
desde el programa tantas veces como desee. Las funciones definidas por el
usuario se pueden modificar, independientemente del cdigo de origen del
programa.
Permiten
una
ejecucin
ms
rpida.
Al igual que los procedimientos almacenados, las funciones definidas por el
usuario Transact-SQL reducen el costo de compilacin del cdigo TransactSQL almacenando los planes en la cach y reutilizndolos para ejecuciones
repetidas. Esto significa que no es necesario volver a analizar y optimizar la
funcin definida por el usuario con cada uso, lo que permite obtener tiempos
de
ejecucin
mucho
ms
rpidos.
Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las
funciones Transact-SQL para tareas de clculo, manipulacin de cadenas y

Pgina 355 de 630

lgica empresarial. Las funciones Transact-SQL se adecuan mejor a la lgica


intensiva del acceso a datos.
Pueden
reducir
el
trfico
de
red.
Una operacin que filtra datos basndose en restricciones complejas que no
se puede expresar en una sola expresin escalar se puede expresar como
una funcin. La funcin se puede invocar en la clusula WHERE para reducir
el nmero de filas que se envan al cliente.
Componentes de una funcin definida por el usuario
En SQL Server 2005, las funciones definidas por el usuario se pueden
escribir en Transact-SQL, o en cualquier lenguaje de programacin .NET.
Todas las funciones definidas por el usuario tienen la misma estructura de
dos partes: un encabezado y un cuerpo. La funcin toma cero o ms
parmetros de entrada y devuelve un valor escalar o una tabla.
El encabezado define:
Nombre de funcin con nombre de propietario o esquema opcional
Nombre del parmetro de entrada y tipo de datos
Opciones aplicables al parmetro de entrada
Tipo de datos de parmetro devueltos y nombre opcional
Opciones aplicables al parmetro devuelto
El cuerpo define la accin o la lgica que la funcin va a realizar. Contiene:
Una o ms instrucciones Transact-SQL que ejecutan la lgica de la funcin
Una referencia a un ensamblado .NET
En el siguiente ejemplo se muestra una funcin Transact-SQL simple definida
por el usuario y se identifican los principales componentes de la funcin. La
funcin evala una fecha proporcionada y devuelve un valor que designa la
posicin de esa fecha en una semana.
IF OBJECT_ID(N'dbo.GetWeekDay', N'FN') IS NOT NULL
DROP FUNCTION dbo.GetWeekDay;
GO
CREATE FUNCTION dbo.GetWeekDay
-- function name
(@Date datetime)
-- input parameter name and data type
RETURNS int
-- return parameter data type
AS
BEGIN
-- begin body definition
RETURN DATEPART (weekday, @Date) -- action performed
END;
GO
En el siguiente ejemplo se muestra la funcin que se utiliza en una
instruccin Transact-SQL.
SELECT dbo.GetWeekDay(CONVERT(DATETIME,'20020201',101)) AS
DayOfWeek;
GO
Este es el conjunto de resultados.
DayOfWeek
Pgina 356 de 630

--------6
(1 row(s) affected
Tipos de funciones
SQL Server 2005 admite funciones definidas por el usuario y funciones del
sistema integradas:

Funciones escalares
Las funciones escalares definidas por el usuario devuelven un nico valor de
datos del tipo definido en la clusula RETURNS. Las funciones escalares en
lnea no tienen cuerpo; el valor escalar es el resultado de una sola
instruccin. Para una funcin escalar de mltiples instrucciones, el cuerpo de
la funcin, definido en un bloque BEGIN...END, contiene una serie de
instrucciones Transact-SQL que devuelven el valor nico. El tipo devuelto
puede ser de cualquier tipo de datos excepto text, ntext, image, cursor y
timestamp.
En el ejemplo siguiente se crea una funcin escalar con mltiples
instrucciones. La funcin toma un valor de entrada, ProductID, y devuelve un
solo valor de datos, la cantidad agregada del producto especificado en el
inventario.
USE AdventureWorks;
GO
IF OBJECT_ID (N'dbo.ufnGetInventoryStock', N'FN') IS NOT NULL
DROP FUNCTION ufnGetInventoryStock;
GO
CREATE FUNCTION dbo.ufnGetInventoryStock(@ProductID int)
RETURNS int
AS
-- Returns the stock level for the product.
BEGIN
DECLARE @ret int;
SELECT @ret = SUM(p.Quantity)
FROM Production.ProductInventory p
WHERE p.ProductID = @ProductID
AND p.LocationID = '6';
IF (@ret IS NULL)
SET @ret = 0
RETURN @ret
END;
GO
En el ejemplo siguiente se utiliza la funcin ufnGetInventoryStock para
devolver la cantidad de inventario actual de productos que tienen un
ProductModelID entre 75 y 80.
USE AdventureWorks;
GO
SELECT ProductModelID, Name, dbo.ufnGetInventoryStock(ProductID)AS
Pgina 357 de 630

CurrentSupply
FROM Production.Product
WHERE ProductModelID BETWEEN 75 and 80;
GO
Funciones con valores de tabla
Las funciones con valores de tabla definidas por el usuario devuelven un tipo
de datos table. Las funciones con valores de tabla en lnea no tienen cuerpo;
la tabla es el conjunto de resultados de una sola instruccin SELECT.
En el ejemplo siguiente se crea una funcin con valores de tabla en lnea. La
funcin toma un parmetro de entrada, Id. de cliente (almacn), y devuelve
las columnas ProductID, Name, y el agregado de las ventas del ao hasta la
fecha como YTD Total para cada producto vendido en el almacn.
USE AdventureWorks;
GO
IF OBJECT_ID (N'Sales.ufn_SalesByStore', N'IF') IS NOT NULL
DROP FUNCTION Sales.ufn_SalesByStore;
GO
CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)
RETURNS TABLE
AS
RETURN
(
SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'YTD Total'
FROM Production.Product AS P
JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID =
SD.SalesOrderID
WHERE SH.CustomerID = @storeid
GROUP BY P.ProductID, P.Name
);
GO
En el ejemplo siguiente se invoca la funcin y especifica el Id. de cliente 602.
SELECT * FROM Sales.ufn_SalesByStore (602);
Para una funcin con valores de tabla de mltiples instrucciones, el cuerpo de
la funcin, definido en un bloque BEGIN...END, contiene una serie de
instrucciones Transact-SQL que generan e insertan filas en la tabla que se va
a devolver.
En el ejemplo siguiente se crea una funcin con valores de tabla. La funcin
toma un solo parmetro de entrada, EmployeeID, y devuelve una lista de
todos los empleados que informan al empleado especificado directa o
indirectamente. La funcin se invoca a continuacin especificando el
identificador de empleado 109.
USE AdventureWorks;
GO
Pgina 358 de 630

IF OBJECT_ID (N'dbo.ufn_FindReports', N'TF') IS NOT NULL


DROP FUNCTION dbo.ufn_FindReports;
GO
CREATE FUNCTION dbo.ufn_FindReports (@InEmpID INTEGER)
RETURNS @retFindReports TABLE
(
EmployeeID int primary key NOT NULL,
Name nvarchar(255) NOT NULL,
Title nvarchar(50) NOT NULL,
EmployeeLevel int NOT NULL,
Sort nvarchar (255) NOT NULL
)
--Returns a result set that lists all the employees who report to the
--specific employee directly or indirectly.*/
AS
BEGIN
WITH DirectReports(Name, Title, EmployeeID, EmployeeLevel, Sort) AS
(SELECT CONVERT(Varchar(255), c.FirstName + ' ' + c.LastName),
e.Title,
e.EmployeeID,
1,
CONVERT(Varchar(255), c.FirstName + ' ' + c.LastName)

FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID =
c.ContactID
WHERE e.EmployeeID = @InEmpID
UNION ALL
SELECT CONVERT(Varchar(255), REPLICATE ('| ' , EmployeeLevel) +
c.FirstName + ' ' + c.LastName),
e.Title,
e.EmployeeID,
EmployeeLevel + 1,
CONVERT (Varchar(255), RTRIM(Sort) + '| ' + FirstName + ' ' +
LastName)
FROM HumanResources.Employee as e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID
)
-- copy the required columns to the result of the function
INSERT @retFindReports
SELECT EmployeeID, Name, Title, EmployeeLevel, Sort
FROM DirectReports
RETURN
END;
GO
-- Example invocation
SELECT EmployeeID, Name, Title, EmployeeLevel
FROM dbo.ufn_FindReports(109)
ORDER BY Sort;
Pgina 359 de 630

GO

Funciones integradas
SQL Server proporciona las funciones integradas para ayudarle a realizar
diversas operaciones. No se pueden modificar. Puede utilizar funciones
integradas en instrucciones Transact-SQL para:
Tener acceso a informacin de las tablas del sistema de SQL Server sin tener
acceso a las tablas del sistema directamente.
Realizar tareas habituales como SUM, GETDATE o IDENTITY.
Las funciones integradas devuelven tipos de datos escalares o table. Por
ejemplo, @@ERROR devuelve 0 si la ltima instruccin Transact-SQL se
ejecut correctamente. Si la instruccin gener un error, @@ERROR
devuelve el nmero de error. Y la funcin SUM(parameter) devuelve la suma
de todos los valores del parmetro

Disear funciones definidas por el usuario


Las funciones definidas por el usuario se almacenan como objetos de base
de datos que proporcionan cdigo reutilizable. En esta seccin se
proporciona la informacin necesaria para disear funciones definidas por el
usuario.
Tema
Descripcin
Directivas para el diseo deProporciona directrices para elegir el tipo de funciones
funciones definidas por eldefinidas por el usuario y para evaluar las propiedades
usuario
de la funcin.
Describe funciones definidas por el usuario con valores
Funciones definidas por el
de tabla y proporciona ejemplos sobre cmo crear e
usuario con valores de tabla
invocar este tipo de funcin.
Describe funciones definidas por el usuario con valores
Funciones en lnea definidas
de tabla y proporciona ejemplos sobre cmo crear e
por el usuario
invocar este tipo de funcin.
Funciones deterministas yCompara las funciones en lnea definidas por el usuario
no deterministas
con las vistas con parmetros y proporciona ejemplos.
Volver
a
escribir
Proporciona directrices sobre cundo se debe volver a
procedimientos
escribir la lgica de procedimientos almacenados
almacenados
como
existente como funciones definidas por el usuario.
funciones

Directivas para el diseo de funciones definidas por el usuario seccin


Una funcin definida por el usuario se almacena como un objeto de base de
datos que proporciona cdigo reutilizable y se puede utilizar de las siguientes
maneras:
Pgina 360 de 630

En instrucciones Transact-SQL como SELECT


En las aplicaciones que llaman a la funcin
En la definicin de otra funcin definida por el usuario
Para parametrizar una vista o mejorar la funcionalidad de una vista indexada
Para definir una columna en una tabla
Para definir una restriccin CHECK en una columna
Para reemplazar un procedimiento almacenado
Las funciones definidas por el usuario se han ampliado en Microsoft SQL
Server 2005 para incluir las funciones escritas en cualquier lenguaje de
programacin que se admita en Microsoft .NET Framework. Adems, se han
quitado algunas restricciones sobre el uso de funciones no deterministas.
Estos cambios influyen en la decisin acerca del tipo de funcin definida por
el usuario que se va a disear e implementar.
Elegir un tipo de funcin
Al disear una funcin definida por el usuario, primero es preciso determinar
el tipo de funcin que mejor se ajuste a sus necesidades. As pues, es
necesario determinar si la funcin:
Devolver un valor escalar (un solo valor)
Devolver una tabla (varias filas)
Realizar un clculo complejo
Si tendr acceso principalmente a los datos de SQL Server
Las funciones definidas por el usuario escritas en Transact-SQL o .NET
Framework pueden devolver valores escalares y de tabla.

Propiedades de las funciones


Son varias las propiedades de las funciones definidas por el usuario que
determinan la capacidad de SQL Server Database Engine (Motor de base de
datos de SQL Server) para indexar los resultados de la funcin, ya sea
mediante ndices en columnas calculadas que llama a la funcin o mediante
vistas indexadas que hacen referencia a la funcin. Estas propiedades
tambin se aplican a los mtodos de tipos definidos por el usuario para CLR.

Determinismo
Las funciones deterministas devuelven el mismo resultado cada vez que se
llaman con un conjunto especfico de valores de entrada y cuando el estado
de la base de datos es el mismo. Las funciones no deterministas pueden
devolver resultados diferentes cada vez que se llaman con un conjunto
especfico de valores de entrada aunque el estado de la base de datos a la
que tienen acceso permanezca sin cambios.
Database Engine (Motor de base de datos) analiza automticamente el
cuerpo de las funciones Transact-SQL y evala si la funcin es determinista.
Por ejemplo, si la funcin llama a otras funciones que no son deterministas o
si la funcin llama a procedimientos almacenados extendidos, entonces,
Database Engine (Motor de base de datos) marca la funcin como no
Pgina 361 de 630

determinista. Para las funciones CLR (Common Language Runtime),


Database Engine (Motor de base de datos) confa en el autor de la funcin
para marcar o no la funcin como determinista mediante el atributo
personalizado SqlFunction.

Precisin
Una funcin definida por el usuario se considera precisa si en ella no
interviene ninguna operacin de coma flotante.
Database Engine (Motor de base de datos) analiza automticamente el
cuerpo de las funciones Transact-SQL y evala si la funcin es precisa. Para
las funciones CLR, Database Engine confa en el autor de la funcin para
marcar o no la funcin como precisa mediante el atributo personalizado
SqlFunction.

Acceso a datos
Esta propiedad indica si la funcin tiene acceso al servidor de la base de
datos local mediante un proveedor administrado en curso de SQL Server.
Database Engine analiza automticamente el cuerpo de las funciones
Transact-SQL y evala si la funcin realiza el acceso a datos. Para las
funciones CLR, Database Engine confa en el autor de la funcin para indicar
las caractersticas del acceso a los datos mediante el atributo personalizado
SqlFunction. Database Engine fuerza el uso de esta propiedad en tiempo de
ejecucin. Si la funcin indica que DataAccess = None, pero se realiza el
acceso a los datos, la funcin no ser correcta en tiempo de ejecucin.

Acceso a datos del sistema


Esta propiedad indica si la funcin tiene acceso a los metadatos del sistema
en el servidor de la base de datos local mediante un proveedor administrado
en curso de SQL Server.
Database Engine (Motor de base de datos) analiza automticamente el
cuerpo de las funciones Transact-SQL y evala si la funcin realiza el acceso
a datos del sistema. Para las funciones CLR, Database Engine (Motor de
base de datos) confa en el autor de la funcin para indicar las caractersticas
del acceso a los datos del sistema; mediante el atributo personalizado
SqlFunction. Database Engine (Motor de base de datos) fuerza el uso de esta
propiedad en tiempo de ejecucin. Si la funcin indica que
SystemDataAccess = None, pero se realiza el acceso a los datos del
sistema, la funcin no ser correcta en tiempo de ejecucin.

IsSystemVerified
Esta propiedad indica si Database Engine (Motor de base de datos) puede
comprobar las propiedades de determinismo y precisin de la funcin. Esta
propiedad es verdadera para las funciones Transact-SQL siempre que no
Pgina 362 de 630

llamen a ninguna funcin marcada como IsSystemVerified = false. La


propiedad es falsa para las funciones CLR.
Database Engine (Motor de base de datos) deriva automticamente la
propiedad IsSystemVerified para las funciones. Para las funciones TransactSQL, si tienen acceso a cualquier funcin marcada como IsSystemVerified =
false, la propia funcin se marca como IsSystemVerified = false.

Funciones definidas por el usuario con valores de tabla


Las funciones definidas por el usuario que devuelven un tipo de datos table
pueden ser unas eficaces alternativas a las vistas. Esas funciones se
conocen como funciones con valores de tabla. Una funcin definida por el
usuario con valores de tabla se puede usar donde se permiten las
expresiones de vista o de tabla en las consultas Transact-SQL. Mientras que
las vistas se limitan a una nica instruccin SELECT, las funciones definidas
por el usuario pueden contener instrucciones adicionales que permiten una
lgica ms eficaz que en las vistas.
Una funcin definida por el usuario con valores de tabla tambin puede
reemplazar procedimientos almacenados que devuelven un solo conjunto de
resultados. En la clusula FROM de una instruccin Transact-SQL es posible
hacer referencia a la tabla que devuelve una funcin definida por el usuario,
pero esto no es posible con los procedimientos almacenados que devuelven
conjuntos de resultados.
Componentes de una funcin definida por el usuario con valores de tabla
En una funcin definida por el usuario con valores de tabla:
La clusula RETURNS define el nombre de una variable de retorno local para
la tabla devuelta por la funcin. La clusula RETURNS tambin define el
formato de la tabla. El nombre de una variable de retorno local tiene un
mbito local dentro de la funcin.
Las instrucciones Transact-SQL del cuerpo de la funcin generan e insertan
filas en la variable de retorno definida por la clusula RETURNS.
Al ejecutar una instruccin RETURN, las filas insertadas en la variable se
devuelven desde la funcin en formato tabular. La instruccin RETURN no
puede tener un argumento.
Ninguna instruccin Transact-SQL de una funcin con valores de tabla puede
devolver un conjunto de resultados directamente a un usuario. La nica
informacin que la funcin puede devolver al usuario es el tipo de datos table
devuelto por la funcin.
Nota:
La opcin de tabla text in row se define automticamente en 256 para una
tabla devuelta por una funcin definida por el usuario. Esto no puede
modificarse. Las instrucciones READTEXT, WRITETEXT y UPDATETEXT no
pueden utilizarse para leer o escribir partes de las columnas text, ntext e
image de la tabla.

Pgina 363 de 630

Ejemplo
En el siguiente ejemplo se crea la funcin dbo.ufnGetContactInformation y
se muestran los componentes de la funcin con valores de tabla. En esta
funcin, el nombre de la variable de retorno local es @retContactInformation.
Las instrucciones del cuerpo de la funcin insertan filas en esta variable para
generar la tabla resultante devuelta por la funcin.
USE AdventureWorks;
GO
IF OBJECT_ID(N'dbo.ufnGetContactInformation', N'TF') IS NOT NULL
DROP FUNCTION dbo.ufnGetContactInformation;
GO
CREATE FUNCTION dbo.ufnGetContactInformation(@ContactID int)
RETURNS @retContactInformation TABLE
(
-- Columns returned by the function
ContactID int PRIMARY KEY NOT NULL,
FirstName nvarchar(50) NULL,
LastName nvarchar(50) NULL,
JobTitle nvarchar(50) NULL,
ContactType nvarchar(50) NULL
)
AS
-- Returns the first name, last name, job title, and contact type for the specified
contact.
BEGIN
DECLARE
@FirstName nvarchar(50),
@LastName nvarchar(50),
@JobTitle nvarchar(50),
@ContactType nvarchar(50);
-- Get common contact information
SELECT
@ContactID = ContactID,
@FirstName = FirstName,
@LastName = LastName
FROM Person.Contact
WHERE ContactID = @ContactID;
SELECT @JobTitle =
CASE
-- Check for employee
WHEN EXISTS(SELECT * FROM HumanResources.Employee e
WHERE e.ContactID = @ContactID)
THEN (SELECT Title
FROM HumanResources.Employee
WHERE ContactID = @ContactID)
-- Check for vendor
WHEN EXISTS(SELECT * FROM Purchasing.VendorContact vc
INNER JOIN Person.ContactType ct
ON vc.ContactTypeID = ct.ContactTypeID
WHERE vc.ContactID = @ContactID)
THEN (SELECT ct.Name
FROM Purchasing.VendorContact vc
INNER JOIN Person.ContactType ct
ON vc.ContactTypeID = ct.ContactTypeID
Pgina 364 de 630

WHERE vc.ContactID = @ContactID)


-- Check for store
WHEN EXISTS(SELECT * FROM Sales.StoreContact sc
INNER JOIN Person.ContactType ct
ON sc.ContactTypeID = ct.ContactTypeID
WHERE sc.ContactID = @ContactID)
THEN (SELECT ct.Name
FROM Sales.StoreContact sc
INNER JOIN Person.ContactType ct
ON sc.ContactTypeID = ct.ContactTypeID
WHERE ContactID = @ContactID)
ELSE NULL
END;
SET @ContactType =
CASE
-- Check for employee
WHEN EXISTS(SELECT * FROM HumanResources.Employee e
WHERE e.ContactID = @ContactID)
THEN 'Employee'
-- Check for vendor
WHEN EXISTS(SELECT * FROM Purchasing.VendorContact vc
INNER JOIN Person.ContactType ct
ON vc.ContactTypeID = ct.ContactTypeID
WHERE vc.ContactID = @ContactID)
THEN 'Vendor Contact'
-- Check for store
WHEN EXISTS(SELECT * FROM Sales.StoreContact sc
INNER JOIN Person.ContactType ct
ON sc.ContactTypeID = ct.ContactTypeID
WHERE sc.ContactID = @ContactID)
THEN 'Store Contact'
-- Check for individual consumer
WHEN EXISTS(SELECT * FROM Sales.Individual i
WHERE i.ContactID = @ContactID)
THEN 'Consumer'
END;
-- Return the information to the caller
IF @ContactID IS NOT NULL
BEGIN
INSERT @retContactInformation
SELECT @ContactID, @FirstName, @LastName, @JobTitle, @ContactType;
END;
RETURN;
END;
GO

En el siguiente ejemplo se utiliza la funcin con valores de tabla


dbo.ufnGetContactInformation en la clusula FROM de dos instrucciones
SELECT.
USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(2200);
GO
Pgina 365 de 630

SELECT ContactID, FirstName, LastName, JobTitle, ContactType


FROM dbo.ufnGetContactInformation(5);
GO
Funciones en lnea definidas por el usuario
Las funciones en lnea definidas por el usuario son un subconjunto de
funciones definidas por el usuario que devuelven un tipo de datos table. Las
funciones en lnea pueden utilizarse para obtener la funcionalidad de vistas
con parmetros.
En el ejemplo siguiente se devuelven los nombres de almacn y las ciudades
de una regin especificada:
USE AdventureWorks;
GO
CREATE VIEW CustomersByRegion
AS
SELECT DISTINCT S.Name AS Store, A.City
FROM Sales.Store AS S
JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
JOIN Person.Address AS A ON A.AddressID = CA.AddressID
JOIN Person.StateProvince SP ON
SP.StateProvinceID = A.StateProvinceID
WHERE SP.Name = N'Washington';
GO
Esta vista se puede mejorar hacindola ms generalizada y permitiendo a los
usuarios especificar la regin que desean ver. No obstante, las vistas no
admiten parmetros en las condiciones de bsqueda especificadas en la
clusula WHERE. Las funciones en lnea definidas por el usuario pueden
utilizarse para admitir parmetros en las condiciones de bsqueda
especificadas en la clusula WHERE. En el ejemplo siguiente se crea una
funcin en lnea que permite a los usuarios especificar la regin en la
consulta:
USE AdventureWorks;
GO
IF OBJECT_ID(N'Sales.ufn_CustomerNamesInRegion', N'IF') IS NOT NULL
DROP FUNCTION Sales.ufn_CustomerNamesInRegion;
GO
CREATE FUNCTION Sales.ufn_CustomerNamesInRegion
( @Region nvarchar(50) )
RETURNS table
AS
RETURN (
SELECT DISTINCT S.Name AS Store, A.City
FROM Sales.Store AS S
JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
JOIN Person.Address AS A ON A.AddressID = CA.AddressID
JOIN Person.StateProvince SP ON
SP.StateProvinceID = A.StateProvinceID
WHERE SP.Name = @Region
)
Pgina 366 de 630

GO
-- Example of calling the function for a specific region
SELECT *
FROM Sales.ufn_CustomerNamesInRegion(N'Washington')
GO

Reglas de las funciones en lnea definidas por el usuario


Las funciones en lnea definidas por el usuario siguen las reglas siguientes:
La clusula RETURNS slo contiene la palabra clave table. No es necesario
definir el formato de una variable de retorno, ya que se define mediante el
formato del conjunto de resultados de la instruccin SELECT en la clusula
RETURN.
function_body no est delimitada por BEGIN ni END.
La clusula RETURN contiene una sola instruccin SELECT entre parntesis.
El conjunto de resultados de la instruccin SELECT forma la tabla devuelta
por la funcin. La instruccin SELECT utilizada en una funcin en lnea est
sujeta a las mismas restricciones que las instrucciones SELECT utilizadas en
las vistas.
La funcin con valores de tabla slo acepta constantes o argumentos
@local_variable.
Funciones deterministas y no deterministas
Las funciones deterministas devuelven el mismo resultado cada vez que se
llaman con un conjunto especfico de valores de entrada y cuando el estado
de la base de datos es el mismo. Las funciones no deterministas pueden
devolver resultados diferentes cada vez que se llaman con un conjunto
especfico de valores de entrada aunque el estado de la base de datos a la
que tienen acceso permanezca sin cambios.
Son varias las propiedades de las funciones definidas por el usuario que
determinan la capacidad de SQL Server Database Engine para indexar los
resultados de la funcin, ya sea mediante ndices en columnas calculadas
que llaman a la funcin o mediante vistas indexar que hacen referencia a la
funcin. El determinismo de una funcin es una propiedad as. Por ejemplo,
no se puede crear un ndice agrupado en una vista si sta hace referencia a
funciones no deterministas.
En este tema se identifica el determinismo de las funciones integradas del
sistema y cmo afectan las funciones definidas por el usuario a la propiedad
determinista cuando sta contiene una llamada a los procedimientos
almacenados extendidos.

Determinismo de las funciones integradas


El determinismo de las funciones integradas no se ve afectado por el usuario.
Las funciones integradas son deterministas o no deterministas segn el modo
en que Microsoft SQL Server 2005 implementa cada funcin.
Pgina 367 de 630

Todas las funciones integradas de cadena y de agregados son deterministas.


Las siguientes funciones integradas procedentes de categoras que no son
de agregados ni de cadena, siempre son deterministas.
ABS
DATEDIFF
PARSENAME
ACOS
DAY
POWER
ASIN
DEGREES
RADIANS
ATAN
EXP
ROUND
ATN2
FLOOR
SIGN
CEILING
ISNULL
SIN
COALESCE
ISNUMERIC
SQUARE
COS
LOG
SQRT
COT
LOG10
TAN
DATALENGTH
MONTH
YEAR
DATEADD
NULLIF
Las siguientes funciones no siempre son deterministas, pero pueden
utilizarse en vistas indexadas o en ndices de columnas calculadas si se
especifican de una manera determinista.
Funcin
CAST

Comentarios
Determinista, a menos que se utilice con datetime, smalldatetime o
sql_variant.
Determinista, a menos que se cumpla una de estas condiciones:

El tipo de origen es sql_variant.


El tipo de destino es sql_variant y el tipo de origen no es
determinista.
El tipo de origen o destino es datetime o smalldatetime, el otro
tipo de origen o destino es una cadena de caracteres, y se
CONVERT
especifica un tipo de estilo no determinista. Para que sea
determinista, el parmetro de estilo debe ser una constante.
Adems, los estilos con un valor menor o igual a 100 no son
deterministas, excepto los estilos 20 y 21. Los estilos con un valor
superior a 100 son deterministas, excepto los estilos 106, 107, 109
y 113.
CHECKSUM Determinista, excepto CHECKSUM(*).
Determinista slo si se utiliza con la funcin CONVERT, se especifica el
ISDATE
parmetro de estilo CONVERT y el estilo no es igual a 0, 100, 9 ni 109.
RAND
RAND es determinista slo cuando se especifica un parmetro seed.

Todas las funciones de configuracin, cursores, metadatos, seguridad y


estadsticas del sistema no son deterministas.
Las siguientes funciones integradas, procedentes de otras categoras, no son
deterministas nunca:
@@CONNECTIONS
@@CPU_BUSY
@@DBTS
@@IDLE

@@TOTAL_READ
@@TOTAL_WRITE
CURRENT_TIMESTAMP
GETDATE
Pgina 368 de 630

@@IO_BUSY
@@MAX_CONNECTIONS
@@PACK_RECEIVED
@@PACK_SENT
@@PACKET_ERRORS
@@TIMETICKS
@@TOTAL_ERRORS

GETUTCDATE
GET_TRANSMISSION_STATUS
NEWID
NEWSEQUENTIALID
RAND
TEXTPTR

Llamar a procedimientos almacenados extendidos desde funciones


Las funciones que llaman a procedimientos almacenados extendidos no son
deterministas porque los procedimientos almacenados extendidos pueden
producir efectos secundarios en la base de datos. Los efectos secundarios
son cambios de un estado global de la base de datos, como una
actualizacin de una tabla, o de un recurso externo, como un archivo o la red
(por ejemplo, la modificacin de un archivo o el envo de un mensaje de
correo electrnico). No debe confiar en la devolucin de un conjunto de
resultados coherente al ejecutar un procedimiento almacenado extendido
desde una funcin definida por el usuario. No se recomienda el uso de
funciones definidas por el usuario que producen efectos secundarios en la
base de datos.
Cuando se llama desde una funcin, el procedimiento almacenado extendido
no puede devolver conjuntos de resultados al cliente. Las API de Servicios
abiertos de datos que devuelven conjuntos de resultados al cliente tienen un
cdigo de retorno FAIL.
El procedimiento almacenado extendido puede volver a conectarse a SQL
Server. Sin embargo, no puede combinar la misma transaccin como la
funcin original que invoc el procedimiento almacenado extendido.
De forma similar a las invocaciones desde un lote o un procedimiento
almacenado, el procedimiento almacenado extendido se ejecuta en el
contexto de la cuenta de seguridad de Microsoft Windows con la que se
ejecuta SQL Server. El propietario del procedimiento almacenado extendido
debe tener esto en cuenta al conceder permisos a otros usuarios para
ejecutar el procedimiento.

Volver a escribir procedimientos almacenados como funciones


En este tema se describe la manera de determinar si se vuelve a escribir la
lgica de un procedimiento almacenado como una funcin definida por el
usuario. Por ejemplo, si desea invocar un procedimiento almacenado
directamente desde una consulta, reorganice el cdigo como si fuera una
funcin definida por el usuario.
Pgina 369 de 630

En general, si el procedimiento almacenado devuelve un solo conjunto de


resultados, defina una funcin con valores de tabla. Si el procedimiento
almacenado calcula un valor escalar, defina una funcin escalar.
Criterios para las funciones con valores de tabla
Si un procedimiento almacenado cumple los siguientes criterios, se puede
volver a escribir como una funcin con valores de tabla:
La lgica se puede expresar en una sola instruccin SELECT, pero es un
procedimiento almacenado en lugar de una vista por el mero hecho de que
requiere parmetros. Este escenario puede controlarse con una funcin con
valores de tabla en lnea.
Este procedimiento almacenado no realiza operaciones de actualizacin,
excepto en variables de tabla.
No son necesarias las instrucciones EXECUTE dinmicas.
El procedimiento almacenado devuelve un conjunto de resultados.
El objetivo principal de un procedimiento almacenado es generar resultados
intermedios que se cargan en una tabla temporal, que luego se consulta en
una instruccin SELECT. Las instrucciones INSERT...EXEC pueden escribirse
utilizando funciones con valores de tabla. Considere, por ejemplo, la
secuencia siguiente:
INSERT #temp EXEC sp_getresults
SELECT ...
FROM #temp, t1
WHERE ...

El procedimiento almacenado sp_getresults se puede volver a escribir como


una funcin con valores de tabla, por ejemplo fn_results(), que significa que
la instruccin anterior puede volver a escribirse como:

INSERT #temp
SELECT ...
FROM fn_results(), t1
WHERE ...

Volver a escribir procedimientos almacenados extendidos mediante CLR


Las funciones CLR suponen una alternativa ms confiable y escalable frente
a los procedimientos almacenados extendidos. Muchos procedimientos
almacenados extendidos realizan tareas de clculo que son difciles de
expresar en Transact-SQL. Tales procedimientos almacenados se pueden
volver a escribir mediante CLR para disfrutar de las ventajas despcritas
anteriormente. Adems, los procedimientos almacenados extendidos que
devuelven conjuntos de resultados mediante el acceso a un recurso externo,

Pgina 370 de 630

como un archivo o un servicio Web, se pueden volver a escribir mediante una


funcin con valores de tabla CLR.

SubConsultas
Una subconsulta es una consulta anidada en una instruccin SELECT,
INSERT, UPDATE o DELETE, o bien en otra subconsulta. Las subconsultas
se pueden utilizar en cualquier parte en la que se permita una expresin. En
este ejemplo, se utiliza una subconsulta como una expresin de columna
llamada MaxUnitPrice en una instruccin SELECT.
SELECT Ord.SalesOrderID, Ord.OrderDate,
(SELECT MAX(OrdDet.UnitPrice)
FROM AdventureWorks.Sales.SalesOrderDetail AS OrdDet
WHERE Ord.SalesOrderID = OrdDet.SalesOrderID) AS MaxUnitPrice
FROM AdventureWorks.Sales.SalesOrderHeader AS Ord
Se llama tambin subconsulta a una consulta o seleccin interna, mientras
que la instruccin que contiene una subconsulta tambin es conocida como
consulta o seleccin externa.
Muchas de las instrucciones Transact-SQL que incluyen subconsultas se
pueden formular tambin como combinaciones. Otras preguntas se pueden
formular slo con subconsultas. En Transact-SQL, normalmente no hay
diferencias de rendimiento entre una instruccin que incluya una subconsulta
y una versin semnticamente equivalente que no la incluya. Sin embargo,
en algunos casos en los que se debe comprobar la existencia de un
elemento, una combinacin produce mejores resultados. De lo contrario, se
debe procesar la consulta anidada para cada resultado de la consulta externa
con el fin de garantizar la eliminacin de los duplicados. En tales casos, la
utilizacin de combinaciones producir mejores resultados. A continuacin
aparece un ejemplo que muestra una subconsulta SELECT y una
combinacin SELECT que devuelven el mismo conjunto de resultados:
/* SELECT statement built using a subquery. */
SELECT Name
FROM AdventureWorks.Production.Product
WHERE ListPrice =
(SELECT ListPrice
FROM AdventureWorks.Production.Product
WHERE Name = 'Chainring Bolts' )
/* SELECT statement built using a join that returns
the same result set. */
SELECT Prd1. Name
FROM AdventureWorks.Production.Product AS Prd1
Pgina 371 de 630

JOIN AdventureWorks.Production.Product AS Prd2


ON (Prd1.ListPrice = Prd2.ListPrice)
WHERE Prd2. Name = 'Chainring Bolts'

Una subconsulta anidada en la instruccin externa SELECT tiene los


componentes siguientes:
Una consulta SELECT normal, que incluye los componentes normales de la
lista de seleccin.
Una clusula normal FROM que incluye uno o varios nombres de tablas o
vistas.
Una clusula opcional WHERE.
Una clusula opcional GROUP BY.
Una clusula opcional HAVING.
La consulta SELECT de una subconsulta se presenta siempre entre
parntesis. No puede incluir una clusula COMPUTE o FOR BROWSE y slo
puede incluir una clusula ORDER BY cuando se especifica tambin una
clusula TOP.
Una subconsulta puede anidarse en la clusula WHERE o HAVING de una
instruccin externa SELECT, INSERT, UPDATE o DELETE, o bien en otra
subconsulta. Se puede disponer de hasta 32 niveles de anidamiento, aunque
el lmite vara dependiendo de la memoria disponible y de la complejidad del
resto de las expresiones de la consulta. Las consultas individuales no
permiten anidamientos de ms de 32 niveles. Una subconsulta puede
aparecer en cualquier parte en la que se pueda usar una expresin, si
devuelve un solo valor.
Si una tabla slo aparece en una subconsulta y no en la consulta externa, las
columnas de esa tabla no se podrn incluir en la salida (la lista de seleccin
de la consulta externa).
Las instrucciones que incluyen una subconsulta normalmente tienen uno de
estos formatos:
WHERE expression [NOT] IN (subquery)
WHERE expression comparison_operator [ANY | ALL] (subquery)
WHERE [NOT] EXISTS (subquery)
En algunas instrucciones Transact-SQL, la subconsulta se puede evaluar
como si fuera una consulta independiente. Conceptualmente, los resultados
de la subconsulta se sustituyen en la consulta externa, aunque en realidad
sta no es la forma en la que Microsoft SQL Server 2005 procesa las
instrucciones Transact-SQL con subconsultas.
Hay tres tipos bsicos de subconsultas, que son las siguientes:
Las que operan en listas especificadas con IN o modificadas por un operador
de comparacin mediante ANY o ALL.
Pgina 372 de 630

Las que se especifican con un operador de comparacin sin modificar y


deben devolver un solo valor.
Las que son pruebas de existencia especificadas con EXISTS.

Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 5
Seguridad

2007

Pgina 373 de 630

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 374 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 375 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 376 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 377 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 378 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 379 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 380 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 381 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 382 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 383 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 384 de 630

Unidad 5: Seguridad
Objetivos
Dar una visin acerca de los conceptos bsicos de la
Seguridad en SQL Server 2005. Los temas que se abordarn
sern los siguientes:
j. Seguridad SQL y Seguridad de Windows
k. Usuarios
l. Roles
m. Esquemas
n. Permisos
o. Cifrado

Pgina 385 de 630

Seguridad SQL y Seguridad de Windows


SQL Server valida a los usuarios con 2 niveles de seguridad; autentificacin
del login y validacin de permisos en las Base de Datos de cuentas de
usuarios y de roles. La autentificacin identifica al usuario que est usando
una cuenta y verifica slo la habilidad de conectarse con SQL Server. El
usuario debe tener permiso para acceder a las Bases de Datos en el
Servidor. Esto se cumple para asignar permisos especficos para la Base de
Datos, para las cuentas de usuario y los roles. Los permisos controlan las
actividades que el usuario tiene permitido realizar en la Base de Datos del
SQL Server.

Autentificacin del Login:


Un usuario debe tener una cuenta previamente creada para conectarse al
SQL Server. Este reconoce 2 mecanismos de autentificacin: Autentificacin
de SQL Server y de Windows NT. Cada uno tiene un diferente tipo de
cuenta.

Autentificacin del SQL Server:


Cuando se usa, un administrador del Sistema de SQL Server, define una
cuenta y un password SQL Server. Los usuarios deben suministrar tanto el
login como el password cuando se conectan al SQL Server.

Autentificacin de Windows NT:


Cuando se usa, el usuario no necesita de una cuenta de SQL Server, para
conectarse. Un administrador del sistema debe definir, ya sea cuentas de
Windows NT o grupos de Windows NT como cuentas vlidas de SQL Server.

Modo de Autentificacin:
Cuando SQL Server est corriendo en Windows NT, un sistema
administrador puede especificar que est corriendo en uno de 2 modos de
autentificacin:
Modo de autentificacin de Windows NT: Slo est autorizada la
autentificacin de Windows NT. Los usuarios no pueden usar cuentas de
SQL Server.

Pgina 386 de 630

Modo mixto: Cuando se usa este modo de autentificacin, los usuarios se


pueden conectar a SQL Server con la autentificacin de Windows NT o con la
de SQL Server.

Usuarios
Una de las tareas comunes al administrar SQL Server es permitir el acceso a
una bases de datos y la asignacin de permisos o restricciones sobre los
objetos que conforman una base de datos. SQL Server 2000 permite trabajar
a nivel de Roles y Usuarios. Un rol es un conjunto de derechos asignados,
los cuales se convierten en una gran alternativa para agrupar un conjunto de
permisos, de tal forma que cuando se incorpore un nuevo usuario a la base
de datos, ya no se le tiene que dar permiso por permiso por cada uno de los
objetos que requiera emplear, sino mas bien su cuenta de usuario es
agregada al rol automticamente el permiso o la restriccin afectar a los
usuarios que pertenezcan a un rol.
Los usuarios representan los usuarios que tienen acceso a la base de datos
y estn mapeados a un Inicio de sesin. Despus de que se crearon los
Inicios de sesin para conectarse a SQL Server, se deben definir los accesos
a las bases de datos requeridas, para ello es necesario definir Usuarios en
cada Base de Datos, estos usuarios permitirn controlar el acceso a los
distintos objetos incluyendo los datos que estos contienen.

Cuentas de Usuario y Roles en una Base de Datos:


Despus de que los usuarios han sido autentificados, y se les ha permitido
conectarse al SQL Server, deben tener cuentas en la Base de Datos. Las
cuentas de usuario y los roles, identifican permisos para ejecutar tareas.

Cuentas de Usuarios de la Base de Datos:


Las cuentas de usuario utilizadas para aplicar permisos de seguridad son las
de usuarios, o grupos de Windows NT o las de SQL Server. Las cuentas de
usuario son especficas para cada Base de Datos.

Asegurables
Son un conjunto jerrquico de entidades que se pueden proteger mediante
permisos. Estas entidades se conocen como asegurables. Los asegurables
ms importantes son los servidores y las bases de datos, aunque se pueden
establecer permisos discretos en niveles menores.
Pgina 387 de 630

Roles
Permiten reunir a los usuarios en una sola unidad a la cual se le pueden
aplicar permisos o restricciones. SQL Server contiene roles de servidor y de
Base de Datos predefinidos, para tareas administrativas comunes. Tambin
se pueden crear roles de Base de Datos definidos por el usuario. En SQL
Server, los usuarios pueden pertenecer a varios roles:
Roles fijos del Servidor: Proveen agrupamientos con privilegios
administrativos a nivel del Servidor. Son administrados independientemente
de las Bases de Datos de usuarios a nivel servidor.
Roles fijos de la Base de Datos: Proveen agrupamientos con privilegios
administrativos a nivel de Base de Datos.
Roles de usuarios definidos en la Base de Datos: Tambin se pueden crear
roles para Base de Datos, para representar un trabajo desarrollado por un
grupo de empleados dentro de una organizacin. No es necesario asignar y
quitar permisos a cada persona. En funcin de que cambia un rol, se pueden
cambiar fcilmente los permisos del rol y hacer que los cambios se apliquen
automticamente a todos los miembros del rol.

Esquemas
Un esquema es una coleccin de entidades de base de datos que forman un
solo espacio de nombres. Un espacio de nombres es un conjunto en el que
cada elemento tiene un nombre exclusivo.
Por ejemplo, para evitar conflictos de nombre, no puede haber dos tablas en
el mismo esquema con el mismo nombre. Dos tablas slo pueden tener el
mismo nombre si se encuentran en esquemas distintos.
Existen varios esquemas para definir una Base de Datos, algunos de los
cuales se definen a continuacin:
ESQUEMA
Esquema de
base de datos
Equema
de
copo de nieve

Esquema de
particiones
Esquema en
estrella

Esquema
SQL

de

DESCRIPCION
Compuesto por: Nombre de las tablas, campos, tipos de datos y claves
principales y externas de una base de datos. Tambin se conoce como
estructura de base de datos.
Extensin de un esquema de estrella de forma que una o ms dimensiones
se definen mediante varias tablas. En un esquema de copo de nieve, slo
las tablas de la dimensin principal se combinan con la tabla de hechos.
Las tablas de la dimensin adicional se combinan con las tablas de la
dimensin principal.
Objeto de base de datos que asigna las particiones de una funcin de
particin a un conjunto de grupos de archivos.
Estructura de base de datos relacional en la que los datos se mantienen en
una sola tabla de hechos en el centro del esquema, con datos de
dimensiones adicionales almacenados en las tablas de dimensiones. Cada
tabla de dimensiones se relaciona directamente y se combina
habitualmente con la tabla de hechos mediante una columna de clave. Los
esquemas en estrella se usan en almacenamientos de datos,
datawarehouse.
Conjunto de tablas estndar que usa el motor del repositorio para
administrar todos los asegurables, relaciones y colecciones de repositorio.
Pgina 388 de 630

repositorio

Un esquema SQL de repositorio asigna elementos del modelo de


informacin a elementos del esquema SQL.

Separacin de esquemas de usuario


En SQL Server 2005, no hay una conexin implcita entre los esquemas y los
usuarios de base de datos.
Advertencia:
Varios usuarios de base de datos pueden compartir ahora el mismo esquema
predeterminado y un esquema puede contener asegurables que pertenezcan
a un usuario de base de datos diferente al usuario de base de datos
propietario del esquema. Este cambio importante se refleja en los metadatos
de la base de datos. Esta informacin no est disponible en vistas de
compatibilidad. Se recomienda firmemente que utilice vistas de catlogo para
tener acceso a los metadatos en SQL Server 2005.
Nota:
En el contexto de las herramientas de base de datos, el esquema tambin
hace referencia a la informacin de catlogo que describe los asgurables de
un esquema o una base de datos.
En el contexto de Analysis Services, el esquema hace referencia a
asegurables multidimensionales, como cubos y dimensiones.

Esquema en SQL Server 2000 y esquema en SQL Server 2005


Aunque SQL Server 2000 cuenta con una instruccin CREATE SCHEMA,
esta instruccin no crea realmente un esquema de la forma que se ha
definido anteriormente en este tema en SQL Server 2000; los esquemas y los
usuarios de la base de datos estn conectados implcitamente. Cada usuario
de base de datos es el propietario de un esquema que tiene el mismo nombre
que el usuario. Adems, un propietario de un objeto es idntico al del
esquema que lo contiene. Por tanto, el "esquema" de un nombre completo en
SQL Server 2000 tambin es un usuario en la base de datos.
Por este motivo, antes de quitar un usuario de una base de datos de SQL
Server 2000, el administrador debe quitar todos los asegurables que
pertenecen a ese usuario o cambiar el propietario.
Al transferir la propiedad del objeto tambin se cambia su nombre completo.
En SQL Server 2005, los esquemas existen independientemente del usuario
de base de datos que los crea. Se puede transferir la propiedad de los
esquemas sin cambiar sus nombres. Adems, se pueden crear asegurables
en esquemas con nombres descriptivos que indican claramente su funcin.
En SQL Server 2005, los esquemas son entidades explcitas reflejadas en los
Pgina 389 de 630

metadatos, y la relacin entre usuario y esquema es 0 o uno a 0 o ms. Esta


compleja relacin no est reflejada en las tablas de sistema de SQL Server
2000.
En SQL Server 2005, se recomienda que utilice las nuevas vistas de
catlogo. En la tabla siguiente se muestra la asignacin entre las tablas de
sistema de SQL Server 2000 y las vistas de catlogo de SQL Server 2005
equivalentes.
Tabla del sistema de SQL Server
2000
sysusers
syslogins

Vista de catlogo de SQL Server


2005
sys.database_principals
sys.schemas
sys.server_principals

Ventajas de la separacin entre esquema y usuario


La abstraccin por parte de usuarios de base de datos de los esquemas
ofrece las siguientes ventajas a los administradores y programadores:
Un mismo esquema puede ser propiedad de varios usuarios mediante la
pertenencia a funciones o grupos de Windows. Esto ampla esta conocida
funcionalidad y permite a las funciones y grupos ser propietarios de
asegurables.
La eliminacin de usuarios de base de datos resulta mucho ms sencilla.
Quitar un usuario de base de datos no requiere cambiar el nombre de los
objetos incluidos en el esquema de dicho usuario. Por tanto, no tiene que
revisar ni probar las aplicaciones que hacen referencia de forma explcita a
los asegurables incluidos en el esquema despus de quitar al usuario que los
cre.
Varios usuarios pueden compartir un esquema predeterminado, con lo que la
resolucin de nombres resulta uniforme.
El uso compartido de esquemas predeterminados permite a los
programadores almacenar asegurables compartidos en un esquema creado
especficamente para una aplicacin determinada, en lugar de almacenarlos
en el esquema dbo.
Se pueden administrar los permisos en esquemas y asegurables incluidos en
los mismos con un mayor nivel de detalle que en las versiones anteriores.
Los
nombres
de
objeto
completos
tienen
cuatro
partes:
servidor.baseDeDatos.esquema.objeto.

Esquemas predeterminados

Pgina 390 de 630

Tambin introduce el concepto de esquema predeterminado. Un esquema


predeterminado se utiliza para resolver los nombres de objetos a los que se
hace referencia sin utilizar sus nombres completos. En SQL Server 2000, la
ubicacin que se comprueba primero es el esquema propiedad del usuario de
base de datos que realiza la llamada, seguido del esquema propiedad de
dbo. En SQL Server 2005, cada usuario tiene un esquema predeterminado.
Este esquema predeterminado especifica el primer esquema donde buscar
el servidor cuando resuelva los nombres de objetos. Se puede establecer y
cambiar
el
esquema
predeterminado
mediante
la
opcin
DEFAULT_SCHEMA de las instrucciones CREATE USER o ALTER USER.
Si DEFAULT_SCHEMA se deja sin definir, el usuario de base de datos tendr
dbo como su esquema predeterminado.

Autorizacin
Con esta versin del SQL se puede transferir la propiedad de muchos
objetos. Adems, un esquema puede contener objetos propiedad de un
usuario de base de datos diferente del usuario de base de datos que posee el
esquema. ste es un cambio importante en los metadatos de la base de
datos. Esta informacin no est disponible en sysobjects. Debe utilizar vistas
de catlogos para tener acceso a los metadatos en SQL Server 2005.

Permisos
Dentro de cada Base de Datos, se asignan permisos a las cuentas de
usuarios y a los roles para permitir o limitar ciertas acciones. SQL Server
acepta comandos despus de que un usuario ha accedido a la Base de
datos.
SQL Server realiza los siguientes pasos para validar permisos:
Cuando el usuario realiza una accin, tal como ejecutar un comando de
Transact-SQL o elegir una opcin de un men, los comandos de Transact
SQL son enviadas al SQL Server.
Cuando SQL Server recibe un comando de Transact SQL, chequea que el
usuario tenga permiso de ejecutar dicha instruccin.
Despus, SQL realiza cualquiera de las siguientes acciones:
a) Si el usuario no tiene los permisos adecuados, SQL Server
devuelve un error.
b) Si el usuario tiene los permisos adecuados, SQL Server
realiza la accin.

Pgina 391 de 630

El Agente SQL Server permite al administrador de la base de datos ejecutar


cada paso de trabajo en un contexto seguro que slo tiene los permisos
necesarios para realizar ese paso de trabajo, determinado por un servidor
proxy del Agente SQL Server. Para establecer los permisos para un paso de
trabajo concreto, se debera crear un proxy que disponga de los permisos
necesarios y, a continuacin, asignar ese proxy al paso de trabajo. Se puede
especificar un servidor proxy en ms de un paso de trabajo. Para los pasos
de trabajo que necesitan los mismos permisos se utiliza el mismo proxy.
En las siguientes secciones se explica el procedimiento para asignar
permisos a usuarios de una base de datos, mediante el Agente SQL Server.

Conceder acceso al Agente SQL Server


Para utilizar el Agente SQL Server, los usuarios deben ser miembros de una
o ms de las siguientes funciones fijas de base de datos:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
Estas funciones se almacenan en la base de datos msdb. De manera
predeterminada, ningn usuario es miembro de estas funciones de base de
datos. La pertenencia a estas funciones se debe permitir explcitamente. Los
usuarios que sean miembros de la funcin fija de servidor sysadmin tienen
acceso total al Agente SQL Server, y no necesitan ser miembros de estas
funciones fijas de base de datos para utilizar el Agente SQL Server. Si un
usuario no es miembro de una de estas funciones de base de datos ni de la
funcin sysadmin, el nodo del Agente SQL Server no estar disponible para
ellos cuando se conecten con SQL Server mediante SQL Server
Management Studio.
Los miembros de estas funciones de base de datos pueden ver y ejecutar
trabajos que les pertenecen, as como crear pasos de trabajos que se
ejecuten como una cuenta de proxy existente.
Los miembros de la funcin fija de servidor sysadmin tienen permiso para
crear, modificar o eliminar cuentas de proxy. Los miembros de la funcin
sysadmin tienen permiso para crear pasos de trabajo que no especifiquen un
proxy, sino que se ejecuten como la cuenta de servicio del Agente SQL
Server, que es la cuenta que se utiliza para iniciar el Agente SQL Server.

Jerarqua de permisos
El SQL Server 2005 Database Engine administra un conjunto jerrquico de
entidades que se pueden proteger mediante permisos, estas entidades, los
asegurables, se consideran como los ms importantes los servidores y las
bases de datos, aunque se pueden establecer permisos discretos en niveles
inferiores. SQL Server regula las acciones de las entidades de seguridad en
Pgina 392 de 630

los asegurables comprobando que se les han concedido los permisos


adecuados.
En la ilustracin siguiente se muestran las relaciones entre las jerarquas de
permisos del Database Engine (Motor de base de datos).

Convenciones de nomenclatura de permisos

Pgina 393 de 630

A continuacin se describen las convenciones generales que se siguen en la


nomenclatura de permisos:
CONTROL
Confiere al receptor del permiso capacidades relacionadas con la propiedad.
El receptor del permiso dispone de hecho de todos los permisos definidos en
el asegurable. Una entidad de seguridad a la que se le haya concedido el
permiso CONTROL tambin puede conceder permisos en el asegurable.
Como el modelo de seguridad de SQL Server es jerrquico, el permiso
CONTROL de un determinado mbito incluye implcitamente el mismo
permiso CONTROL en todos los asegurables que abarca dicho mbito. Por
ejemplo, el permiso CONTROL en una base de datos implica todos los
permisos de la base de datos, todos los permisos en todos los assemblies y
todos los esquemas de la misma, as como todos los permisos en los objetos
de todos los esquemas que incluye la base de datos.
ALTER
Confiere la posibilidad de cambiar las propiedades, excepto la propiedad, de
un asegurable determinado. Cuando se concede en un mbito, ALTER
tambin confiere la posibilidad de modificar, crear o quitar cualquier
asegurable que est contenido en ese mbito. Por ejemplo, el permiso
ALTER en un esquema incluye la posibilidad de crear, modificar y quitar
objetos del esquema.
ALTER ANY <Server Securable>, donde Server Securable puede ser
cualquier asegurable de servidor. Confiere la posibilidad de crear, modificar o
quitar instancias individuales del Server Securable. Por ejemplo, ALTER ANY
LOGIN confiere la posibilidad de crear, modificar o quitar cualquier inicio de
sesin en la instancia.
ALTER ANY <Database Securable>, donde Database Securable puede ser
cualquier
asegurable
a
nivel
de
la
base
de
datos.
Confiere la posibilidad de crear, modificar o quitar instancias individuales de
Database Securable. Por ejemplo, ALTER ANY SCHEMA confiere la
posibilidad de crear, modificar o quitar cualquier esquema en la base de
datos.
TAKE OWNERSHIP Permite al receptor del permiso tomar propiedad del
asegurable para el que se concede este permiso.
IMPERSONATE <Login> Permite al receptor suplantar el inicio de sesin.
IMPERSONATE <User> Permite al receptor suplantar al usuario.
CREATE <Server Securable> Confiere al receptor la posibilidad de crear el
asegurable de servidor.
CREATE <Database Securable> Confiere al receptor la posibilidad de crear el
asegurable de base de datos.
CREATE <Schema-contained Securable> Confiere la posibilidad de crear el
asegurable contenido en el esquema. No obstante, para crear el asegurable
en un esquema concreto se requiere el permiso ALTER en el esquema.
VIEW DEFINITION Permite al receptor obtener acceso a los metadatos.
BACKUP y DUMP son sinnimos.
RESTORE y LOAD son sinnimos.

Pgina 394 de 630

Permisos aplicables a asegurables especficos


En la siguiente tabla se enumeran los principales tipos de permisos y los tipos
de objetos a los que se pueden aplicar.
Permiso
SELECT

UPDATE
REFERENCES

INSERT
DELETE
EXECUTE
RECEIVE
VIEW
DEFINITION

ALTER

TAKE
OWNERSHIP

CONTROL

Se aplica a
Sinnimos
Tablas y columnas
Funciones con valores de tabla, Transact-SQL y Common
Language Runtime (CLR), y columnas
Vistas y columnas
Sinnimos
Tablas y columnas
Vistas y columnas
Funciones escalares y de agregado (Transact-SQL y CLR)
Colas de SQL Server 2005 Service Broker
Tablas y columnas
Funciones con valores de tabla (Transact-SQL y CLR), y columnas
Vistas y columnas
Sinnimos
Tablas y columnas
Vistas y columnas
Sinnimos
Tablas y columnas
Vistas y columnas
Procedimientos (Transact-SQL y CLR)
Funciones escalares y de agregado (Transact-SQL y CLR)
Sinnimos
Colas de Service Broker
Procedimientos (Transact-SQL y CLR)
Colas de Service Broker
Funciones escalares y de agregado (Transact-SQL y CLR)
Sinnimos
Tablas
Funciones con valores de tabla (Transact-SQL y CLR)
Vistas
Procedimientos (Transact-SQL y CLR)
Funciones escalares y de agregado (Transact-SQL y CLR)
Colas de Service Broker
Tablas
Funciones con valores de tabla (Transact-SQL y CLR)
Vistas
Procedimientos (Transact-SQL y CLR)
Funciones escalares y de agregado (Transact-SQL y CLR)
Sinnimos
Tablas
Funciones con valores de tabla (Transact-SQL y CLR)
Vistas
Procedimientos (Transact-SQL y CLR)
Funciones escalares y de agregado (Transact-SQL y CLR)
Colas de Service Broker
Sinnimos
Tablas
Funciones con valores de tabla (Transact-SQL y CLR)
Vistas

Pgina 395 de 630

Ejemplos
Los siguientes ejemplos muestran cmo puede recuperar la informacin
sobre permisos mediante programacin.
A. Devolviendo la lista completa de los permisos que pueden
concederse.
SELECT * FROM fn_builtin_permissions(default); GO
B. Devolviendo los permisos de una clase de objetos concreta
El ejemplo siguiente devuelve permisos de assemblies.
SELECT * FROM fn_builtin_permissions('assembly'); GO
C. Devolviendo los permisos de un objeto concedidos a la entidad de
seguridad que se ejecuta
El ejemplo siguiente devuelve los permisos de un objeto denominado
Orders55.
SELECT * FROM fn_my_permissions('Orders55', 'object'); GO
D. Devolviendo los permisos aplicables a un objeto especificado
El ejemplo siguiente devuelve los permisos aplicables a un objeto
denominado Yttrium. Observe que la funcin integrada OBJECT_ID se utiliza
para devolver el identificador del objeto Yttrium.
SELECT * FROM sys.database_permissions
OBJECT_ID('Yttrium'); GO

WHERE

major_id

Pgina 396 de 630

Trabajar con permisos


Los permisos se pueden manipular con las conocidas consultas GRANT,
DENY y REVOKE de Transact-SQL. La informacin sobre los permisos est
visible
en
las
vistas
de
catlogo
sys.server_permissions
y
sys.database_permissions. Tambin hay informacin sobre la compatibilidad
con permisos para consultas mediante el uso de las funciones integradas.

GRANT (Transact-SQL)
Concede permisos en un asegurable a una entidad de seguridad.
Se puede utilizar la instruccin REVOKE para retirar permisos concedidos y
la instruccin DENY para evitar que una entidad de seguridad obtenga un
permiso especfico mediante una instruccin GRANT.
La concesin de un permiso elimina DENY o REVOKE de ese permiso en el
asegurable especificado. Si se deniega el mismo permiso en un mbito
superior que contiene el asegurable, DENY tiene prioridad. No obstante,
revocar el permiso concedido en un mbito superior no tiene prioridad.
Los permisos en nivel de base de datos se conceden en el mbito de la base
de datos especificada. Si un usuario necesita permisos para objetos de otra
base de datos, se debera crear la cuenta del usuario en la otra base de
datos o conceder a la cuenta del usuario acceso a la otra base de datos y a la
base de datos actual.
Advertencia:
En SQL Server 2005 una instruccin DENY en el nivel de tabla no tiene
prioridad sobre GRANT en el nivel de columna. Esta incoherencia en la
jerarqua de permisos se ha mantenido por motivos de compatibilidad con
versiones anteriores. Se eliminar en una versin futura.
El procedimiento almacenado del sistema sp_helprotect informa de los
permisos sobre un asegurable en el nivel de base de datos.
El que asigna permisos (o la entidad de seguridad especificada con la opcin
AS) debe tener el permiso con GRANT OPTION, o un permiso superior que
implique el permiso que se va a conceder. Si se utiliza la opcin AS, se
aplican requisitos adicionales. Para obtener ms detalles vea el tema
especfico de los asegurables.
Los propietarios de objetos pueden conceder permisos en los objetos que
poseen. Las entidades de seguridad con el permiso CONTROL en un
asegurable pueden conceder permisos en ese asegurable.
Los receptores del permiso CONTROL SERVER, como los miembros de la
funcin fija de servidor sysadmin, pueden conceder los permisos en
cualquier asegurable en el servidor. Los receptores del permiso CONTROL
en una base de datos, como los miembros de la funcin fija de base de datos
db_owner, pueden conceder los permisos en cualquier asegurable en la
Pgina 397 de 630

base de datos. Los receptores del permiso CONTROL en un esquema


pueden conceder los permisos en cualquier objeto del esquema.

DENY (Transact-SQL)
Deniega un permiso a una entidad de seguridad. Evita que la entidad de
seguridad herede permisos por su pertenencia a grupos o funciones.
DENY producir un error si CASCADE no se especifica al denegar un
permiso a una entidad de seguridad a la que se concedi ese permiso con
GRANT OPTION.
El procedimiento almacenado del sistema sp_helprotect informa de los
permisos sobre un asegurable en el nivel de base de datos.
Advertencia:
En SQL Server 2005 una instruccin DENY en el nivel de tabla no tiene
prioridad sobre GRANT en el nivel de columna. Esta incoherencia en la
jerarqua de permisos se ha mantenido por motivos de compatibilidad con
versiones anteriores. Se eliminar en una versin futura.
Advertencia:
Si se deniega el permiso CONTROL en una base de datos, se deniega
implcitamente el permiso CONNECT. Una entidad de seguridad a la que se
deniega el permiso CONTROL en una base de datos no podr conectarse a
esa base de datos.
Si se deniega el permiso CONTROL SERVER, se deniega implcitamente el
permiso CONNECT SQL en el servidor. Una entidad de seguridad a la que se
deniega el permiso CONTROL SERVER en un servidor no podr conectarse
a ese servidor.

El autor de la llamada (o la entidad de seguridad especificada en la opcin


AS) debe tener el permiso CONTROL sobre el asegurable o un permiso
superior que implique el permiso CONTROL sobre el asegurable. Si utiliza la
opcin AS, la entidad de seguridad especificada debe poseer el asegurable
sobre el que se deniega un permiso.
Los beneficiarios del permiso CONTROL SERVER, por ejemplo, los
miembros de la funcin fija de servidor sysadmin, pueden denegar cualquier
permiso sobre cualquier asegurable en el servidor. Los beneficiarios del
permiso CONTROL en la base de datos, por ejemplo, los miembros de la
funcin fija de base de datos db_owner, pueden denegar cualquier permiso
sobre cualquier asegurable en la base de datos. Los beneficiarios del permiso
CONTROL sobre un esquema pueden denegar cualquier permiso sobre
cualquier objeto en el esquema. Si se usa la clusula AS, la entidad de
seguridad especificada debe ser propietaria de los permisos que se van a
denegar.
Pgina 398 de 630

REVOKE (Transact-SQL)
Quita un permiso concedido o denegado previamente.
Se puede utilizar la instruccin REVOKE para retirar permisos concedidos y
la instruccin DENY para evitar que una entidad de seguridad obtenga un
permiso especfico mediante una instruccin GRANT.
La concesin de un permiso elimina DENY o REVOKE de ese permiso en el
asegurable especificado. Si se deniega el mismo permiso en un mbito
superior que contiene el asegurable, DENY tiene prioridad. No obstante,
revocar el permiso concedido en un mbito superior no tiene prioridad.
Advertencia:
En SQL Server 2005 una instruccin DENY en el nivel de tabla no tiene
prioridad sobre GRANT en el nivel de columna. Esta incoherencia en la
jerarqua de permisos se ha mantenido por compatibilidad con versiones
anteriores. Este comportamiento se eliminar en una versin futura.
El procedimiento almacenado del sistema sp_helprotect informa de los
permisos sobre un asegurable en el nivel de base de datos.
La instruccin REVOKE generar errores si no se especifica CASCADE al
revocar un permiso de una entidad de seguridad que tena concedido ese
permiso con GRANT OPTION especificada.

Pgina 399 de 630

Cifrado
SQL Server 2005 cifra los datos con una infraestructura de cifrado jerrquico
y administracin de claves. Cada capa cifra la capa inferior utilizando una
combinacin de certificados, claves asimtricas y claves simtricas. Como se
muestra en la siguiente ilustracin, la jerarqua de cifrado es paralela a la
jerarqua de objetos que pueden protegerse que se describe en Jerarqua de
permisos.
La siguiente ilustracin muestra que cada capa de la jerarqua de cifrado cifra
la capa que tiene debajo. La capa superior, la clave maestra de servicio, se
cifra con la API de proteccin de datos (DPAPI) de Windows.

Mecanismos de cifrado
SQL Server 2005 le ofrece los mecanismos siguientes para el cifrado:
Certificados
Claves asimtricas
Claves simtricas

Pgina 400 de 630

Certificados
Un certificado de clave pblica, normalmente denominado slo certificado, es
una instruccin firmada digitalmente que enlaza el valor de una clave pblica
con la identidad de la persona, dispositivo o servicio que tiene la clave
privada correspondiente. Las entidades emisoras de certificados (CA) son las
encargadas de emitir y firmar los certificados. La entidad que recibe un
certificado de una CA es el sujeto de ese certificado. Por lo general, los
certificados contienen la siguiente informacin.
La clave pblica del sujeto.
La informacin que identifica al sujeto, como el nombre y la direccin de
correo electrnico.
El periodo de validez. Es decir, el periodo de tiempo durante el que el
certificado
se
considera
vlido.
Un certificado slo es vlido durante el periodo de tiempo que se especifica
en el mismo; todos los certificados contienen una fecha Vlido desde y otra
Vlido hasta. Estas fechas establecen los lmites del periodo de validez.
Cuando el periodo de validez de un certificado ha transcurrido, es necesario
que el sujeto del certificado caducado solicite uno nuevo.
Informacin de identificador del emisor.
La
firma
digital
del
emisor.
Esta firma da fe de la validez de las obligaciones entre la clave pblica y la
informacin de identificador del sujeto. (El proceso de firmar digitalmente la
informacin conlleva transformar la informacin, as como cierta informacin
privada que conserva el remitente, en una etiqueta denominada firma.)
Una de las principales ventajas de los certificados es que liberan a los hosts
de la necesidad de establecer contraseas para sujetos individuales. En su
lugar, el host simplemente establece la confianza en un emisor de
certificados, que a continuacin puede firmar un nmero ilimitado de
certificados.
Cuando un host, por ejemplo, un servidor Web seguro, designa a un emisor
como entidad emisora raz de confianza, el host implcitamente confa en las
directivas que el emisor ha utilizado para establecer las obligaciones de los
certificados que emite. En efecto, el host confa en que el emisor ha
comprobado las identidad del sujeto del certificado. Un host designa a un
emisor como entidad emisora raz de confianza presentando el certificado
autofirmado del emisor, que contiene la clave pblica de ste, en el almacn
de certificados de la entidad emisora de certificados raz de confianza del
equipo host. Las entidades emisoras de certificados intermedias o
subordinadas slo son de confianza si tienen una ruta vlida de certificacin
procedente de una entidad emisora de certificados raz.
El emisor puede revocar un certificado antes de que caduque. La revocacin
cancela las obligaciones que una clave pblica tiene con una identidad que
se exprese en el certificado. Cada emisor mantiene una lista de revocacin
de certificados que los programas pueden utilizar cuando estn comprobando
la validez de un certificado determinado.

Pgina 401 de 630

El Cerficado cambia la clave privada utilizada para cifrar un certificado o


agrega una si no la hay. Cambia la disponibilidad de un certificado a Service
Broker.
Sintaxis
ALTER CERTIFICATE certificate_name
REMOVE PRIVATE KEY
|
WITH PRIVATE KEY ( <private_key_spec> [ ,... ] )
|
WITH ACTIVE FOR BEGIN_DIALOG = [ ON | OFF ]
|
ATTESTED BY = 'path_to_dll'
|
REMOVE ATTESTED OPTION
<private_key_spec> ::=
FILE = 'path_to_private_key'
|
DECRYPTION BY PASSWORD = 'key_password'
|
ENCRYPTION BY PASSWORD = 'password'

Argumentos
certificate_name
Nombre nico por el que se conoce al certificado en la base de datos.
FILE = 'path_to_private_key'
Especifica la ruta de acceso completa, incluido el nombre del archivo,
a la clave privada. Este parmetro puede ser una ruta de acceso local
o una ruta de acceso UNC a una ubicacin de red. Se obtiene acceso
a este archivo dentro del contexto de seguridad de la cuenta del
servicio SQL Server. Cuando utilice esta opcin, asegrese de que la
cuenta de servicio tiene acceso al archivo especificado.
DECRYPTION BY PASSWORD = 'key_password'
Especifica la contrasea necesaria para descifrar la clave privada.
ENCRYPTION BY PASSWORD = 'password'
Especifica la contrasea utilizada para cifrar la clave privada del
certificado en la base de datos. Esta contrasea est sujeta a la
directiva de complejidad de las contraseas. Para obtener ms
informacin, vea Directiva de contraseas.
REMOVE PRIVATE KEY
Indica que no debe seguir mantenindose la clave privada en la base
de datos.
ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
Pgina 402 de 630

Hace que el certificado est disponible para el iniciador de una


conversacin de dilogo de Service Broker.
Notas:
La clave privada debe corresponderse con la clave pblica especificada en
certificate_name.
Puede omitir la clusula DECRYPTION BY PASSWORD si la contrasea en
el archivo est protegida mediante una contrasea NULL.
Cuando la clave privada de un certificado que ya existe en la base de datos
se importa desde un archivo, esta clave privada se proteger
automticamente mediante la clave maestra de la base de datos. Para
proteger la clave privada con una contrasea, utilice la frase ENCRYPTION
BY PASSWORD.
La opcin REMOVE PRIVATE KEY quitar de la base de datos la clave
privada del certificado. Puede hacer esto cuando el certificado se utilice para
comprobar firmas o en escenarios de Service Broker que no necesiten una
clave privada. No elimine la clave privada de un certificado que proteja una
clave simtrica.
No tiene que especificar una contrasea de descifrado cuando la clave
privada se ha cifrado mediante la clave maestra de la base de datos.
Importante:
Haga siempre una copia de archivo de una clave privada antes de eliminarla
de una base de datos.
Permisos
Requiere el permiso ALTER en el certificado.

Claves asimtricas
Una clave asimtrica se compone de una clave privada y su correspondiente
clave pblica. Cada clave puede descifrar los datos que cifra la otra. El
cifrado y descifrado asimtricos consumen una cantidad de recursos
relativamente elevada, pero proporcionan un nivel de seguridad superior al
del cifrado simtrico. Una clave asimtrica se puede utilizar para cifrar una
clave simtrica para almacenar en una base de datos.
Las Claves Asimtricas cambian las propiedades de una clave asimtrica.

Sintaxis
ALTER ASYMMETRIC KEY Asym_Key_Name <alter_option>
<alter_option> ::=
<password_change_option>
|
Pgina 403 de 630

|
REMOVE PRIVATE KEY
|
ATTESTED BY = 'path_to_dll'
|
REMOVE ATTESTED OPTION
<password_change_option> ::=
WITH PRIVATE KEY ( <password_option> [ , <password_option> ] )
<password_option> ::=
ENCRYPTION BY PASSWORD = 'password'
|
DECRYPTION BY PASSWORD = 'old_password'

Argumentos
Asym_Key_Name
Es el nombre por el que se conoce la clave asimtrica en la base de
datos.
REMOVE PRIVATE KEY
Quita la clave privada de la clave asimtrica. No se quita la clave
pblica.
WITH PRIVATE KEY
Cambia la proteccin de la clave privada.
ENCRYPTION BY PASSWORD = 'password'
Especifica una nueva contrasea para proteger la clave privada. Se
comprobar la complejidad de la contrasea. Si se omite esta opcin,
la clave privada se cifrar con la clave maestra de la base de datos.
DECRYPTION BY PASSWORD = 'password'
Especifica la antigua contrasea con la que est protegida la clave
privada. No es necesario si la clave privada est cifrada con la clave
maestra de la base de datos.
Notas:
Si no hay una clave maestra de base de datos, es necesaria la opcin
ENCRYPTION BY PASSWORD y la operacin registrar errores si no se
proporciona una contrasea.
Puede utilizar ALTER ASYMMETRIC KEY para cambiar la proteccin de la
clave privada si especifica las opciones PRIVATE KEY como se muestra en
la siguiente tabla.
Cambiar proteccin de
Antigua contrasea
contrasea

nueva

ENCRYPTION
PASSWORD
Obligatorio

BY

DECRYPTION
PASSWORD
Obligatorio

BY

Pgina 404 de 630

Contrasea a clave maestra


Clave maestra a contrasea

Omitir
Obligatorio

Obligatorio
Omitir

Es necesario abrir la clave maestra de la base de datos antes de utilizarla


para proteger una clave privada. Para cambiar la propiedad de una clave
asimtrica, utilice ALTER AUTHORIZATION.
Permisos
Requiere el permiso CONTROL

Claves simtricas
Una clave simtrica es una clave que se utiliza para el cifrado y el descifrado.
El cifrado y el descifrado con una clave simtrica son ms rpidos y
adecuados para usarlos de forma rutinaria con datos confidenciales de una
base de datos.
Las Claves Simtricas cambian las propiedades de una clave simtrica.
Sintaxis
ALTER SYMMETRIC KEY Key_name <alter_option>
<alter_option> ::=
ADD ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
|
DROP ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
<encrypting_mechanism> ::=
CERTIFICATE certificate_name
|
PASSWORD = 'password'
|
SYMMETRIC KEY Symmetric_Key_Name
|
ASYMMETRIC KEY Asym_Key_Name

Argumentos
Key_name
Es el nombre por el que se conoce la clave simtrica en la base de
datos.
ADD ENCRYPTION BY
Agrega el cifrado utilizando el mtodo especificado.
DROP ENCRYPTION BY
Pgina 405 de 630

Quita el cifrado utilizando el mtodo especificado. No es posible quitar


todos los cifrados de una clave simtrica.
CERTIFICATE Certificate_name
Especifica el certificado que se utiliza para cifrar la clave simtrica. El
certificado debe existir en la base de datos.
PASSWORD = 'password'
Especifica la contrasea que se utiliza para cifrar la clave simtrica.

Programa 5 Estrellas

SYMMETRIC KEY Symmetric_Key_Name


Especifica la clave simtrica que se utiliza para cifrar la clave simtrica
que se va a cambiar. La clave simtrica debe existir en la base de
datos y debe estar abierta.
ASYMMETRIC KEY Asym_Key_Name
Especifica la clave asimtrica que se utiliza para cifrar la clave
simtrica que se va a cambiar. La clave asimtrica debe existir en la
base de datos.

SQL Server 2005

Advertencia:
Si se utiliza una contrasea para cifrar una clave simtrica, en lugar de la
clave pblica de la clave maestra de base de datos, se utiliza el algoritmo de
cifrado TRIPLE_DES. Por ello, las claves creadas con un algoritmo de cifrado
seguro, como AES, se protegen mediante un algoritmo menos seguro.
Notas:
Para cambiar el cifrado de la clave simtrica, utilice las frases ADD
ENCRYPTION y DROP ENCRYPTION. No es posible dejar una clave
completamente sin cifrado. Por ello, la prctica recomendada es agregar la
nueva forma de cifrado antes de quitar la antigua forma de cifrado.
Para cambiar el propietario de una clave simtrica, utilice ALTER
AUTHORIZATION

Estrella 3
Unidad 1
T-SQL Avanzado

Permisos
Requiere el permiso ALTER en la clave simtrica. Si se agrega el cifrado
mediante una clave asimtrica o un certificado, es necesario el permiso VIEW
DEFINITION en el certificado o en la clave asimtrica. Si se quita el cifrado
mediante una clave asimtrica o un certificado, es necesario el permiso
CONTROL en el certificado o en la clave asimtrica.

2007

Pgina 406 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 407 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 408 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 409 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 410 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 411 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 412 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 413 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 414 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 415 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 416 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 417 de 630

Unidad 1: T-SQL Avanzado


Objetivos
Dar una visin acerca de algunos conceptos avanzados
sobre el T-SQL . Los temas que se abordarn sern los
siguientes:
p. ndices
q. Triggers
r. Transacciones

Pgina 418 de 630

ndices
Al igual que el ndice de un libro, el ndice de una base de datos permite
encontrar rpidamente informacin especfica en una tabla o vista indizada.
Un ndice contiene claves generadas a partir de una o varias columnas de la
tabla o la vista y punteros que asignan la ubicacin de almacenamiento de los
datos especificados. Puede mejorar notablemente el rendimiento de las
aplicaciones y consultas de bases de datos creando ndices correctamente
diseados para que sean compatibles con las consultas. Los ndices pueden
reducir la cantidad de datos que se deben leer para devolver el conjunto de
resultados de la consulta. Los ndices tambin pueden exigir la unicidad en
las filas de una tabla, lo que garantiza la integridad de los datos de la tabla.

Descripcin de ndices
En este punto se explican los conceptos de los ndices y se ofrecen
descripciones de todos los tipos de ndice disponibles en SQL Server 2005.

Conceptos bsicos de los ndices


Explica los conceptos bsicos de los ndices y cmo el optimizador de
consultas utiliza los ndices para recuperar datos.
Un ndice es una estructura de disco asociada con una tabla o una vista que
acelera la recuperacin de filas de la tabla o de la vista. Un ndice contiene
claves generadas a partir de una o varias columnas de la tabla o la vista.
Dichas claves estn almacenadas en una estructura (rbol b) que permite
que SQL Server busque de forma rpida y eficiente la fila o filas asociadas a
los valores de cada clave.
Una tabla o una vista puede contener los siguientes tipos de ndices:
Agrupado
o Los ndices agrupados ordenan y almacenan las filas de
los datos de la tabla o vista de acuerdo con los valores de
la clave del ndice. Son columnas incluidas en la definicin
del ndice. Slo puede haber un ndice agrupado por cada
tabla, porque las filas de datos slo pueden estar
ordenadas de una forma.
o La nica ocasin en la que las filas de datos de una tabla
estn ordenadas es cuando la tabla contiene un ndice
agrupado. Cuando una tabla tiene un ndice agrupado, la
tabla se denomina tabla agrupada. Si una tabla no tiene un
ndice agrupado, sus filas de datos estn almacenadas en
una estructura sin ordenar denominada montn.
No agrupado
o Los ndices no agrupados tienen una estructura separada
de las filas de datos. Un ndice no agrupado contiene los
valores de clave de ndice no agrupado y cada entrada de
valor de clave tiene un puntero a la fila de datos que
contiene el valor clave.
Pgina 419 de 630

o El puntero de una fila de ndice no agrupado hacia una fila


de datos se denomina localizador de fila. La estructura del
localizador de filas depende de si las pginas de datos
estn almacenadas en un montn o en una tabla
agrupada. Si estn en un montn, el localizador de filas es
un puntero hacia la fila. Si estn en una tabla agrupada, el
localizador de fila es la clave de ndice agrupada.
o En SQL Server 2005, puede agregar columnas sin clave al
nivel hoja de un ndice no agrupado para eludir lmites de
claves de ndice existentes, 900 bytes y columnas de 16
claves, y para ejecutar consultas indexadas y totalmente
cubiertas.
Tanto los ndices agrupados como los no agrupados deben ser nicos. Esto
significa que dos filas no pueden tener el mismo valor para la clave de ndice.
Los ndices se mantienen automticamente para una tabla o vista cuando se
modifican los datos de la tabla.
ndices y restricciones
Los ndices se crean automticamente cuando las restricciones PRIMARY
KEY y UNIQUE se definen en las columnas de tabla. Por ejemplo, cuando se
crea una tabla y se identifica una columna particular como la clave primaria,
SQL Server 2005 Database Engine crea automticamente una restriccin
PRIMARY KEY y un ndice para esa columna.

Cmo utiliza los ndices el optimizador de consultas


Los ndices bien diseados pueden reducir las operaciones de E/S de disco y
consumen menos recursos del sistema, con lo que mejoran el rendimiento de
la consulta. Los ndices son tiles para varias consultas que contienen
instrucciones SELECT, UPDATE o DELETE. Fjese en la consulta SELECT
Title, HireDate FROM HumanResources.Employee WHERE EmployeeID =
250 en la base de datos AdventureWorks. Cuando se ejecuta la consulta, el
optimizador de consultas evala cada mtodo disponible para recuperar
datos y selecciona el mtodo ms eficiente. El mtodo puede ser un recorrido
de la tabla o puede ser recorrer uno o ms ndices si existen.
Al realizar un recorrido de la tabla, el optimizador de consultas leer todas las
filas de la tabla y extraer las filas que cumplen con los criterios de la
consulta. Un recorrido de la tabla genera muchas operaciones de E/S de
disco y puede consumir recursos. No obstante, puede ser el mtodo ms
eficaz si, por ejemplo, el conjunto de resultados de la consulta es un
porcentaje elevado de filas de la tabla.
Cuando el optimizador de consultas utiliza un ndice, busca en las columnas
de clave de ndice, la ubicacin de almacenamiento de las filas que necesita
la consulta y extrae las coincidentes de esa ubicacin. Generalmente, la
bsqueda del ndice es mucho ms rpida que la bsqueda de la tabla
porque, a diferencia de la tabla, un ndice frecuentemente contiene muy
pocas columnas por fila y las filas estn ordenadas.
Pgina 420 de 630

El optimizador de consultas normalmente selecciona el mtodo ms eficaz


cuando ejecuta consultas. No obstante, si no hay ndices disponibles, el
optimizador de consultas debe utilizar un recorrido de la tabla. Su tarea es
disear y crear los ndices ms apropiados para su entorno de forma que el
optimizador de consultas tenga una seleccin de ndices eficaces entre los
cuales elegir. SQL Server 2005 proporciona el Asistente para la optimizacin
de motor de base de datos para ayudar con el anlisis del entorno de la base
de datos y en la seleccin de los ndices adecuados.

Tipos de ndices
En la tabla siguiente se indican los tipos de ndice disponibles en SQL Server
2005.
Tipo
ndice

de
Descripcin

Un ndice agrupado ordena y almacena las filas de datos de la tabla o vista


por orden en funcin de la clave del ndice agrupado. El ndice agrupado se
Agrupado
implementa como una estructura de rbol b que admite la recuperacin
rpida de las filas a partir de los valores de las claves del ndice agrupado.
Los ndices no agrupados se pueden definir en una tabla o vista con un
ndice agrupado. Cada fila del ndice no agrupado contiene un valor de clave
no agrupada y un localizador de fila. Este localizador apunta a la fila de
No agrupado datos del ndice agrupado o el montn que contiene el valor de clave. Las
filas del ndice se almacenan en el mismo orden que los valores de la clave
del ndice, pero no se garantiza que las filas de datos estn en un
determinado orden a menos que se cree un ndice agrupado en la tabla.

nico

Un ndice nico garantiza que la clave de ndice no contenga valores


duplicados y, por tanto, cada fila de la tabla o vista es en cierta forma nica.
Tanto los ndices agrupados como los no agrupados pueden ser nicos.

ndice
con
ndice no agrupado que se extiende para incluir columnas sin clave adems
columnas
de las columnas de clave.
incluidas

Vistas
indizadas

Un ndice en una vista materializa (ejecuta) la vista, y el conjunto de


resultados se almacena de forma permanente en un ndice agrupado nico,
del mismo modo que se almacena una tabla con un ndice agrupado. Los
ndices no agrupados de la vista se pueden agregar una vez creado el ndice
agrupado.

Texto

Tipo especial de ndice funcional basado en smbolos (token) que crea y


mantiene el servicio del Motor de texto completo de Microsoft para SQL
Server (MSFTESQL). Proporciona la compatibilidad adecuada para
bsquedas de texto complejas en datos de cadenas de caracteres.

XML

Representacin dividida y permanente de los objetos XML binarios grandes


(BLOB) de la columna de tipo de datos xml

Pgina 421 de 630

Disear ndices
En este punto se proporcionan directivas, reglas y restricciones que se deben
tener en cuenta para disear ndices.
Los temas de esta seccin proporcionan informacin que le ayudar a
disear ndices eficaces y eficientes.

Conceptos bsicos del diseo de ndices


Se describen a continuacin las principales tareas de diseo de los ndices.
Los ndices mal diseados y la falta de ndices constituyen las principales
fuentes de atascos en aplicaciones de base de datos. El diseo eficaz de los
ndices tiene gran importancia para conseguir un buen rendimiento de una
base de datos y una aplicacin. La seleccin de los ndices apropiados para
una base de datos y su carga de trabajo es una compleja operacin que
busca el equilibrio entre la velocidad de la consulta y el costo de
actualizacin. Los ndices estrechos, o con pocas columnas en la clave de
ndice, necesitan menos espacio en el disco y son menos susceptibles de
provocar sobrecargas debido a su mantenimiento. Por otra parte, la ventaja
de los ndices anchos es que pueden resolver ms consultas. Puede que
tenga que experimentar con distintos diseos antes de encontrar el ndice
ms eficaz. Es posible agregar, modificar y quitar ndices sin que esto afecte
al esquema de la base de datos o al diseo de la aplicacin. Por lo tanto, no
debe dudar en experimentar con ndices diferentes.
El optimizador de consultas de SQL Server 2005 selecciona de forma
confiable el ndice ms eficaz en la mayora de los casos. La estrategia
general de diseo de ndices debe proporcionar una buena seleccin de
ndices al optimizador de consultas y confiar en que tomar la decisin
correcta. As se reduce el tiempo de anlisis y se obtiene un buen
rendimiento en diversas situaciones. Para saber qu ndices utiliza el
optimizador de consultas para determinada consulta, en SQL Server
Management Studio, en el men Consulta, seleccione Incluir plan de
ejecucin real.
No equipare siempre la utilizacin de ndices con un buen rendimiento ni el
buen rendimiento al uso eficaz del ndice. Si la utilizacin de un ndice
contribuyera siempre a producir el mejor rendimiento, el trabajo del
optimizador de consultas sera muy sencillo. Una eleccin incorrecta de
ndice puede provocar un rendimiento bajo. Por tanto, la tarea del optimizador
de consultas consiste en seleccionar un ndice o una combinacin de ndices
slo si mejora el rendimiento, y evitar la recuperacin indizada cuando afecte
al mismo.

Pgina 422 de 630

Tareas del diseo de ndices


Las siguientes tareas componen la estrategia recomendada para el diseo de
ndices:
Comprender las caractersticas de la propia base de datos. Por
ejemplo, se trata de una base de datos de procesamiento de
transacciones en lnea (OLTP) con modificaciones frecuentes de
datos, o de una base de datos de sistema de ayuda para la toma
de decisiones (DSS) o de almacenamiento de datos (OLAP) que
contiene principalmente datos de slo lectura?.
Comprender las caractersticas de las consultas utilizadas con
frecuencia. Por ejemplo, saber que una consulta utilizada con
frecuencia combina dos o ms tablas facilitar la determinacin
del mejor tipo de ndices que se puede utilizar.
Comprender las caractersticas de las columnas utilizadas en las
consultas. Por ejemplo, un ndice es idneo para columnas que
tienen un tipo de datos entero y adems son columnas con
valores NULL o no NULL.
Determinar qu opciones de ndice podran mejorar el rendimiento
al crear o mantener el ndice. Por ejemplo, la creacin de un
ndice agrupado en una tabla grande existente se beneficiara de
la opcin de ndice ONLINE. La opcin ONLINE permite que la
actividad simultnea en los datos subyacentes contine mientras
el ndice se crea o regenera.
Determinar la ubicacin de almacenamiento ptima para el ndice.
Un ndice no agrupado se puede almacenar en el mismo grupo de
archivos que la tabla subyacente o en un grupo distinto. La
ubicacin de almacenamiento de ndices puede mejorar el
rendimiento de las consultas aumentando el rendimiento de las
operaciones de E/S en disco. Por ejemplo, el almacenamiento de
un ndice no agrupado en un grupo de archivos que se encuentra
en un disco distinto que el del grupo de archivos de la tabla puede
mejorar el rendimiento, ya que se pueden leer varios discos al
mismo tiempo. O bien, los ndices agrupados y no agrupados
pueden utilizar un esquema de particiones en varios grupos de
archivos. Las particiones facilitan la administracin de ndices y
tablas grandes al permitir el acceso y la administracin de
subconjuntos de datos rpidamente y con eficacia, mientras se
mantiene la integridad de la coleccin global. Al considerar la
posibilidad de utilizar particiones, determine si el ndice debe
alinearse; es decir, si las particiones se crean esencialmente del
mismo modo que la tabla o de forma independiente.

Directivas generales para disear ndices


Proporciona directivas adicionales relacionadas con las tareas de diseo de
los ndices. Las directivas aparecen clasificadas segn base de datos,
consulta y columna.
Pgina 423 de 630

Los administradores de bases de datos ms experimentados pueden disear


un buen conjunto de ndices, pero esta tarea es muy compleja, consume
mucho tiempo y est sujeta a errores, incluso con cargas de trabajo y bases
de datos con un grado de complejidad no excesivo. La comprensin de las
caractersticas de la base de datos, las consultas y las columnas de datos
facilita el diseo de los ndices.
Consideraciones acerca de las bases de datos
Cuando disee un ndice, tenga en cuenta las siguientes directrices acerca
de la base de datos:
Si se utiliza un gran nmero de ndices en una tabla, el
rendimiento de las instrucciones INSERT, UPDATE y DELETE se
ver afectado, ya que todos los ndices deben ajustarse
adecuadamente a medida que cambian los datos de la tabla.
Evite crear demasiados ndices en tablas que se
actualizan con mucha frecuencia y mantenga los ndices
estrechos, es decir, defnalos con el menor nmero de
columnas posible.

Utilice un nmero mayor de ndices para mejorar el


rendimiento de consultas en tablas con pocas
necesidades de actualizacin, pero con grandes
volmenes de datos. Un gran nmero de ndices
contribuye a mejorar el rendimiento de las consultas que
no modifican datos, como las instrucciones SELECT, ya
que el optimizador de consultas dispone de ms ndices
entre los que elegir para determinar el mtodo de acceso
ms rpido.

La indizacin de tablas pequeas puede no ser una solucin


ptima, porque puede provocar que el optimizador de consultas
tarde ms tiempo en realizar la bsqueda de los datos a travs del
ndice que en realizar un simple recorrido de la tabla. De este
modo, es posible que los ndices de tablas pequeas no se
utilicen nunca; sin embargo, sigue siendo necesario su
mantenimiento a medida que cambian los datos de la tabla.
Los ndices en vistas pueden mejorar de forma significativa el
rendimiento si la vista contiene agregaciones, combinaciones de
tablas o una mezcla de agregaciones y combinaciones. No es
necesario hacer referencia de forma explcita a la vista en la
consulta para que el optimizador de consultas la utilice. Utilice el
Asistente de optimizacin de motor de base de datos para analizar
las bases de datos y crear recomendaciones de ndices..

Consideraciones sobre las consultas


Cuando disee un ndice, tenga en cuenta las siguientes directrices acerca
de las consultas:
Pgina 424 de 630

Cree ndices no agrupados en todas las columnas que se utilizan


con frecuencia en predicados y condiciones de combinacin de
las consultas.
Importante:
Evite agregar columnas innecesarias. Si agrega
demasiadas columnas de ndice, puede reducir el
espacio en disco y el rendimiento del mantenimiento
del ndice.
La utilizacin de ndices puede mejorar el rendimiento de las
consultas, ya que los datos necesarios para satisfacer las
necesidades de la consulta existen en el propio ndice. Es decir,
slo se necesitan las pginas de ndice y no las pginas de datos
de la tabla o el ndice agrupado para recuperar los datos
solicitados; por tanto, se reduce la E/S global en el disco. Por
ejemplo, una consulta de las columnas a y b de una tabla que
dispone de un ndice compuesto creado en las columnas a, b y c
puede recuperar los datos especificados del propio ndice.
Escriba consultas que inserten o modifiquen tantas filas como sea
posible en una sola instruccin, en lugar de utilizar varias
consultas para actualizar las mismas filas. Al utilizar slo una
instruccin, se puede aprovechar el mantenimiento de ndices
optimizados.
Analice el tipo de la consulta y cmo se utilizan las columnas en
ella. Por ejemplo, una columna utilizada en una consulta de
coincidencia exacta sera una buena candidata para un ndice no
agrupado o agrupado.
Consideraciones sobre las columnas
Cuando disee un ndice, tenga en cuenta las siguientes directrices acerca
de las columnas:
Utilice una longitud corta en la clave de los ndices agrupados. Los
ndices agrupados tambin mejoran si se crean en columnas
nicas o que no admitan valores NULL. Las columnas con tipos
de datos ntext, text, image, varchar(max), nvarchar(max) y
varbinary(max) no se pueden especificar como columnas de
clave de ndice. Sin embargo, los tipos de datos varchar(max),
nvarchar(max), varbinary(max) y xml pueden participar en un
ndice no agrupado como columnas de ndice sin clave.
El tipo de datos xml slo puede ser una columna de clave en un
ndice XML.
Examine la unicidad de las columnas. Un ndice nico en lugar de
un ndice no nico con la misma combinacin de columnas
proporciona informacin adicional al optimizador de consultas y,
por tanto, resulta ms til.
Examine la distribucin de los datos en la columna. A menudo, se
crean consultas cuya ejecucin es muy larga al indizar una
columna con pocos valores nicos, o bien al realizar una
combinacin en dicha columna. Se trata de un problema
Pgina 425 de 630

fundamental con los datos y la consulta, y normalmente no se


puede resolver sin identificar esta situacin. Por ejemplo, una
agenda telefnica ordenada por apellidos no localizar
rpidamente a una persona si todas las personas de la ciudad se
llaman Smith o Jones.
Tenga en cuenta el orden de las columnas si el ndice va a
contener varias columnas. La columna que se utiliza en la
clusula WHERE en una condicin de bsqueda igual a (=),
mayor que (>), menor que (<) o BETWEEN, o que participa en
una combinacin, debe situarse en primer lugar. Las dems
columnas deben ordenarse basndose en su nivel de
diferenciacin, es decir, de ms distintas a menos distintas. Por
ejemplo, si el ndice se define como LastName, FirstName,
resultar til si el criterio de bsqueda es WHERE LastName =
'Smith' o WHERE LastName = Smith AND FirstName
LIKE 'J%'. Sin embargo, el optimizador de consultas no
utilizar el ndice en una consulta que slo busque FirstName
(WHERE FirstName = 'Jane').
Tenga en cuenta la indexacin de columnas calculadas.
Caractersticas de los ndices
Despus de determinar que un ndice resulta adecuado para una consulta,
puede seleccionar el tipo de ndice que mejor se ajusta a la situacin. Entre
las caractersticas de los ndices se incluyen:
ndices agrupados y no agrupados
ndices exclusivos y no exclusivos
ndices de una sola columna y de varias columnas
Orden ascendente o descendente en las columnas del ndice
Tambin puede personalizar las caractersticas iniciales de almacenamiento
del ndice para optimizar su rendimiento o mantenimiento; por ejemplo, puede
establecer una opcin como FILLFACTOR. Adems, puede determinar la
ubicacin de almacenamiento del ndice si utiliza grupos de archivos o
esquemas de particin y mejorar as el rendimiento.

Directivas para disear ndices agrupados


Se proporcionan recomendaciones y directivas para disear ndices
agrupados.
Los ndices agrupados ordenan y almacenan las filas de los datos de la tabla
de acuerdo con los valores de la clave del ndice. Slo puede haber un ndice
agrupado por cada tabla, porque las filas de datos slo pueden estar
ordenadas de una forma.
Salvo excepciones, todas las tablas deben incluir un ndice agrupado definido
en las columnas que cuentan con las siguientes caractersticas:
Se pueden utilizar en consultas frecuentes.
Proporcionan un alto grado de unicidad.
Pgina 426 de 630

Nota:
Cuando crea una restriccin PRIMARY KEY, se crea automticamente un
ndice nico en las columnas. De forma predeterminada, este ndice est
agrupado; sin embargo, puede especificar un ndice no agrupado cuando crea
la restriccin.
Se pueden utilizar en consultas de intervalo.
Si el ndice agrupado no se crea con la propiedad UNIQUE, Database Engine
agrega automticamente una columna de unicidad de 4 bytes a la tabla.
Cuando se necesita, Database Engine agrega automticamente un valor de
unicidad a una fila para que cada clave sea nica. Esta columna y sus
valores se utilizan de forma interna; los usuarios no pueden verlos ni tener
acceso a ellos.
Consideraciones sobre las consultas
Antes de crear ndices agrupados, debe conocer cmo se tiene acceso a los
datos. Considere que utiliza un ndice agrupado en consultas que realizan lo
siguiente:
Devuelven un intervalo de valores mediante la utilizacin de
operadores como BETWEEN, >, >=, < y <=. Cuando la fila se
encuentra con el primer valor mediante el ndice agrupado, se
garantiza que las filas con los valores indizados posteriores son
fsicamente adyacentes. Por ejemplo, si una consulta recupera
registros entre un intervalo de nmeros de pedidos de ventas, un
ndice agrupado en la columna SalesOrderNumber puede
localizar rpidamente la fila que contiene el nmero de pedido de
ventas inicial y, a continuacin, recuperar todas las filas siguientes
de la tabla hasta alcanzar el ltimo nmero de pedido de ventas.
Devuelven grandes conjuntos de resultados.
Utilizan clusulas JOIN; por lo general, son columnas de clave
externa.
Utilizan clusulas ORDER BY o GROUP BY. Un ndice en las
columnas especificadas en la clusula ORDER BY o GROUP BY
puede eliminar la necesidad de que Database Engine ordene los
datos, puesto que las filas ya estn ordenadas. De ese modo, el
rendimiento de las consultas aumenta.
Consideraciones sobre las columnas
Por regla general, debe definir la clave de ndice agrupado con el menor
nmero de columnas posible. Considere columnas que cuentan con uno o
varios de los siguientes atributos:
Son
nicas
o
contienen
muchos
valores
distintos
Por ejemplo, un Id. de empleado identifica de forma exclusiva a
los empleados. Un ndice agrupado o una restriccin PRIMARY
KEY en la columna EmployeeID mejorara el rendimiento de las
consultas que buscan informacin del empleado basndose en el
nmero de Id. del empleado. Tambin se podra crear un ndice
agrupado en las columnas LastName, FirstName y MiddleName,
ya que los registros de empleados se agrupan y se consultan con
Pgina 427 de 630

frecuencia de esta forma y la combinacin de estas columnas


seguira proporcionando un alto grado de diferencia.
Se
tiene
acceso
a
ellas
de
forma
secuencial
Por ejemplo, un Id. de producto identifica de forma exclusiva los
productos de la tabla Production.Product en la base de datos
AdventureWorks. Un ndice agrupado en ProductID mejorara
las consultas donde se especifica una bsqueda secuencial, como
WHERE ProductID BETWEEN 980 and 999. Esto se debe a
que las filas se almacenan de forma ordenada en esta columna de
clave.
Se definen como IDENTITY, ya que la columna va a ser nica en
la tabla.
Se utilizan con frecuencia para ordenar los datos recuperados de
una tabla. Puede resultar conveniente agrupar, es decir, ordenar
fsicamente la tabla por dicha columna para evitar una operacin
de ordenacin cada vez que se consulta la columna.
Los ndices agrupados no son adecuados para los siguientes atributos:
Columnas sometidas a cambios frecuentes: Esto provoca que se
mueva toda la fila, ya que Database Engine (Motor de base de
datos) debe mantener los valores de los datos de la fila ordenados
fsicamente. Esta consideracin es importante en sistemas de
procesamiento de transacciones de gran volumen en los que los
datos tienden a ser voltiles.
Claves amplias: Las claves amplias se componen de varias
columnas o varias columnas de gran tamao. Los valores clave
del ndice agrupado se utilizan en todos los ndices no agrupados
como claves de bsqueda. Los ndices no agrupados definidos en
la misma tabla sern bastante ms grandes, ya que sus entradas
contienen la clave de agrupacin y las columnas de clave
definidas para dicho ndice no agrupado.

Directivas para disear ndices no agrupados


Se proporcionan recomendaciones y directivas para disear ndices no
agrupados.
Un ndice no agrupado contiene los valores de clave del ndice y
localizadores de fila que apuntan a la ubicacin de almacenamiento de los
datos de tabla. Puede crear varios ndices no agrupados en una tabla o vista
indizada. Por lo general, se deben disear ndices no agrupados para mejorar
el rendimiento de consultas utilizadas con frecuencia no cubiertas por el
ndice agrupado.
Al igual que cuando se utiliza un ndice de un libro, el optimizador de
consultas busca valores de datos en el ndice no agrupado para encontrar la
ubicacin del valor de datos en la tabla y, a continuacin, recupera los datos
directamente de la tabla. Este sistema convierte a los ndices no agrupados
en la opcin ms apropiada para las consultas de coincidencia exacta, dado
que el ndice contiene entradas que describen la ubicacin exacta en la tabla
de los valores de datos que se buscan en las consultas. Por ejemplo, para
consultar la tabla HumanResources.Employee para todos los subordinados
Pgina 428 de 630

de un jefe determinado, el optimizador de consultas podra utilizar el ndice no


agrupado IX_Employee_ManagerID, que tiene ManagerID como columna
de clave. El optimizador de consultas puede buscar rpidamente todas las
entradas del ndice que coinciden con el ManagerID especificado. Cada
entrada de ndice apunta a la pgina y fila exactas de la tabla, o ndice
agrupado, en que se pueden encontrar los datos correspondientes. Una vez
que el optimizador de consultas busca todas las entradas del ndice, puede ir
directamente a la pgina y fila exactas para recuperar los datos.
Consideraciones acerca de las bases de datos
Tenga en cuenta las caractersticas de la base de datos al disear ndices no
agrupados.
Las bases de datos o tablas que exigen pocos requisitos para la
actualizacin, pero suelen contener un gran volumen de datos, se
pueden beneficiar de muchos ndices no agrupados para mejorar
el optimizador de consultas. Las aplicaciones y bases de datos
del sistema de ayuda para la toma de decisiones que contienen
principalmente datos de slo lectura se pueden beneficiar de
muchos ndices no agrupados. El optimizador de consultas tiene
ms ndices entre los que elegir para determinar el mtodo de
acceso ms rpido. Adems, las caractersticas que exigen pocos
requisitos para la actualizacin de la base de datos se traducen en
que el mantenimiento de los ndices no reducir el rendimiento.
Las aplicaciones y bases de datos de procesamiento de
transacciones en lnea (OLTP) que contienen tablas deben evitar
el exceso de ndices. Adems, los ndices deben ser estrechos, es
decir, con la menor cantidad de columnas posible. Si se utiliza un
gran nmero de ndices en una tabla, el rendimiento de las
instrucciones INSERT, UPDATE y DELETE se ver afectado, ya
que todos los ndices deben ajustarse adecuadamente a medida
que cambian los datos de la tabla.

Consideraciones sobre consultas


Antes de crear ndices no agrupados, debe conocer cmo se tiene acceso a
los datos. Considere la posibilidad de utilizar un ndice no agrupado para
consultas que cuentan con los siguientes atributos:
Utilizan clusulas JOIN o GROUP BY. Crean varios ndices no
agrupados para las columnas que intervienen en operaciones de
combinacin y de agrupacin, y un ndice agrupado para las
columnas de clave externa.
No devuelven conjuntos de resultados de gran tamao.
Contienen columnas que suelen incluirse en las condiciones de
bsqueda de una consulta, como la clusula WHERE, que
devuelven coincidencias exactas.
Consideraciones sobre columnas
Tenga en cuenta las columnas que tengan uno o varios de estos atributos:

Pgina 429 de 630

Cubren la consulta. Se obtienen mejoras de rendimiento cuando el


ndice contiene todas las columnas de la consulta. El optimizador
de consultas puede buscar todos los valores de columna del
ndice; no se tiene acceso a los datos de tabla o de ndice
agrupado, lo que se traduce en menos operaciones de E/S de
disco. Utilice un ndice con columnas incluidas para agregar
columnas de cobertura en lugar de crear una clave de ndice
ancho.
Si la tabla tiene un ndice agrupado, las columnas definidas en l
se anexan automticamente al final de cada ndice no agrupado
de la tabla. Esto puede producir una consulta cubierta sin
especificar las columnas de ndice agrupado en la definicin del
ndice no agrupado. Por ejemplo, si una tabla tiene un ndice
agrupado en la columna C y un ndice no agrupado en las
columnas B y A, tendr como valores de clave las columnas B, A
y C.
Gran nmero de valores distintos, como combinaciones de
nombres y apellidos, si se utiliza un ndice agrupado para otras
columnas. Si hay muy pocos valores distintos, como slo 1 y 0, la
mayora de las consultas no utilizarn el ndice, ya que una
exploracin de la tabla suele ser ms eficaz.

Directivas para disear ndices nicos


Un ndice nico garantiza que la clave de ndice no contiene valores
duplicados y, por tanto, cada fila de la tabla es en cierta forma nica. Resulta
conveniente especificar un ndice nico slo si los propios datos se
caracterizan por ser nicos. Por ejemplo, para asegurarse de que los valores
de la columna NationalIDNumber de la tabla HumanResources.Employee
sean nicos, cuando la clave principal es EmployeeID, cree una restriccin
UNIQUE en la columna NationalIDNumber . Si el usuario intenta especificar
el mismo valor en esa columna para ms de un empleado, se mostrar un
mensaje de error que impedir la entrada del valor duplicado.
En el caso de ndices nicos para varias columnas, el ndice asegura que
cada combinacin de valores de la clave de ndice sea nica. Por ejemplo, si
se crea un ndice nico en una combinacin de columnas LastName,
FirstName y MiddleName, dos filas de la tabla no podrn tener la misma
combinacin de valores para estas columnas.
Tanto los ndices agrupados como los no agrupados pueden ser nicos.
Siempre que los datos de la columna sean nicos, puede crear para la misma
tabla un ndice agrupado nico y varios ndices agrupados no nicos.
Entre las ventajas de utilizar ndices nicos se incluyen:
Se garantiza la integridad de los datos de las columnas definidas.
Se proporciona informacin adicional til para el optimizador de
consultas.
Si se crea una restriccin PRIMARY KEY o UNIQUE, se crear
automticamente un ndice nico en las columnas especificadas. No existen
Pgina 430 de 630

diferencias significativas entre la creacin de una restriccin UNIQUE y la


creacin de un ndice nico independiente de una restriccin. La validacin
de los datos tiene lugar de la misma manera y el optimizador de consultas no
establece diferencias entre un ndice nico creado por una restriccin y uno
creado manualmente. Sin embargo, deber crear una restriccin UNIQUE o
PRIMARY KEY en la columna cuando el objetivo sea la integridad de los
datos. Al hacer esto, el objetivo del ndice quedar claro.
Consideraciones
Un ndice nico, una restriccin UNIQUE o una restriccin
PRIMARY KEY no se pueden crear si existen valores de clave
duplicados en los datos.
Si los datos son nicos y desea hacer cumplir la exclusividad, la
creacin de un ndice nico en lugar de un ndice no nico en la
misma combinacin de columnas proporciona informacin
adicional para el optimizador de consultas que puede dar como
resultado unos planes de ejecucin ms eficaces. En este caso se
recomienda crear un ndice nico (preferiblemente mediante una
restriccin UNIQUE).
Un ndice no agrupado nico puede incluir columnas sin clave.

Implementar ndices
Se describen las principales tareas de creacin de ndices y se proporcionan
las directrices de rendimiento e implementacin que hay que tener en cuenta
antes de crear un ndice.
Tareas de creacin de ndices
Las siguientes tareas forman parte de la estrategia recomendada para crear
ndices:
El diseo de ndices es una tarea crtica. El diseo de ndices
incluye la determinacin de las columnas que se utilizarn, la
seleccin del tipo de ndice (por ejemplo, agrupado o no
agrupado), la seleccin de opciones de ndice adecuadas y la
determinacin de grupos de archivos o de la ubicacin de
esquemas de particin.
Determinar el mejor mtodo de creacin. Los ndices se crean de
las siguientes maneras:
Definiendo una restriccin PRIMARY KEY o UNIQUE en una
columna mediante CREATE TABLE o ALTER TABLE
SQL Server 2005 Database Engine crea automticamente un
ndice exclusivo para hacer cumplir la unicidad de los requisitos de
una restriccin PRIMARY KEY o UNIQUE. De forma
predeterminada se crea un ndice agrupado nico para hacer
cumplir una restriccin PRIMARY KEY, a menos que ya exista un
ndice agrupado en la tabla o que usted especifique un ndice no
agrupado nico. De forma predeterminada se crea un ndice nico
Pgina 431 de 630

no agrupado para hacer cumplir una restriccin UNIQUE a menos


que se especifique de explcitamente un ndice agrupado nico y
no exista un ndice agrupado en la tabla. Tambin se pueden
especificar las opciones de ndice, la ubicacin del ndice, el grupo
de
archivos
o
el
esquema
de
la
particin.
Un ndice creado como parte de una restriccin PRIMARY KEY o
UNIQUE recibe automticamente el mismo nombre que la
restriccin.
Restricciones de Primary Key
Una tabla suele tener una columna o una combinacin de
columnas cuyos valores identifican de forma nica cada fila de la
tabla. Estas columnas se denominan claves principales de la
tabla y exigen la integridad de entidad de la tabla. Puede crear
una clave principal mediante la definicin de una restriccin
PRIMARY KEY cuando cree o modifique una tabla. Una tabla
slo puede tener una restriccin PRIMARY KEY y ninguna
columna a la que se aplique una restriccin PRIMARY KEY
puede aceptar valores NULL. Debido a que las restricciones
PRIMARY KEY garantizan datos nicos, con frecuencia se
definen en una columna de identidad. Cuando especifica una
restriccin PRIMARY KEY en una tabla, SQL Server 2005
Database Engine exige la unicidad de los datos mediante la
creacin de un ndice nico para las columnas de clave principal.
Este ndice tambin permite un acceso rpido a los datos cuando
se utiliza la clave principal en las consultas. De esta forma, las
claves principales que se eligen deben seguir las reglas para
crear ndices nicos.
Si se define una restriccin PRIMARY KEY para ms de una
columna, puede haber valores duplicados dentro de la misma
columna, pero cada combinacin de valores de todas las
columnas de la definicin de la restriccin PRIMARY KEY debe
ser nica.
Como se muestra en la siguiente ilustracin, las columnas
ProductID y VendorID de la tabla Purchasing.ProductVendor
forman una restriccin PRIMARY KEY compuesta para esta
tabla. As se garantiza que la combinacin de ProductID y
VendorID es nica.

Cuando trabaja con combinaciones, las restricciones PRIMARY


KEY relacionan una tabla con otra. Por ejemplo, para determinar
Pgina 432 de 630

los proveedores que suministran determinados productos, puede


utilizar una combinacin de tres elementos entre las tablas
Purchasing.Vendor,
Production.Product
y
Purchasing.ProductVendor. Puesto que ProductVendor
contiene las columnas de ProductID y VendorID, se puede
obtener acceso a las tablas Product y Vendor mediante su
relacin con ProductVendor.
Restricciones de ndice Unique
Puede utilizar restricciones UNIQUE para garantizar que no se
escriben valores duplicados en columnas especficas que no
forman parte de una clave principal. Tanto la restriccin UNIQUE
como la restriccin PRIMARY KEY exigen la unicidad; sin
embargo, debe utilizar la restriccin UNIQUE y no PRIMARY
KEY si desea exigir la unicidad de una columna o una
combinacin de columnas que no forman la clave principal.
En una tabla se pueden definir varias restricciones UNIQUE,
pero slo una restriccin PRIMARY KEY.
Adems, a diferencia de las restricciones PRIMARY KEY, las
restricciones UNIQUE admiten valores NULL. Sin embargo, de la
misma forma que cualquier valor incluido en una restriccin
UNIQUE, slo se admite un valor NULL por columna. Es posible
hacer referencia a una restriccin UNIQUE con una restriccin
FOREIGN KEY.
o Creando un ndice independiente de una restriccin
utilizando la instruccin CREATE INDEX , o el cuadro de
dilogo Nuevo ndice en el Explorador de objetos de SQL
Server Management Studio: Debe especificar el nombre
del ndice, de la tabla y de las columnas a las que se aplica
el ndice. Tambin se pueden especificar las opciones de
ndice, la ubicacin del ndice, el grupo de archivos o el
esquema de la particin. De forma predeterminada, se
crea un ndice que no es nico y no est agrupado si no se
especifican las opciones nicas o agrupadas.
o Un factor importante que debe tenerse en cuenta es si el
ndice se crear en una tabla vaca o en una tabla con
datos. La creacin de un ndice en una tabla vaca no tiene
implicaciones de rendimiento en el momento de creacin
del ndice; sin embargo, el rendimiento se ver afectado
cuando se agreguen los datos a la tabla.
La creacin de ndices en tablas grandes debe planearse
con cuidado para que el rendimiento de la base de datos
no se vea afectado. La mejor manera de crear ndices en
tablas de gran tamao es empezar con el ndice agrupado
y, a continuacin, generar los ndices no agrupados.
Pgina 433 de 630

Considere la posibilidad de establecer la opcin ONLINE


en ON cuando cree ndices en tablas existentes. Cuando
se establece en ON, los bloqueos a largo plazo no se
retienen, lo que permite que continen consultas o
actualizaciones a la tabla subyacente.
Operaciones de ndices en lnea: SQL Server 2005
permite crear, volver a generar o quitar ndices en lnea.
Gracias a la opcin ONLINE, es posible que usuarios
simultneos obtengan acceso a los datos de la tabla
subyacente o del ndice agrupado, as como a los ndices
no agrupados asociados durante estas operaciones de
ndices. Por ejemplo, cuando un usuario vuelve a generar
un ndice agrupado, dicho usuario y los dems pueden
seguir actualizando los datos subyacentes y realizando
consultas sobre los mismos. Al realizar operaciones DDL
sin conexin, como generar o volver a generar un ndice
agrupado, estas operaciones mantienen bloqueos
exclusivos de los datos subyacentes e ndices asociados.
Es un modo de evitar modificaciones de los datos
subyacentes y consultas sobre los mismos hasta que no
finalice la operacin de ndice.
Nota:
Las operaciones de ndices en lnea nicamente
pueden realizarse en SQL Server 2005
Enterprise Edition.
Se recomienda realizar operaciones de ndices en lnea en
entornos empresariales que funcionan 24 horas al da,
siete das a la semana, y en los que resulta fundamental la
actividad simultnea de los usuarios durante las
operaciones de ndices.
La opcin ONLINE est disponible en las siguientes
instrucciones Transact-SQL.
CREATE INDEX
ALTER INDEX
DROP INDEX
ALTER TABLE (para agregar o quitar restricciones
UNIQUE o PRIMARY KEY con la opcin de ndice
CLUSTERED)

Consideraciones de implementacin
En la siguiente tabla se enumeran los valores mximos que se aplican a
ndices agrupados, no agrupados y XML. A menos que se especifique lo
contrario, las limitaciones se aplican a todos los tipos de ndices.
Pgina 434 de 630

Lmites de ndice mximos


ndices agrupados por tabla

Valor
1

ndices no agrupados por tabla

249

ndices XML por tabla

249

Nmero de columnas de clave


16*
por ndice
Tamao mximo del registro de
900 bytes*
clave de ndice

Informacin adicional
Incluye ndices no agrupados creados
por restricciones PRIMARY KEY o
UNIQUE, pero no ndices XML.
Incluye ndices XML principales y
secundarios en columnas de tipos de
datos XML.
El ndice agrupado est limitado a 15
columnas si la tabla tambin contiene
un ndice XML principal.
No pertenece a ndices XML.
.

*Puede evitar limitaciones de tamao de registro y de columna de clave de


ndice de ndices no agrupados incluyendo columnas sin clave en el ndice.

Tipos de datos
Generalmente, se puede indexar cualquier columna de una tabla o de una
vista. En la siguiente tabla se muestran todos los tipos de datos que tienen
una participacin de ndice restringida.
Tipo de datos
Participacin de ndice
Tipo definido por el usuario
Se puede indizar si el tipo admite el orden binario.
CLR
No pueden ser una columna de clave de ndice. No obstante,
Tipos de datos de objetos una columna xml puede ser una columna de clave en una tabla
grandes (LOB): image,
o en un ndice XML secundario o principal.
ntext, text, varchar(max), Pueden participar como columnas sin clave (incluidas) en un
nvarchar(max),
ndice no agrupado, excepto image, ntext y text.
varbinary(max) y xml
Pueden participar si son parte de una expresin de columna
calculada.
No se pueden indizar. Esto incluye columnas calculadas
definidas como invocaciones de mtodos de una columna del
tipo definido por un usuario CLR, mientras los mtodos se
marquen como deterministas.
Columnas calculadas
Las columnas calculadas que se derivan de tipos de datos LOB
se pueden indizar como columna con clave o sin clave
mientras el tipo de datos de columna calculada se permita
como columna de clave de ndice o columna sin clave.

Pgina 435 de 630

Columnas de Varchar de
insercin no consecutiva

La clave de ndice de un ndice agrupado no puede contener


columnas varchar con datos existentes en la unidad de
asignacin ROW_OVERFLOW_DATA. Si un ndice agrupado
se crea en una columna varchar y los datos existentes estn
en la unidad de asignacin IN_ROW_DATA, las acciones de
insercin o actualizacin posteriores de la columna que
constituiran inserciones no consecutivas producirn un error.

Consideraciones adicionales
A continuacin se ofrecen algunas consideraciones adicionales para crear un
ndice:
Puede crear un ndice si tiene el permiso CONTROL o ALTER en
la tabla.
Cuando se crea, el ndice se habilita automticamente y est
disponible para su uso. Puede quitar el acceso a un ndice
deshabilitndolo.
Al deshabilitar un ndice, se impide que el usuario pueda tener acceso al
mismo y, en el caso de los ndices agrupados, a los datos de la tabla
subyacente. La definicin del ndice se conserva en los metadatos, y las
estadsticas de ndice se mantienen en ndices no agrupados. Al deshabilitar
un ndice no agrupado o agrupado en una vista, se eliminan fsicamente los
datos del ndice. Deshabilitar un ndice agrupado en una tabla, impide el
acceso a los datos, que siguen en la tabla pero dejan de estar disponibles
para operaciones DML hasta que se quite o vuelva a generar el ndice. Utilice
las instrucciones ALTER INDEX REBUILD o CREATE INDEX WITH
DROP_EXISTING para volver a generar y habilitar un ndice deshabilitado.
En las siguientes circunstancias, pueden deshabilitarse uno o ms ndices:
El
SQL
Server
2005
Database
Engine
deshabilita
automticamente el ndice durante una actualizacin de SQL
Server.
Al deshabilitar manualmente el ndice mediante ALTER INDEX.

La actualizacin de SQL Server deshabilita un ndice


Durante la actualizacin a una nueva versin o Service Pack de SQL Server,
el Database Engine identifica y deshabilita de forma automtica los ndices,
incluidos los ndices en vistas, siempre que el ndice o la definicin de la vista
contenga uno de los siguientes elementos:
Una expresin para la cual el Database Engine ya no pueda
garantizar la integridad de los datos del ndice. Sera el caso, por
ejemplo, de un ndice que utiliza una funcin del sistema que se
Pgina 436 de 630

hubiera cambiado durante la actualizacin de modo que


devolviera un resultado distinto. El Database Engine deshabilitar
el ndice durante la actualizacin, puesto que puede contener
datos que dejarn de ser vlidos despus de la actualizacin.
Una intercalacin que se haya modificado como parte de una
actualizacin de forma que el ndice haya dejado de estar
ordenado correctamente.
Cuando se deshabilita un ndice durante el proceso de actualizacin, un
mensaje de advertencia muestra el nombre del ndice y los nombres de las
restricciones asociadas para que el usuario pueda volver a generarlos una
vez terminada la actualizacin. Al volver a generar el ndice y habilitar las
restricciones, se corrigen los datos invalidados durante la actualizacin.
Es posible que se deshabilite una restriccin CHECK si la definicin contiene
una expresin para la que el Database Engine ya no pueda garantizar la
integridad de los datos. Para habilitar la restriccin, utilice la instruccin
ALTER TABLE CHECK.
Usar ALTER INDEX para deshabilitar un ndice
Los ndices se pueden deshabilitar manualmente en cualquier momento
mediante la instruccin ALTER INDEX DISABLE.
Nota:
Si una tabla se encuentra en una publicacin de rplica transaccional, no
puede deshabilitar ningn ndice que est asociado con las columnas de clave
principal. Estos ndices son necesarios para la rplica. Para deshabilitar un
ndice, primero se debe quitar la tabla de la publicacin.
Quizs se desee deshabilitar un ndice para llevar a cabo lo siguiente:
Corregir un error de E/S de disco (error 823 o 824) de una pgina
de ndice y luego volver a generar el ndice.
Eliminar temporalmente el ndice para solucionar problemas.
Volver a generar ndices no agrupados. Al deshabilitar un ndice
no agrupado, la operacin para volver a generarlo requiere
suficiente espacio en disco temporal para almacenar tanto el
ndice antiguo como el nuevo. Sin embargo, el hecho de
deshabilitar y volver a generar el ndice no agrupado en
transacciones independientes, permite que el espacio en disco
que queda disponible al deshabilitar el ndice pueda volver a
usarse para la siguiente operacin de volver a generarlo o para
cualquier otra operacin. No se necesita espacio adicional, salvo
el espacio en disco temporal para la ordenacin, que suele ser un
20 por ciento del tamao del ndice. Si el espacio en disco es
limitado, puede resultar til deshabilitar el ndice no agrupado
antes de volver a generarlo. Sera el caso, por ejemplo, de un
procedimiento almacenado que volviera a generar todos los
ndices no agrupados en una o varias tablas. El hecho de
deshabilitar los ndices en primer lugar en una transaccin
independiente de la operacin de regeneracin, permite reducir de
forma considerable el espacio en disco temporal necesario para
su regeneracin.

Pgina 437 de 630

Para deshabilitar un ndice


ALTER INDEX (Transact-SQL)
Modifica un ndice existente de una tabla o una vista (relacional o XML)
mediante su deshabilitacin, regeneracin o reorganizacin, o mediante el
establecimiento de opciones en l.
Sintaxis
ALTER INDEX { index_name | ALL }
ON <object>
{ REBUILD
[ [ WITH ( <rebuild_index_option> [ ,...n ] ) ]
| [ PARTITION = partition_number
[ WITH ( <single_partition_rebuild_index_option>
[ ,...n ] )
]
]
]
| DISABLE
| REORGANIZE
[ PARTITION = partition_number ]
[ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
| SET ( <set_index_option> [ ,...n ] )
}
[;]
<object> ::=
{
[ database_name. [ schema_name ] . | schema_name. ]
table_or_view_name
}
<rebuild_index_option > ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
}
<single_partition_rebuild_index_option> ::=
{
SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
Pgina 438 de 630

}
<set_index_option>::=
{
ALLOW_ROW_LOCKS= { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
}
Argumentos
index_name
Es el nombre del ndice. Los nombres de ndice deben ser nicos en
una tabla o vista, pero no es necesario que sean nicos en una base
de datos.
ALL
Especifica todos los ndices asociados a la tabla o vista
independientemente del tipo de ndice. Si se especifica ALL y uno o
ms ndices se encuentran en un grupo de archivos sin conexin o de
slo lectura o la operacin especificada no est permitida en uno o
ms tipos de ndices, se produce un error en la instruccin. En la
siguiente tabla se enumeran las operaciones de ndice y los tipos de
ndices no permitidos.
Si se especifica ALL con
Se produce un error si la tabla tiene uno o ms
esta operacin
ndice XML
REBUILD WITH ONLINE =
Columnas de tipos de datos de objetos grandes: image,
ON
text,
ntext,
varchar(max),
nvarchar(max),
varbinary(max) y xml
REBUILD PARTITION =
ndice sin particiones, XML o deshabilitado
partition_number
REORGANIZE
REORGANIZE
PARTITION
partition_number
SET

ndice deshabilitado
establecido en OFF

con

ALLOW_PAGE_LOCKS

=ndice sin particiones, XML o deshabilitado

ndice deshabilitado

Si se especifica ALL con PARTITION = partition_number, es necesario


alinear todos los ndices. Esto significa que se crean particiones
Pgina 439 de 630

basadas en las funciones de particin equivalentes. Si se utiliza ALL


con PARTITION, todas las particiones de ndice con el mismo
parmetro partition_number se vuelven a generar u organizar.
database_name
Es el nombre de la base de datos.
schema_name
Es el nombre del esquema al que pertenece la tabla o la vista.
table_or_view_name
Es el nombre de la tabla o vista asociada al ndice. Para mostrar un
informe de los ndices de un objeto, utilice la vista de catlogo
sys.indexes.
REBUILD [ WITH (<rebuild_index_option> [ ,... n]) ]
Especifica que el ndice se volver a generar con unas columnas, un
tipo de ndice, un atributo de unicidad y un orden idnticos. Esta
clusula es equivalente a DBCC DBREINDEX. REBUILD habilita un
ndice deshabilitado. Cuando se regenera un ndice agrupado, no se
vuelven a generar los ndices no agrupados asociados, a menos que
se especifique la palabra clave ALL. Si no se especifican las opciones
del ndice, se aplican los valores de las opciones del ndice existentes
almacenados en sys.indexes. Para las opciones del ndice cuyos
valores no estn almacenados en sys.indexes, se aplica el valor
predeterminado indicado en la definicin del argumento de la
opcin.Las opciones ONLINE e IGNORE_DUP_KEY no son vlidas al
regenerar un ndice XML. Si se especifica ALL y la tabla base es un
montn, la operacin de regeneracin no tiene ningn efecto sobre la
tabla. Se regeneran los ndices no agrupados asociados a la tabla.
Nota:
Cuando se regenera un ndice XML principal, la tabla de usuario
subyacente no est disponible mientras dura esta operacin.
PARTITION
Especifica que slo se va a volver a generar y organizar una particin
de un ndice. No es posible especificar PARTITION si index_name no
es un ndice con particiones.
partition_number
Es el nmero de particin de un ndice con particiones que se va a
volver a generar u organizar. partition_number es una expresin
constante que puede hacer referencia a variables. stas incluyen
variables o funciones de tipo definido por el usuario y funciones
definidas por el usuario, pero no pueden hacer referencia a una
instruccin Transact-SQL. El parmetro partition_number debe existir;
de lo contrario se produce un error en la instruccin.
Pgina 440 de 630

WITH (<single_partition_rebuild_index_option>)
SORT_IN_TEMPDB y MAXDOP son las opciones que se pueden
especificar cuando se vuelve a generar una particin nica
(PARTITION = n). No es posible especificar ndices XML en una
operacin para regenerar una particin nica.
La regeneracin de un ndice particionado no se puede realizar en
lnea. Toda la tabla se bloquea durante esta operacin.
DISABLE
Marca el ndice como deshabilitado y no disponible para el SQL Server
2005 Database Engine . Cualquier ndice puede estar deshabilitado.
La definicin de ndice de un ndice deshabilitado se conserva en el
catlogo del sistema sin datos del ndice subyacente. La
deshabilitacin de un ndice agrupado evita que los usuarios obtengan
acceso a los datos de la tabla subyacente. Para habilitar un ndice,
utilice ALTER INDEX REBUILD o CREATE INDEX WITH
DROP_EXISTING.
REORGANIZE
Especifica que el nivel hoja del ndice se va a reorganizar. Esta
clusula es equivalente a DBCC INDEXDEFRAG. La instruccin
ALTER INDEX REORGANIZE siempre se ejecuta en lnea. Esto
significa que los bloqueos de tabla a largo plazo no se mantienen y
que las consultas o actualizaciones a la tabla subyacente pueden
continuar durante la transaccin ALTER INDEX REORGANIZE. No es
posible especificar REORGANIZE para un ndice deshabilitado o con
ALLOW_PAGE_LOCKS establecido en OFF.
WITH ( LOB_COMPACTION = { ON | OFF } )
Especifica que todas las pginas que contienen datos de objetos
grandes (LOB) se compactan. Los tipos de datos LOB son image,
text, ntext, varchar(max), nvarchar(max), varbinary(max) y xml. El
compactar estos datos puede mejorar el uso del espacio en disco. El
valor predeterminado es ON.
ON
Todas las pginas que contienen datos de objetos grandes se
compactan.
La reorganizacin de un ndice agrupado especificado compacta todas
las columnas LOB incluidas en el ndice agrupado. La reorganizacin
de un ndice no agrupado compacta todas las columnas LOB que no
son columnas sin clave (incluidas) del ndice.
Cuando se especifica ALL, todos los ndices asociados a la tabla o
vista especificada se reorganizan y se compactan todas las columnas
LOB asociadas al ndice agrupado, la tabla subyacente o el ndice no
agrupado con columnas incluidas.
Pgina 441 de 630

OFF
Las pginas que contienen datos de objetos grandes no se
compactan.
OFF no tiene ningn efecto sobre un montn.
Si no hay columnas LOB, la clusula LOB_COMPACTION se pasa por
alto.
SET ( <set_index option> [ ,... n] )
Especifica las opciones del ndice sin volver a generar ni organizar el
ndice. No es posible especificar SET para un ndice deshabilitado.
PAD_INDEX = { ON | OFF }
Especifica el relleno de ndice. El valor predeterminado es OFF.
ON
El porcentaje de espacio libre especificado por FILLFACTOR se aplica
a pginas de nivel intermedio del ndice. Si no se especifica
FILLFACTOR al mismo tiempo que PAD_INDEX se establece en ON,
se utiliza el valor de factor de relleno almacenado en sys.indexes.
No se especifica OFF ni fillfactor.
Las pginas de nivel intermedio se rellenan casi al mximo. Esto deja
suficiente espacio para al menos una fila del tamao mximo que
puede tener el ndice, segn el conjunto de claves de las pginas
intermedias.

FILLFACTOR = fillfactor
Especifica un porcentaje que indica cunto debe llenar el Database
Engine el nivel hoja de cada pgina del ndice durante la creacin o
modificacin de un ndice. fillfactor debe ser un valor entero entre 1 y
100. El valor predeterminado es 0.
Nota:
Los valores de factor de relleno 0 y 100 son idnticos.
Un valor FILLFACTOR explcito slo se aplica cuando se genera o
reorganiza el ndice por primera vez. El Database Engine no mantiene
dinmicamente el porcentaje especificado de espacio libre de las
pginas.
Para ver el valor de factor de relleno, utilice sys.indexes.
Importante:
La creacin o modificacin de un ndice agrupado con un valor FILLFACTOR
afecta a la cantidad de espacio de almacenamiento que ocupan los datos,
dado que el Database Engine vuelve a distribuir los datos cuando crea el
Pgina 442 de 630

ndice agrupado.
SORT_IN_TEMPDB = { ON | OFF }
Especifica si los resultados de orden se almacenan en tempdb. El
valor predeterminado es OFF.
ON
Los resultados de orden intermedio utilizados para generar el ndice se
almacenan en tempdb. Si tempdb se encuentra en un conjunto de
discos distinto al de la base de datos de usuario, se puede reducir el
tiempo necesario para crear un ndice. Sin embargo, se incrementa la
cantidad de espacio en disco que se utiliza en la generacin del ndice.
OFF
Los resultados de orden intermedio se almacenan en la misma base
de datos que el ndice.
Si no se necesita una operacin de orden o sta puede realizarse en la
memoria, se pasa por alto la opcin SORT_IN_TEMPDB.
IGNORE_DUP_KEY = { ON | OFF }
Especifica la respuesta de error a los valores de clave duplicados en
una transaccin de insercin de varias filas en un ndice agrupado o no
agrupado nico. El valor predeterminado es OFF.
ON
Se emite un mensaje de advertencia y slo se produce un error en las
filas que infringen el ndice UNIQUE.
OFF
Se emite un mensaje de error y se revierte toda la transaccin.
La configuracin de IGNORE_DUP_KEY se aplica slo a operaciones
de insercin realizadas tras la creacin o regeneracin del ndice. La
configuracin no tiene efecto durante la operacin de indizacin.
IGNORE_DUP_KEY no tiene efecto en una instruccin UPDATE.
IGNORE_DUP_KEY no se puede establecer en ON para ndices XML
e ndices creados en una vista

STATISTICS_NORECOMPUTE = { ON | OFF }
Especifica si se vuelven a calcular las estadsticas de distribucin. El
valor predeterminado es OFF.

Pgina 443 de 630

ON
Las estadsticas
automticamente.

no

actualizadas

no

se

vuelven

calcular

OFF
Se habilita la actualizacin automtica de las estadsticas.
Para restaurar la actualizacin automtica de estadsticas, establezca
STATISTICS_NORECOMPUTE en OFF o ejecute UPDATE
STATISTICS sin la clusula NORECOMPUTE.
Importante:
La deshabilitacin del clculo automtico de estadsticas de distribucin
puede impedir que el optimizador de consultas elija los planes de
ejecucin ptimos para las consultas relativas a la tabla.
ONLINE = { ON | OFF }
Especifica si las tablas subyacentes e ndices asociados estn
disponibles para consultas y modificacin de datos durante la
operacin de indizacin. El valor predeterminado es OFF.
Nota:
Las operaciones de ndices en lnea nicamente pueden realizarse en
SQL Server 2005 Enterprise Edition.
ON
Los bloqueos de tabla de larga duracin no se mantienen durante la
operacin de indizacin. Durante la fase principal de la operacin de
ndice, slo se mantiene un bloqueo de intencin compartida en la
tabla de origen. De esta forma, las consultas o actualizaciones
realizadas en la tabla y los ndices subyacentes pueden continuar. Al
principio de la operacin, se mantiene un bloqueo compartido (S)
sobre el objeto de origen durante un breve perodo. Al final de la
operacin, durante un breve perodo, se adquiere un bloqueo S sobre
el origen si se est creando un ndice no agrupado; o se adquiere un
bloqueo SCH-M (modificacin del esquema) cuando se crea o se quita
un ndice agrupado con conexin o cuando se regenera un ndice
agrupado o no agrupado. ONLINE no se puede establecer en ON
cuando se crea un ndice en una tabla temporal local.
OFF
Los bloqueos de tabla se aplican durante la operacin de ndice. Una
operacin de ndice sin conexin que crea, vuelve a generar o quita un
ndice agrupado, o vuelve a generar o quita un ndice no agrupado,
adquiere un bloqueo de modificacin del esquema (Sch-M) en la tabla.
Esto evita que todos los usuarios tengan acceso a la tabla subyacente
durante la operacin. Una operacin de ndice sin conexin que crea
un ndice no agrupado adquiere un bloqueo compartido (S) en la tabla.
Pgina 444 de 630

Esto evita que se realicen actualizaciones en la tabla subyacente, pero


permite la realizacin de operaciones de lectura, tales como las
instrucciones SELECT.
.
Los ndices, incluidos los ndices de las tablas temp globales, se
pueden regenerar en lnea, con las excepciones siguientes:

ndices deshabilitados

ndices XML

ndices en tablas temp locales

ndices con particiones

ndices agrupados si la tabla subyacente contiene tipos de


datos LOB

ndices no agrupados definidos con columnas de tipo de datos


LOB

Los ndices no agrupados se pueden regenerar en lnea si la tabla


contiene tipos de datos LOB pero ninguna de estas columnas se utiliza
en la definicin de ndice como columna de clave o sin clave.
ALLOW_ROW_LOCKS = { ON | OFF }
Especifica si se permiten bloqueos de fila. El valor predeterminado es
ON.
ON
Se permiten bloqueos de fila en el acceso al ndice. El Database
Engine determina el momento en que se utilizan bloqueos de fila.
OFF
No se utilizan bloqueos de fila.
ALLOW_PAGE_LOCKS = { ON | OFF }
Especifica si se permiten bloqueos de pgina. El valor predeterminado
es ON.
ON
Se permiten bloqueos de pgina cuando se tiene acceso al ndice. El
Database Engine (Motor de base de datos) determina el momento en
que se utilizan bloqueos de pgina.
OFF
No se utilizan bloqueos de pgina.
Pgina 445 de 630

Nota:
No es posible reorganizar un ndice cuando ALLOW_PAGE_LOCKS est
establecido en OFF.
MAXDOP = max_degree_of_parallelism
Anula la opcin de configuracin max degree of parallelism durante
la operacin de ndice. Utilice MAXDOP para establecer un lmite para
el nmero de procesadores utilizados en la ejecucin de un plan
paralelo. El valor mximo es de 64 procesadores.
max_degree_of_parallelism puede ser:
1
Suprime la generacin del plan paralelo.
>1
Restringe el nmero mximo de procesadores utilizado en una
operacin de ndices paralelos al especificado.
0 (predeterminado)
Utiliza el nmero real, o un nmero inferior, de procesadores en
funcin de la actual carga de trabajo del sistema.
Nota:
Las operaciones de ndices paralelos slo estn disponibles en SQL Server
2005 Enterprise Edition.
Notas
No es posible utilizar ALTER INDEX para volver a crear particiones en un
ndice o moverlo a un grupo de archivos distinto. No es posible utilizar esta
instruccin para modificar la definicin de ndice, como por ejemplo para
agregar o eliminar columnas o cambiar su orden. Utilice CREATE INDEX con
la clusula DROP_EXISTING para realizar estas operaciones.
Cuando no se especifica una opcin de forma explcita, se aplica el valor
actual. Por ejemplo, si no se especifica un valor FILLFACTOR en la clusula
REBUILD, se utilizar el valor de FILLFACTOR almacenado en el catlogo
del sistema durante el proceso de regeneracin. Para ver el valor actual de
las opciones de ndice, utilice sys.indexes.
Nota:
Los valores de ONLINE, MAXDOP y SORT_IN_TEMPDB no se almacenan en
el catlogo del sistema. A menos que se especifiquen en la instruccin de
ndice, se utiliza el valor predeterminado de la opcin.
En los equipos con varios procesadores, ALTER INDEX REBUILD, al igual
que otras consultas, utiliza automticamente ms procesadores para realizar
las operaciones de recorrido y orden asociadas a la modificacin del ndice.
Cuando se ejecuta ALTER INDEX REORGANIZE, con o sin
LOB_COMPACTION, el valor max degree of parallelism es una operacin
de un solo subproceso.
Pgina 446 de 630

No es posible volver a organizar o generar un ndice si el grupo de archivos


en el que se encuentra no tiene conexin o est definido como de slo
lectura. Cuando se especifica la palabra clave ALL y hay uno o ms ndices
en un grupo de archivos sin conexin o de slo lectura, se produce un error
en la instruccin.

Regenerar ndices
El proceso de volver a crear un ndice quita y vuelve a crear el ndice. Quita la
fragmentacin, utiliza espacio en disco al compactar las pginas segn el
valor de factor de relleno especificado o existente y vuelve a ordenar las filas
del ndice en pginas contiguas. Cuando se especifica ALL, todos los ndices
de la tabla se quitan y se vuelven a generar en una nica transaccin. No es
necesario quitar las restricciones FOREIGN KEY por adelantado. Cuando se
regeneran ndices con 128 extensiones o ms, el Database Engine difiere las
cancelaciones de asignacin de pgina y sus bloqueos asociados hasta
despus de la confirmacin de la transaccin.
En versiones anteriores de SQL Server, a veces se poda regenerar un ndice
no agrupado para corregir incoherencias provocadas por errores de
hardware. En SQL Server 2005, an es posible reparar estas incoherencias
entre el ndice y el ndice agrupado al regenerar un ndice no agrupado sin
conexin. Sin embargo, no es posible reparar las incoherencias de ndices no
agrupados mediante la regeneracin del ndice con conexin, ya que el
mecanismo de regeneracin con conexin usar el ndice no agrupado
existente como base para la regeneracin y, por tanto, persistir la
incoherencia. En cambio, la regeneracin del ndice sin conexin obligar a
una exploracin del ndice agrupado y eliminar la incoherencia. Al igual que
en las versiones anteriores, para recuperar incoherencias se recomienda
restaurar los datos afectados desde una copia de seguridad. No obstante, es
posible que pueda reparar las incoherencias del ndice mediante la
regeneracin del ndice no agrupado sin conexin.

Reorganizar ndices
La reorganizacin de un ndice utiliza muy pocos recursos del sistema.
Desfragmenta el nivel hoja de los ndices agrupados y no agrupados de las
tablas y las vistas al volver a ordenar fsicamente las pginas de nivel hoja
para hacer coincidir el orden lgico de izquierda a derecha de los nodos hoja.
La reorganizacin tambin compacta las pginas de ndice. La compactacin
se basa en el valor de factor de relleno existente. Para ver el valor de factor
de relleno, utilice sys.indexes.
Cuando se especifica ALL, se reorganizan los ndices relacionales, tanto
agrupados como no agrupados, y los ndices XML. Cuando se especifica
ALL, se aplican algunas restricciones; vea la definicin de ALL en la seccin
Argumentos.

Pgina 447 de 630

Deshabilitar ndices
La deshabilitacin de un ndice evita que los usuarios obtengan acceso al
ndice y, en los ndices agrupados, a los datos de la tabla subyacente. La
definicin de ndice permanece en el catlogo del sistema. La deshabilitacin
de un ndice no agrupado o agrupado en una vista elimina fsicamente los
datos del ndice. La deshabilitacin de un ndice agrupado evita el acceso a
los datos, aunque stos permanecen en el rbol b hasta que el ndice se
quita o se vuelve a generar. Para ver el estado de un ndice habilitado o
deshabilitado, realice una consulta a la columna is_disabled de la vista de
catlogo sys.indexes.
Si una tabla se encuentra en una publicacin de rplica transaccional, no es
posible deshabilitar ningn ndice asociado a las columnas de clave principal.
Estos ndices son necesarios para la rplica. Para deshabilitar un ndice,
primero debe quitar la tabla de la publicacin.
Utilice la instruccin ALTER INDEX REBUILD o CREATE INDEX WITH
DROP_EXISTING para habilitar el ndice. No es posible volver a generar un
ndice agrupado deshabilitado si la opcin ONLINE est establecida en ON.

Establecer opciones
Es
posible
establecer
las
opciones
ALLOW_ROW_LOCKS,
ALLOW_PAGE_LOCKS,
IGNORE_DUP_KEY
y
STATISTICS_NORECOMPUTE de un ndice especificado sin volver a
generar u organizar ese ndice. Los valores modificados se aplican
inmediatamente al ndice. Para ver estos valores, utilice sys.indexes.
Opciones de bloqueo de fila y pgina
Si ALLOW_ROW_LOCKS = ON y ALLOW_PAGE_LOCK = ON, los bloqueos
de nivel de fila, pgina y tabla se permiten al tener acceso al ndice. El
Database Engine (Motor de base de datos) elige el bloqueo apropiado y
puede cambiar de escala el bloqueo desde un bloqueo de fila o pgina a un
bloqueo de tabla.
Si ALLOW_ROW_LOCKS = OFF y ALLOW_PAGE_LOCK = OFF, slo se
permiten los bloqueos de nivel de tabla cuando se tiene acceso al ndice.
Si se especifica ALL al establecer las opciones de bloqueo de fila o pgina, la
configuracin se aplica a todos los ndices. Cuando la tabla subyacente es un
montn, la configuracin se aplica de las siguientes formas:
ALLOW_ROW_LOCKS
ON u OFF
ALLOW_PAGE_LOCKS
ON
ALLOW_PAGE_LOCKS
OFF

=
Al montn y a cualquier ndice no agrupado asociado.
=
Al montn y a cualquier ndice no agrupado asociado.
=Completamente a los ndices no agrupados. Esto significa que no
se permite ningn bloqueo de pgina en los ndices no agrupados.
En el montn, los nicos bloqueos no permitidos para la pgina son
los bloqueos compartidos (S), de actualizacin (U) y exclusivos (X).
El Database Engine (Motor de base de datos) an puede adquirir
un bloqueo de pgina de intencin (IS, IU o IX) por motivos
Pgina 448 de 630

internos.

Operaciones de ndice en lnea


Cuando se vuelve a generar un ndice y la opcin ONLINE est establecida
en ON, los objetos subyacentes, las tablas y los ndices asociados estn
disponibles para las consultas y la modificacin de datos. Los bloqueos de
tabla exclusivos slo se mantienen un espacio de tiempo muy reducido
durante el proceso de modificacin.
La reorganizacin de un ndice siempre se realiza en lnea. El proceso no
mantiene bloqueos a largo plazo y, por ello, no bloquea las consultas o las
actualizaciones en ejecucin.
Slo se pueden realizar operaciones de ndice simultneas en lnea en la
misma tabla si se hace lo siguiente:
Crear varios ndices no agrupados.
Reorganizar diferentes ndices en la misma tabla.
Reorganizar diferentes ndices mientras se vuelven a generar
ndices que no se superponen en la misma tabla.
En todas las dems operaciones de ndice en lnea realizadas al mismo
tiempo se produce un error. Por ejemplo, no es posible volver a generar dos o
ms ndices en la misma tabla de forma simultnea ni crear un ndice nuevo
mientras se regenera un ndice existente en la misma tabla.
Permisos
Para ejecutar ALTER INDEX, se necesita, como mnimo, el permiso ALTER
en la tabla o en la vista.
Ejemplos
A. Regenerar un ndice
En el siguiente ejemplo se regenera un nico ndice en la tabla Employee.
USE AdventureWorks;
GO
ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee
REBUILD;
GO
B. Regenerar todos los ndices de una tabla y especificar opciones
En el siguiente ejemplo se especifica la palabra clave ALL. As se regeneran
todos los ndices asociados a la tabla. Se especifican tres opciones.
USE AdventureWorks;
GO
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON);
GO

Pgina 449 de 630

C. Reorganizar un ndice con compactacin LOB


En el siguiente ejemplo se reorganiza un nico ndice agrupado. Dado que el
ndice contiene un tipo de datos LOB en el nivel hoja, la instruccin tambin
compacta todas las pginas que contienen los datos de objetos grandes.
Observe que no es necesario especificar la opcin WITH
(LOB_COMPACTION) dado que el valor predeterminado es ON.
USE AdventureWorks;
GO
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON
Production.ProductPhoto
REORGANIZE ;
GO
D. Establecer opciones en un ndice
En el siguiente ejemplo se establecen varias opciones en el ndice
AK_SalesOrderHeader_SalesOrderNumber.
USE AdventureWorks;
GO
ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
Sales.SalesOrderHeader
SET (
STATISTICS_NORECOMPUTE = ON,
IGNORE_DUP_KEY = ON,
ALLOW_PAGE_LOCKS = ON
);
GO
E. Deshabilitar un ndice
En el siguiente ejemplo se deshabilita un ndice no agrupado de la tabla
Employee.
USE AdventureWorks;
GO
ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee
DISABLE ;
GO
F. Deshabilitar restricciones
En el siguiente ejemplo se deshabilita una restriccin PRIMARY KEY al
deshabilitar el ndice PRIMARY KEY. La restriccin FOREIGN KEY de la
tabla subyacente se deshabilita automticamente y aparece un mensaje de
advertencia.
USE AdventureWorks;
GO
ALTER INDEX PK_Department_DepartmentID ON
HumanResources.Department
DISABLE ;
GO
El conjunto de resultados devuelve este mensaje de advertencia.
Pgina 450 de 630

Warning:
Foreign
key
'FK_EmployeeDepartmentHistory_Department_DepartmentID'
on
table
'EmployeeDepartmentHistory' referencing table 'Department' was disabled as
a result of disabling the index 'PK_Department_DepartmentID'.
G. Habilitar restricciones
En el siguiente ejemplo se habilitan las restricciones PRIMARY KEY y
FOREIGN KEY deshabilitadas en el ejemplo F.
La restriccin PRIMARY KEY se habilita al volver a generar el ndice
PRIMARY KEY.
USE AdventureWorks;
GO
ALTER INDEX PK_Department_DepartmentID ON
HumanResources.Department
REBUILD ;
GO
A continuacin, se habilita la restriccin FOREIGN KEY.
H. Regenerar un ndice con particiones
En el siguiente ejemplo se vuelve a generar una nica particin, de nmero 5,
del ndice con particiones IX_TransactionHistory_TransactionDate. En este
ejemplo se da por supuesto que se ha instalado el ejemplo de ndice con
particiones.
USE AdventureWorks;
GO
-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats
(DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL,
NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5;
GO
Para volver a generar un ndice
En el Explorador de objetos, realice la conexin a una instancia de
SQL Server 2005 Database Engine y, a continuacin, expndala.
Expanda Bases de datos, expanda la base de datos que contiene
la tabla con el ndice especificado y, a continuacin, expanda
Tablas.
Expanda la tabla a la que pertenece el ndice y, a continuacin,
expanda ndices.
Haga clic con el botn secundario en el ndice que desee volver a
generar y, a continuacin, haga clic en Volver a generar.
Para iniciar la operacin de regeneracin, haga clic en Aceptar.
Pgina 451 de 630

Para volver a generar todos los ndices de una tabla


En el Explorador de objetos, realice la conexin a una instancia de
SQL Server 2005 Database Engine y, a continuacin, expndala.
Expanda Bases de datos, expanda la base de datos que contiene
la tabla con los ndices especificados y, a continuacin, expanda
Tablas.
Expanda la tabla a la que pertenecen los ndices.
Haga clic con el botn secundario en ndices y, a continuacin,
haga clic en Volver a generar todo.
Para iniciar la operacin de recreacin, haga clic en Aceptar.
Requisitos de espacio en disco
El espacio en disco necesario para almacenar el ndice depende de los
siguientes factores:
El tamao de cada fila de datos de la tabla y el nmero de filas por
pgina. As se determina el nmero de pginas de datos que se
deben leer del disco para crear el ndice.
Las columnas del ndice y los tipos de datos utilizados. As se
determina el nmero de pginas de ndice que se deben escribir
en disco. Espacio temporal en disco necesario durante el proceso
de creacin del ndice.
Consideraciones de rendimiento
El tiempo que ocupa la creacin fsica de un ndice depende en gran medida
del subsistema de disco. Los factores importantes que se deben tener en
cuenta son:
El modelo de recuperacin de la base de datos. El modelo de
recuperacin de registro masivo proporciona un rendimiento
mucho mayor y un consumo de espacio de registro ms reducido
que la recuperacin completa durante la operacin de creacin del
ndice. Sin embargo, la recuperacin por medio de registros de
operaciones masivas reduce la flexibilidad para la recuperacin de
un momento dado.
RAID (matriz redundante de discos econmicos) utilizada para
almacenar los archivos de base de datos y del registro de
transacciones. Normalmente, los niveles de RAID que utilizan la
creacin de bandas tienen un ancho de banda de E/S mejor.
Nmero de discos de la matriz de discos, si se utiliza RAID. Ms
unidades en la matriz aumentan las tasas de transferencia de
datos proporcionalmente.
Dnde se almacenan las ordenaciones intermedias de los datos.
Si utiliza la opcin SORT_IN_TEMPDB puede reducir el tiempo
necesario para crear un ndice cuando tempdb se encuentra en
un conjunto de discos diferente que la base de datos del usuario.
Creacin del ndice con o sin conexin. Cuando se crea un ndice
sin conexin (valor predeterminado), los bloqueos exclusivos se
mantienen en la tabla subyacente hasta que la transaccin que
crea el ndice se ha completado. La tabla no est accesible para
Pgina 452 de 630

los
usuarios
mientras
se
crea
el
ndice.
En SQL Server 2005, puede especificar que se cree el ndice con
conexin. Cuando la opcin con conexin est establecida en ON,
los bloqueos de la tabla a largo plazo no se conservan, lo que
permite que las consultas o actualizaciones a la tabla subyacente
continen mientras se crea el ndice. Aunque recomendamos
operaciones de ndice con conexin, se debe evaluar el entorno y
los requisitos especficos. Puede ser mejor ejecutar operaciones
de ndice sin conexin. Al hacerlo as, los usuarios tienen acceso
restringido a los datos durante la operacin, pero la operacin
acaba con mayor rapidez y utiliza menos recursos.

Optimizar ndices
Los ndices mal diseados y la falta de ndices constituyen las principales
fallas en la performance de las aplicaciones de base de datos. El diseo
eficaz de los ndices tiene gran importancia para conseguir un buen
rendimiento de una base de datos y una aplicacin. La seleccin de los
ndices apropiados para una base de datos y su carga de trabajo es una
compleja operacin que busca el equilibrio entre la velocidad de la consulta y
el costo de actualizacin. Los ndices estrechos, o con pocas columnas en la
clave de ndice, necesitan menos espacio en el disco y son menos
susceptibles de provocar sobrecargas debido a su mantenimiento. Por otra
parte, la ventaja de los ndices anchos es que cubren ms consultas. Puede
que tenga que experimentar con distintos diseos antes de encontrar el
ndice ms eficaz. Es posible agregar, modificar y quitar ndices sin que esto
afecte al esquema de la base de datos o al diseo de la aplicacin. Por lo
tanto, no debe dudar en experimentar con ndices diferentes.
El optimizador de consultas de SQL Server 2005 selecciona de forma
confiable el ndice ms eficaz en la mayora de los casos. La estrategia
general de diseo de ndices debe proporcionar una buena seleccin de
ndices al optimizador de consultas y confiar en que tomar la decisin
correcta. As se reduce el tiempo de anlisis y se obtiene un buen
rendimiento en diversas situaciones. Para saber qu ndices utiliza el
optimizador de consultas para determinada consulta, en SQL Server
Management Studio, en el men Consulta, seleccione Incluir plan de
ejecucin real.
Como mostrar un plan de ejecucin real?
En este punto se describe cmo generar planes de ejecucin grficos reales
mediante SQL Server Management Studio. Cuando se generan planes de
ejecucin reales, se ejecutan los lotes o consultas Transact-SQL. El plan de
ejecucin que se ha generado muestra el plan de ejecucin de consultas real
que utiliza el SQL Server Database Engine para ejecutar las consultas.
Para utilizar esta caracterstica, los usuarios deben tener los permisos
apropiados para ejecutar las consultas Transact-SQL para las que se genera
un plan de ejecucin grfico, y deben tener concedido el permiso
Pgina 453 de 630

SHOWPLAN para todas las bases de datos a las que hace referencia la
consulta.
Para incluir un plan de ejecucin para una consulta durante la
ejecucin
En la barra de herramientas de SQL Server Management Studio,
haga clic en Consulta de motor de base de datos. Tambin
puede abrir una consulta existente y mostrar el plan de ejecucin
estimado haciendo clic en el botn Abrir archivo de la barra de
herramientas y buscando la consulta existente.
Especifique la consulta para la que desee mostrar el plan de
ejecucin real.
En el men Consultar, haga clic en Incluir plan de ejecucin
real o en el botn Incluir plan de ejecucin real de la barra de
herramientas.
Ejecute la consulta haciendo clic en el botn Ejecutar de la barra
de herramientas. El plan utilizado por el optimizador de consultas
se muestra en la ficha Plan de ejecucin del panel de resultados.
Coloque el mouse sobre los operadores lgicos y fsicos para ver
la descripcin y las propiedades de los operadores en la
informacin sobre herramientas que se muestra.
Tambin puede ver las propiedades de un usuario en la ventana
Propiedades. Si las propiedades no estn visibles, haga clic con el
botn secundario en un usuario y seleccione Propiedades.
Se puede modificar la visualizacin del plan de ejecucin
haciendo clic con el botn secundario en el plan de ejecucin y
seleccionando Acercar, Alejar, Zoom personalizado o Zoom
para ajustar. Acercar y Alejar permiten acercarse o alejarse del
plan de ejecucin, mientras que Zoom personalizado permite
definir su propio tamao de la imagen, como por ejemplo un 80
por ciento de tamao. Zoom para ajustar ampla el plan de
ejecucin para que se ajuste al panel de resultados.
No equipare siempre la utilizacin de ndices con un buen rendimiento ni el
buen rendimiento al uso eficaz del ndice. Si la utilizacin de un ndice
contribuyera siempre a producir el mejor rendimiento, el trabajo del
optimizador de consultas sera muy sencillo. En realidad, una eleccin
incorrecta de ndice puede provocar un rendimiento bajo. Por tanto, la tarea
del optimizador de consultas consiste en seleccionar un ndice o una
combinacin de ndices slo si mejora el rendimiento, y evitar la recuperacin
indizada cuando afecte al mismo.
Tareas del diseo de ndices
Las siguientes tareas componen la estrategia recomendada para el diseo de
ndices:
Comprender las caractersticas de la propia base de datos. Por
ejemplo, se trata de una base de datos de procesamiento de
transacciones en lnea (OLTP) con modificaciones frecuentes de
Pgina 454 de 630

datos, o de una base de datos de sistema de ayuda para la toma


de decisiones (DSS) o de almacenamiento de datos (OLAP) que
contiene principalmente datos de slo lectura?.
Comprender las caractersticas de las consultas utilizadas con
frecuencia. Por ejemplo, saber que una consulta utilizada con
frecuencia une dos o ms tablas facilitar la determinacin del
mejor tipo de ndices que se puede utilizar..
Comprender las caractersticas de las columnas utilizadas en las
consultas. Por ejemplo, un ndice es idneo para columnas que
tienen un tipo de datos entero y adems son columnas con
valores NULL o no NULL.
Determinar qu opciones de ndice podran mejorar el rendimiento
al crear o mantener el ndice. Por ejemplo, la creacin de un
ndice agrupado en una tabla grande existente se beneficiara de
la opcin de ndice ONLINE. La opcin ONLINE permite que la
actividad simultnea en los datos subyacentes contine mientras
el ndice se crea o regenera.
Opciones de ndice
Al disear, crear o modificar un ndice se debe tener en cuenta
varias opciones de ndice. Estas opciones se pueden especificar
cuando crea un ndice por primera vez o cuando vuelve a generar
un ndice. Adems, algunas opciones de ndice tambin se
pueden establecer en cualquier momento mediante la clusula
SET de la instruccin ALTER INDEX.
Opcin de ndice

Descripcin
Establece el porcentaje de espacio libre en las pginas
PAD_INDEX
de nivel intermedio durante la creacin del ndice.
Establece el porcentaje de espacio libre en el nivel
FILLFACTOR
hoja de cada pgina de ndice durante la creacin del
ndice.
Determina la ubicacin en la que se almacenan los
resultados de ordenacin intermedia generados
durante la creacin del ndice.
Cuando est establecido en ON, los resultados de
ordenacin se almacenan en tempdb. Cuando est
establecido en OFF, los resultados de ordenacin se
SORT_IN_TEMPDB
almacenan en el grupo de archivos o el esquema de
particiones en el que se almacena el ndice resultante.
Nota:
Si no se necesita una operacin de ordenacin, o si
la ordenacin se puede realizar en memoria,
SORT_IN_TEMPDB se omite.
Especifica la respuesta de error a los valores de clave
IGNORE_DUP_KEY
duplicados en una transaccin INSERT de varias filas
en un ndice nico agrupado o no agrupado.
Especifica si las estadsticas de ndices obsoletas
STATISTICS_NORECOMPUTE
deberan calcularse de nuevo automticamente.
Indica que el ndice existente debera eliminarse y
DROP_EXISTING
crearse de nuevo.
Pgina 455 de 630

ONLINE

ALLOW_ROW_LOCKS
ALLOW_PAGE_LOCKS
MAXDOP

Determina si se permite el acceso simultneo de


usuarios a la tabla subyacente o a los datos del ndice
agrupado y cualquier ndice no agrupado asociado
durante las operaciones de ndice.
Nota:
Las operaciones de ndice en lnea slo estn
disponibles en Microsoft SQL Server 2005
Enterprise Edition.
Determina si se utilizan bloqueos de fila al obtener
acceso a los datos de ndice.
Determina si se utilizan bloqueos de pgina al obtener
acceso a los datos de ndice.
Establece el nmero mximo de procesadores que el
procesador de consultas puede utilizar para ejecutar
una sola instruccin de ndice. Pueden utilizarse
menos procesadores dependiendo de la carga de
trabajo actual del sistema.
Nota:
Las operaciones de ndice en paralelo slo estn
disponibles en SQL Server 2005 Enterprise Edition.

Establecer opciones sin volver a generar


Mediante la clusula SET en la instruccin ALTER INDEX, se pueden
establecer las siguientes opciones del ndice sin volver a generarlo:
ALLOW_PAGE_LOCKS
ALLOW_ROW_LOCKS
IGNORE_DUP_KEY
STATISTICS_NORECOMPUTE
Estas opciones se aplican inmediatamente al ndice. Otras opciones de
ndice, como FILLFACTOR y ONLINE, slo pueden especificarse cuando se
crea o vuelve a generar un ndice.
Ver la configuracin de opciones de ndice
No todos los valores de las opciones de ndice se almacenan en metadatos.
Los valores que se almacenan en metadatos pueden verse en las vistas de
catlogo correspondientes. Para examinar la configuracin actual de las
opciones en los ndices existentes, utilice la vista de catlogo sys.indexes.
Para examinar el valor actual de STATISTICS_NORECOMPUTE, utilice la
vista de catlogo sys.stats.
Ejemplos
El siguiente ejemplo establece las opciones ALLOW_ROW_LOCKS y
IGNORE_DUP_KEY para el ndice AK_Product_ProductNumber en la tabla
Production.Product.
USE AdventureWorks;
GO
Pgina 456 de 630

--Verify the current values for these options.


SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY
option ON.
ALTER INDEX AK_Product_ProductNumber
ON Production.Product
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
Para determinar la ubicacin de almacenamiento ptima para el ndice.
Un ndice no agrupado se puede almacenar en el mismo grupo de archivos
que la tabla subyacente o en un grupo distinto. La ubicacin de
almacenamiento de ndices puede mejorar el rendimiento de las consultas
aumentando el rendimiento de las operaciones de E/S en disco. Por
ejemplo, el almacenamiento de un ndice no agrupado en un grupo de
archivos que se encuentra en un disco distinto que el del grupo de archivos
de la tabla puede mejorar el rendimiento, ya que se pueden leer varios
discos al mismo tiempo. O bien, los ndices agrupados y no agrupados
pueden utilizar un esquema de particiones en varios grupos de archivos. Las
particiones facilitan la administracin de ndices y tablas grandes al permitir
el acceso y la administracin de subconjuntos de datos rpidamente y con
eficacia, mientras se mantiene la integridad de la coleccin global. Al
considerar la posibilidad de utilizar particiones, determine si el ndice debe
alinearse; es decir, si las particiones se crean esencialmente del mismo
modo que la tabla o de forma independiente.

Pgina 457 de 630

Triggers
Microsoft SQL Server 2005 proporciona dos mecanismos principales para
exigir las reglas de negocios y la integridad de los datos: restricciones y
triggers.
Un trigger es un tipo especial de procedimiento almacenado que surte efecto
automticamente cuando se ejecuta un evento de lenguaje. SQL Server
incluye dos tipos generales de triggers: DML y DDL.
Los triggers DDL son nuevos en SQL Server 2005. Estos triggers se invocan
cuando un evento de lenguaje de definicin de datos (DDL) tiene lugar en el
servidor o la base de datos.
Los triggers DML se invocan cuando un evento de lenguaje de manipulacin
de datos (DML) tiene lugar en la base de datos. Los eventos DML incluyen
instrucciones INSERT, UPDATE o DELETE que modifican datos en una tabla
o vista especificada.
Un trigger DML puede consultar otras tablas e incluir instrucciones TransactSQL complejas. El trigger y la instruccin que lo activa se tratan como una
sola transaccin, que puede revertirse desde el trigger. Si se detecta un error
grave (por ejemplo, no hay suficiente espacio en disco), se revierte
automticamente toda la transaccin.
Los triggers DML tienen varias utilidades:
Pueden realizar cambios en cascada mediante tablas
relacionadas de la base de datos; sin embargo, estos cambios
pueden ejecutarse de manera ms eficaz mediante restricciones
de integridad referencial en cascada.
Pueden proteger contra operaciones INSERT, UPDATE y DELETE
incorrectas o dainas, y exigir otras restricciones que sean ms
complejas que las definidas con restricciones CHECK.
A diferencia de stas, los triggers DML pueden hacer referencia a
columnas de otras tablas. Por ejemplo, un trigger puede utilizar
una instruccin SELECT de otra tabla para comparar con los
datos insertados o actualizados y para realizar acciones
adicionales, como modificar los datos o mostrar un mensaje de
error definido por el usuario.
Pueden evaluar el estado de una tabla antes y despus de
realizar una modificacin de datos y actuar en funcin de esa
diferencia.
Varios triggers DML del mismo tipo (INSERT, UPDATE o DELETE)
en una tabla permiten realizar distintas acciones en respuesta a
una misma instruccin de modificacin.
Sintaxis
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML
Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
Pgina 458 de 630

{ FOR | AFTER | INSTEAD OF }


{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }
<dml_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE
STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }
<ddl_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name

Argumentos
schema_name
Es el nombre del esquema al que pertenece un trigger DML. Los
triggers DML se limitan al esquema de la tabla o vista en la que se
crearon. No se puede especificar schema_name para es DDL.
trigger_name
Es el nombre del trigger. El parmetro trigger_name debe cumplir con
las reglas de los identificadores, con la excepcin de que trigger_name
no puede comenzar con los smbolos # o ##.
table | view
Es la tabla o vista en que se ejecuta el trigger DML; algunas veces se
denomina tabla del trigger o vista del trigger. Especificar el nombre
completo de la tabla o vista es opcional. Slo se puede hacer
referencia a una vista mediante un trigger INSTEAD OF. No es posible
definir triggers DML en tablas temporales locales o globales.

Pgina 459 de 630

DATABASE
Aplica el mbito de un trigger DDL a la base de datos actual. Si se
especifica, el trigger se activa cada vez que event_type o event_group
tienen lugar en la base de datos actual.
ALL SERVER
Aplica el mbito de un trigger DDL al servidor actual. Si se especifica,
el trigger se activa cada vez que event_type o event_group tienen
lugar en la base de datos actual.
WITH ENCRYPTION
Oscurece el texto de la instruccin CREATE TRIGGER. El uso de
WITH ENCRYPTION impide que el trigger se publique como parte de
la rplica de SQL Server. WITH ENCRYPTION no se puede
especificar para triggers CLR.
EXECUTE AS
Especifica el contexto de seguridad en el que se ejecuta el trigger.
Permite controlar qu cuenta de usuario utiliza la instancia de SQL
Server para validar los permisos sobre cualquier objeto de base de
datos al que haga referencia el trigger.
AFTER
Especifica que el trigger DML slo se activa cuando todas las
operaciones especificadas en la instruccin SQL trigger se han
ejecutado correctamente. Adems, todas las acciones referenciales en
cascada y las comprobaciones de restricciones deben ser correctas
para que este trigger se ejecute.
AFTER es el valor predeterminado cuando slo se especifica la
palabra clave FOR.
Los triggers AFTER no se pueden definir en las vistas.
INSTEAD OF
Especifica que se ejecuta el trigger DML en vez de la instruccin SQL
trigger, por lo que se suplantan las acciones de las instrucciones
triggers. INSTEAD OF no se puede especificar para triggers DDL.
Como mximo, se puede definir un trigger INSTEAD OF por cada
instruccin INSERT, UPDATE o DELETE en cada tabla o vista. No
obstante, en las vistas es posible definir otras vistas que tengan su
propio trigger INSTEAD OF.
Los triggers INSTEAD OF no se pueden utilizar en vistas actualizables
que usan WITH CHECK OPTION. SQL Server genera un error cuando
se agrega un trigger INSTEAD OF a una vista actualizable para la que

Pgina 460 de 630

se especific WITH CHECK OPTION. El usuario debe quitar esta


opcin mediante ALTER VIEW antes de definir el trigger INSTEAD OF.
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
Especifica las instrucciones de modificacin de datos que activan el
trigger DML cuando se opera en esta tabla o vista. Se debe especificar
al menos una opcin. En la definicin del trigger se permite cualquier
combinacin de estas opciones, en cualquier orden.
Para los triggers INSTEAD OF, no se permite la opcin DELETE en
tablas que tengan una relacin de integridad referencial que especifica
una accin ON DELETE en cascada. Igualmente, no se permite la
opcin UPDATE en tablas que tengan una relacin de integridad
referencial que especifica una accin ON UPDATE en cascada.
event_type
Es el nombre de un evento de lenguaje Transact-SQL que hace que,
una vez ejecutado, se active un trigger DDL.
event_group
Es el nombre de un agrupamiento predefinido de eventos de lenguaje
de Transact-SQL. El trigger DDL se activa tras la ejecucin de
cualquier evento de lenguaje Transact-SQL que pertenezca a
event_group. Los grupos de eventos vlidos para su uso en triggers
DDL se enumeran en Usar grupos de eventos con triggers DDL.
Una vez que CREATE TRIGGER ha terminado de ejecutarse,
event_group tambin acta como una macro al agregar los tipos de
eventos que comprende a la vista de catlogo sys.trigger_events.
WITH APPEND
Especifica que debe agregarse un trigger adicional de un tipo
existente. La utilizacin de esta clusula opcional slo es necesaria
cuando el nivel de compatibilidad es 65 o inferior. Si el nivel de
compatibilidad es 70 o superior, no es necesaria la clusula WITH
APPEND para agregar un trigger adicional de un tipo existente. ste
es el comportamiento predeterminado de CREATE TRIGGER cuando
el nivel de compatibilidad es 70 o superior.
WITH APPEND no se puede utilizar con triggers INSTEAD OF o
cuando se ha declarado AFTER explcitamente. WITH APPEND slo
se puede utilizar si se especific FOR (sin INSTEAD OF ni AFTER) por
motivos de compatibilidad con versiones anteriores. WITH APPEND no
se puede especificar si se ha especificado EXTERNAL NAME (es
decir, si el trigger es de tipo CLR).
Importante:

Pgina 461 de 630

WITH APPEND no existar en una versin futura de Microsoft SQL


Server. Evite su uso en los nuevos trabajos de desarrollo y piense en
modificar las aplicaciones que la usan actualmente.

NOT FOR REPLICATION


Indica que el trigger no debe ejecutarse cuando un agente de rplica
modifica la tabla involucrada en el mismo.
sql_statement
Son las condiciones y acciones del trigger. Las condiciones del trigger
especifican los criterios adicionales que determinan si los instancias de
las instrucciones DML o DDL hacen que se lleven a cabo las acciones
del trigger.
Las acciones del trigger especificadas en las instrucciones TransactSQL surten efecto con una operacin DML o DDL.
Los triggers pueden incluir cualquier nmero y clase de instrucciones
Transact-SQL, con excepciones. Un trigger est diseado para
comprobar o cambiar los datos en base a una instruccin de
modificacin o definicin de datos; no debe devolver datos al usuario.
Las instrucciones Transact-SQL de un trigger incluyen a menudo
lenguaje de control de flujo.
Transact-SQL proporciona palabras especiales que forman parte del
llamado lenguaje de control de flujo con el que se controla el flujo de la
ejecucin de instrucciones, bloques de instrucciones, funciones
definidas por el usuario y procedimientos almacenados de TransactSQL. Sin el lenguaje de control de flujo, las instrucciones TransactSQL independientes se ejecutan secuencialmente, tal como se
producen. El lenguaje de control de flujo permite conectar
instrucciones, relacionarlas entre ellas y hacerlas interdependientes
mediante construcciones similares a las de la programacin. Estas
palabras de control de flujo son tiles cuando es necesario dirigir
Transact-SQL para que realice alguna clase de accin. Por ejemplo,
utilice un par de instrucciones BEGIN...END cuando incluya ms de
una instruccin Transact-SQL en un bloque lgico. Use un par de
instrucciones IF...ELSE cuando una determinada instruccin o bloque
de instrucciones tenga que ser ejecutado IF (si) se cumple alguna
condicin, y deba ejecutarse otra instruccin o bloque de instrucciones
si esa condicin no se cumple (la condicin ELSE). Las instrucciones
de control de flujo no pueden dividirse en varios lotes, funciones
definidas por el usuario o procedimientos almacenados.
stas son las palabras clave del control de flujo: Begin..End; Goto;
If..Else; Break; Continue; While; Return, WaitFor.

Pgina 462 de 630

Los triggers DML usan las tablas lgicas (conceptuales) deleted e


inserted. Son de estructura similar a la tabla en que se define el
trigger, es decir, la tabla en que se guarda la accin del usuario. Las
tablas deleted e inserted guardan los valores antiguos o nuevos de
las filas que la accin del usuario puede cambiar. Por ejemplo, para
recuperar todos los valores de la tabla deleted, utilice:

SELECT *
FROM deleted
Los triggers DDL capturan informacin sobre el evento trigger
mediante el uso de la funcin EVENTDATA . Devuelve informacin
acerca de los eventos de base de datos o servidor. EVENTDATA se
llama cuando se activa una notificacin de eventos y el resultado se
devuelve al Service Broker especificado. EVENTDATA tambin se
puede utilizar dentro del cuerpo de un desencadenador DDL. La
Sintanxis es EVENTDATA ( ).
En un trigger DELETE, INSERT o UPDATE, SQL Server no admite
referencias de columnas text, ntext o image en las tablas inserted y
deleted si el nivel de compatibilidad es igual a 70. No se tiene acceso
a los valores text, ntext e image de las tablas inserted y deleted.
Para recuperar el nuevo valor de un trigger INSERT o UPDATE,
combine la tabla inserted con la tabla de actualizacin original.
Cuando el nivel de compatibilidad es 65 o inferior, se devuelven
valores NULL para las columnas inserted o deleted text, ntext o
image que admiten valores NULL; si las columnas no permiten valores
NULL, se devuelven cadenas de longitud cero.
Si el nivel de compatibilidad es 80 o superior, SQL Server permite
actualizar las columnas text, ntext o image mediante el trigger
INSTEAD OF en tablas o vistas.
Importante:
Los tipos de datos ntext, text e image no existirn en una versin futura de
Microsoft SQL Server. Evite su uso en nuevos trabajos de desarrollo y piense
en modificar las aplicaciones que los usan actualmente. Utilice nvarchar(max),
varchar(max) y varbinary(max) en su lugar. Tanto los triggers AFTER como
INSTEAD OF admiten los datos varchar(MAX), nvarchar(MAX) y
varbinary(MAX) en las tablas inserted y deleted.
< method_specifier >
En el caso de un trigger CLR, especifica el mtodo de enlace de un
ensamblado con el trigger. El mtodo no puede utilizar argumentos y
debe devolver void. class_name debe ser un identificador de SQL
Server vlido y debe existir como una clase en el ensamblado con
visibilidad de ensamblado. Si la clase tiene un nombre calificado como
espacio de nombres que utiliza '.' para separar las partes del espacio

Pgina 463 de 630

de nombres, el nombre de la clase debe estar delimitado por


delimitadores de tipo [ ] o " ". La clase no puede ser anidada.

Nota:
De manera predeterminada, la capacidad de SQL Server de ejecutar cdigo
CLR est desactivada. Se puede crear, modificar y quitar objetos de bases de
datos que hagan referencia a mdulos de cdigo administrados, pero estas
referencias no se ejecutarn en una instancia de SQL Server a menos que la
opcin clr enabled est habilitada mediante el uso de sp_configure
(procedimiento que muestra o cambia las opciones de configuracin global del
servidor actual) .

Triggers DML
Los triggers DML se utilizan frecuentemente para imponer las reglas
empresariales y la integridad de los datos. SQL Server proporciona integridad
referencial declarativa (DRI) mediante las instrucciones ALTER TABLE y
CREATE TABLE.
Sin embargo, DRI no proporciona integridad referencial entre bases de datos.
La integridad referencial se refiere a las reglas acerca de la relacin entre la
clave principal y la clave externa de las tablas. Para exigir la integridad
referencial, utilice las restricciones de tipo PRIMARY KEY y FOREIGN KEY
en ALTER TABLE y CREATE TABLE.
Si existen restricciones en la tabla de triggers, se comprueban despus de la
ejecucin del trigger INSTEAD OF y antes de la de AFTER. Si se infringen las
restricciones, se revierten las acciones del trigger INSTEAD OF y el trigger
AFTER no se ejecuta.
El primer y ltimo trigger AFTER que se ejecuta en una tabla se puede
especificar mediante sp_settriggerorder. Slo se puede especificar el primer
y ltimo trigger AFTER para cada una de las operaciones INSERT, UPDATE
y DELETE de una tabla. Si hay otros triggers AFTER en la misma tabla, se
ejecutan aleatoriamente.
Si una instruccin ALTER TRIGGER modifica el primer o ltimo trigger, se
elimina el primer o ltimo atributo establecido en el trigger modificado, y el
valor del orden se debe restablecer mediante sp_settriggerorder.
Un trigger AFTER se ejecuta slo despus de ejecutar correctamente la
instruccin SQL trigger. La ejecucin correcta incluye todas las acciones
referenciales en cascada y las comprobaciones de restricciones asociadas
con el objeto actualizado o eliminado.
Si un trigger INSTEAD OF definido en una tabla ejecuta una instruccin en la
tabla que normalmente volvera a activarlo, al trigger no se lo llama de forma
recursiva. En su lugar, la instruccin se procesa como si la tabla no tuviera un
trigger INSTEAD OF e inicia la cadena de operaciones de restriccin y
ejecuciones de triggers AFTER.
Por ejemplo, si para una tabla se define un trigger como INSTEAD OF
INSERT, y ste ejecuta una instruccin INSERT en la misma tabla, la
instruccin INSERT ejecutada por el trigger INSTEAD OF no vuelve a llamar
Pgina 464 de 630

al trigger. La instruccin INSERT ejecutada por el trigger inicia el proceso que


realiza las acciones de restriccin y activa cualquier trigger AFTER INSERT
definido para la tabla.
Si un trigger INSTEAD OF definido en una vista ejecuta una instruccin en la
vista que normalmente volvera a activarlo, no se llamar el trigger de forma
recursiva. En su lugar, la instruccin se resuelve a modo de modificaciones
en las tablas base subyacentes de la vista. En este caso, la definicin de la
vista debe cumplir todas las restricciones para una vista actualizable.
Por ejemplo, si para una tabla se define un trigger como INSTEAD OF
UPDATE y ste ejecuta una instruccin UPDATE que hace referencia a la
misma vista, la instruccin UPDATE, que ejecuta el trigger INSTEAD OF, no
vuelve a llamar al trigger. La instruccin UPDATE que ejecuta el trigger se
procesa en la vista, como si sta no tuviera un trigger INSTEAD OF. Las
columnas que modifica la instruccin UPDATE deben resolverse en una
nica tabla base. Cada vez que se modifica una tabla base subyacente se
inicia la cadena para aplicar restricciones y activar los triggers AFTER
definidos para la tabla.
Probar las acciones de UPDATE o INSERT en columnas especficas
Se puede disear un trigger Transact-SQL que realice determinadas acciones
segn modificaciones de UPDATE o INSERT en columnas especficas. Para
ello, utilice UPDATE() o COLUMNS_UPDATED en el cuerpo del trigger.
UPDATE() comprueba los intentos de UPDATE o INSERT en una columna.
COLUMNS_UPDATED comprueba las acciones de UPDATE o INSERT que
se realizaron en varias columnas y devuelve un patrn de bits que indica las
columnas que fueron insertadas o actualizadas.
Limitaciones de los triggers
CREATE TRIGGER debe ser la primera instruccin en el proceso por lotes y
slo se puede aplicar a una tabla.
Un trigger se crea solamente en la base de datos actual; sin embargo, un
trigger puede hacer referencia a objetos que estn fuera de la base de datos
actual.
Si se especifica el nombre del esquema del trigger (para calificar al trigger),
califique el nombre de la tabla de la misma forma.
La misma accin del trigger puede definirse para ms de una accin del
usuario (por ejemplo, INSERT y UPDATE) en la misma instruccin CREATE
TRIGGER.
Los triggers INSTEAD OF DELETE/UPDATE no pueden definirse en una
tabla con una clave externa definida en cascada en la accin
DELETE/UPDATE.
En un trigger se puede especificar cualquier instruccin SET. La opcin SET
seleccionada permanece en efecto durante la ejecucin del trigger y,
despus, vuelve a su configuracin anterior.
Cuando se activa un trigger, los resultados se devuelven a la aplicacin que
llama, exactamente igual que con los procedimientos almacenados. Para
impedir que se devuelvan resultados a la aplicacin debido a la activacin de
un trigger, no incluya las instrucciones SELECT que devuelven resultados ni
Pgina 465 de 630

las instrucciones que realizan una asignacin variable en un trigger. Un


trigger que incluya instrucciones SELECT que devuelven resultados al
usuario o instrucciones que realizan asignaciones de variables requiere un
tratamiento especial; estos resultados devueltos tendran que escribirse en
cada aplicacin en la que se permiten modificaciones a la tabla del trigger. Si
es preciso que existan asignaciones de variable en un trigger, utilice una
instruccin SET NOCOUNT al principio del mismo para impedir la devolucin
de cualquier conjunto de resultados.
Un trigger DELETE no captura una instruccin TRUNCATE TABLE. Aunque
una instruccin TRUNCATE TABLE es, de hecho, un trigger DELETE sin una
clusula WHERE (elimina todas las filas), no se registra y, por tanto, no
puede ejecutar un trigger. Dado que el permiso de la instruccin TRUNCATE
TABLE es del propietario de la tabla y no se puede transferir, slo el
propietario de la tabla debe preocuparse de invocar sin darse cuenta una
instruccin TRUNCATE TABLE que no producir la ejecucin del trigger
DELETE.
La instruccin WRITETEXT, ya se registre o no, no activa un trigger.
Las siguientes instrucciones Transact-SQL no estn permitidas en un trigger
DML:
ALTER DATABASE
CREATE DATABASE
DROP DATABASE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG
Adems, las siguientes instrucciones Transact-SQL no se permiten en el
cuerpo de un trigger DML cuando ste se utiliza en la tabla o vista que es
objeto de la accin trigger.
Importante:
Aunque esta restriccin se ha introducido en SQL Server 2005, se exige
tambin cuando el modo de compatibilidad con versiones anteriores se
establece en 80.
DROP
INDEX
ALTER PARTITIONDROP
DBCC DBREINDEX
FUNCTION
TABLE
ALTER TABLE cuando se utiliza para hacer lo
siguiente:
CREATE INDEX

ALTER INDEX

Agregar, modificar o quitar columnas.


Cambiar particiones.
Agregar o quitar restricciones de tipo
PRIMARY KEY o UNIQUE.
Nota:
Ya que SQL Server no admite triggers definidos por el usuario en tablas del
sistema, se recomienda no crearlos.

Pgina 466 de 630

Triggers DDL
Los triggers DDL, al igual que los estndar, ejecutan procedimientos
almacenados como respuesta a un evento. Pero a diferencia de los triggers
estndar, no se ejecutan como respuesta a instrucciones UPDATE, INSERT
o DELETE en una tabla o vista. En cambio, se ejecutan principalmente como
respuesta a instrucciones de lenguaje de definicin de datos (o DDL). Entre
ellas se incluyen instrucciones CREATE, ALTER, DROP, GRANT, DENY,
REVOKE y UPDATE STATISTICS. Algunos procedimientos almacenados del
sistema que ejecutan operaciones de tipo DDL tambin pueden activar
triggers DDL.
Importante:
Pruebe los triggers DDL para determinar sus respuestas a la ejecucin de los
procedimientos almacenados del sistema. Por ejemplo, la instruccin
CREATE TYPE y el procedimiento almacenado sp_addtype activarn un
trigger DDL que se crea en un evento CREATE_TYPE. Sin embargo, el
procedimiento almacenado sp_rename no activa ningn trigger DDL.
Los triggers DDL no se activan como respuesta a eventos que afectan a
procedimientos almacenados y tablas temporales, ya sean locales o globales.
A diferencia de los triggers DML, los triggers DDL no tienen como mbito los
esquemas. Por tanto, OBJECT_ID, OBJECT_NAME, OBJECTPROPERTY y
OBJECTPROPERTYEX no se pueden utilizar para efectuar consultas en
metadatos sobre triggers DDL. Utilice en su lugar las vistas de catlogo.
Nota:
Los triggers DDL con mbito en el servidor aparecen en el Explorador de
objetos de SQL Server Management Studio, en la carpeta Triggers. Dicha
carpeta se encuentra en la carpeta Server Objects. Los triggers DDL con
mbito en la base de datos aparecen en la carpeta Database Triggers. Esta
carpeta se encuentra en la carpeta Programacin de la base de datos
correspondiente.

Consideraciones generales sobre los triggers


Devolver resultados
Se quitar la capacidad de devolver resultados desde los triggers en una
futura versin de SQL Server. Los triggers que devuelven conjuntos de
resultados pueden provocar comportamientos inesperados en aplicaciones
que no estn diseadas para trabajar con ellos. Evite la devolucin de
conjuntos de resultados desde triggers en los nuevos trabajos de desarrollo y
piense en modificar las aplicaciones que la usan actualmente. Para evitar que
los triggers devuelvan conjuntos de resultados en SQL Server 2005,
establezca la opcin disallow results from triggers en 1.

Pgina 467 de 630

Triggers mltiples
SQL Server permite que se creen varios triggers por cada evento DML o
DDL. Por ejemplo, si se ejecuta CREATE TRIGGER FOR UPDATE para una
tabla que ya tiene un trigger UPDATE, se crear un trigger de actualizacin
adicional. En las versiones anteriores de SQL Server, slo se permita un
trigger por cada evento de modificacin (INSERT, UPDATE, DELETE) en
cada tabla.

Nota:
Con un nivel de compatibilidad de 70, el comportamiento predeterminado de
CREATE TRIGGER es agregar triggers adicionales a los ya existentes si los
nombres de triggers son distintos. Si el nombre de los triggers es el mismo,
SQL Server devuelve un mensaje de error. Sin embargo, si el nivel de
compatibilidad es igual o menor que 65, cualquier trigger creado con la
instruccin CREATE TRIGGER substituir a los triggers existentes del mismo
tipo, incluso si los nombres de los triggers son distintos. Existe el
sp_dbcmptlevel que configura varios comportamientos de la base de datos
para que sean compatibles con la versin especificada de SQL Server.

Triggers recursivos
SQL Server permite tambin la invocacin recursiva de triggers cuando el
valor RECURSIVE_TRIGGERS est habilitado mediante ALTER DATABASE.
Los triggers recursivos permiten dos tipos de repeticin:
Repeticin indirecta:Con la repeticin indirecta, una aplicacin
actualiza la tabla T1. As se activa el trigger TR1 para actualizar la
tabla T2. En esta situacin, el trigger T2 activa y actualiza la tabla
T1.
Repeticin directa:Con la repeticin directa, una aplicacin
actualiza la tabla T1. As se activa el trigger TR1 para actualizar la
tabla T1. Debido a que la tabla T1 se ha actualizado, el trigger
TR1 se activa de nuevo, y as sucesivamente.
Este ejemplo utiliza ambas repeticiones de trigger, directa e indirecta.
Suponga que en la tabla T1 se han definido dos triggers de actualizacin,
TR1 y TR2. El trigger TR1 actualiza la tabla T1 recursivamente. Una
instruccin UPDATE ejecuta cada TR1 y TR2 a la vez. Adems, la ejecucin
de TR1 desencadena la ejecucin de TR1 (recursivamente) y TR2. Las tablas
inserted y deleted de un trigger especfico contienen filas que corresponden
slo a la instruccin UPDATE que invoc al trigger.
Nota:
El
comportamiento
anterior
slo
se
produce
si
el
valor
RECURSIVE_TRIGGERS est habilitado mediante ALTER DATABASE. No
hay un orden definido en el que se ejecuten los distintos triggers definidos de
un evento especfico. Cada trigger debe ser independiente.
Pgina 468 de 630

Deshabilitar RECURSIVE_TRIGGERS slo evita las repeticiones directas.


Para deshabilitar la repeticin indirecta, establezca la opcin nested triggers
del servidor en 0 con sp_configure.
Si alguno de los triggers ejecuta una instruccin ROLLBACK TRANSACTION,
no se ejecuta ningn trigger posterior, independientemente del nivel de
anidamiento.
Triggers anidados
Los triggers pueden anidarse hasta un mximo de 32 niveles. Si un trigger
cambia una tabla en la que hay otro trigger, el segundo se activa y puede,
entonces, llamar a un tercero, y as sucesivamente. Si algn trigger de la
cadena causa un bucle infinito, el nivel de anidamiento se habr
sobrepasado, con lo que se cancela el trigger. Para deshabilitar los triggers
anidados, establezca la opcin nested triggers de sp_configure en 0
(desactivada). La configuracin predeterminada permite triggers anidados. Si
los triggers anidados estn desactivados, los triggers recursivos tambin se
deshabilitan, independientemente del valor de RECURSIVE_TRIGGERS
establecido mediante ALTER DATABASE.
Nota:
Cuando un trigger Transact-SQL ejecuta cdigo administrado haciendo
referencia a una rutina, un tipo o agregado CLR, esta referencia cuenta como
un nivel para el lmite de anidamiento de 32 niveles. Los mtodos invocados
desde el cdigo administrado no cuentan para este lmite.

Resolucin diferida de nombres


SQL Server permite que los procedimientos almacenados, triggers y
procesos por lotes de Transact-SQL hagan referencia a tablas que no existen
en el momento de la compilacin. Esta capacidad se denomina resolucin
diferida de nombres. Sin embargo, si los procedimientos almacenados,
triggers y procesos por lotes de Transact-SQL hacen referencia a una tabla
definida en el procedimiento almacenado o trigger, se emitir una advertencia
en el momento de la creacin slo si el valor de nivel de compatibilidad se
establece en 65. Si se utiliza un proceso por lotes, la advertencia se emite en
el momento de la compilacin. Si la tabla a la que se hace referencia no
existe, se devuelve un mensaje de error en tiempo de ejecucin.
Permisos
Para crear un trigger DML, es necesario contar con permiso ALTER sobre la
tabla o vista en la que se crea el trigger.
Para crear un trigger DDL con mbito en el servidor (ON ALL SERVER) es
necesario un permiso CONTROL SERVER sobre el servidor. Para crear un
trigger DDL con mbito en la base de datos (ON DATABASE) es necesario
un permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos
actual.

Pgina 469 de 630

Ejemplos
A. Utilizar un trigger DML con un mensaje de aviso
El siguiente trigger DML imprime un mensaje en el cliente cuando alguien
intenta agregar o cambiar datos en la tabla Customer.
USE AdventureWorks
IF OBJECT_ID ('Sales.reminder1', 'TR') IS NOT NULL
DROP TRIGGER Sales.reminder1
GO
CREATE TRIGGER reminder1
ON Sales.Customer
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Customer Relations', 16, 10)
GO

B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso


Este ejemplo enva un mensaje de correo electrnico a una persona
especificada (MaryM) cuando cambia la tabla Customer.
USE AdventureWorks
IF OBJECT_ID ('Sales.reminder2','TR') IS NOT NULL
DROP TRIGGER Sales.reminder2
GO
CREATE TRIGGER reminder2
ON Sales.Customer
AFTER INSERT, UPDATE, DELETE
AS
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AdventureWorks Administrator',
@recipients = 'danw@Adventure-Works.com',
@body = 'Don''t forget to print a report for the sales force.',
@subject = 'Reminder';
GO

C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor
Debido a que las restricciones CHECK slo pueden hacer referencia a las
columnas en que se han definido las restricciones de columna o de tabla,
cualquier restriccin de referencias cruzadas, en este caso, reglas de
negocio, debe definirse como triggers.
En este ejemplo se crea un trigger DML. El trigger comprueba que la
solvencia del proveedor es satisfactoria cuando se intenta insertar un nuevo
pedido de compra en la tabla PurchaseOrderHeader. Para obtener la
solvencia del proveedor, debe hacerse referencia a la tabla Vendor. Si la
solvencia no es satisfactoria, se muestra un mensaje y no se ejecuta la
insercin.
Nota:
Para ver ejemplos de triggers DML AFTER que actualizan varias filas, vea
Consideraciones acerca de operaciones con varias filas para triggers DML .
IF OBJECT_ID ('Purchasing.LowCredit','TR') IS NOT NULL
DROP TRIGGER Purchasing.LowCredit
Pgina 470 de 630

GO
CREATE TRIGGER LowCredit ON Purchasing.PurchaseOrderHeader
AFTER INSERT
AS
DECLARE @creditrating tinyint,
@vendorid int
SELECT @creditrating = v.CreditRating, @vendorid = p.VendorID
FROM Purchasing.PurchaseOrderHeader p INNER JOIN inserted
p.PurchaseOrderID =
i.PurchaseOrderID JOIN Purchasing.Vendor v on v.VendorID = i.VendorID
IF @creditrating = 5
BEGIN
RAISERROR ('This vendor''s credit rating is too low to accept new
purchase orders.', 16, 1)
ROLLBACK TRANSACTION
END

ON

D. Utilizar la resolucin diferida de nombres


El ejemplo siguiente crea dos triggers DML para ilustrar la resolucin diferida
de nombres.
USE AdventureWorks
IF OBJECT_ID ('HumanResources.trig1','TR') IS NOT NULL
DROP TRIGGER HumanResources.trig1
GO
-- Creating a trigger on a nonexistent table.
CREATE TRIGGER trig1
on HumanResources.Employee
AFTER INSERT, UPDATE, DELETE
AS
SELECT e.EmployeeID, e.BirthDate, x.info
FROM HumanResources.Employee e INNER JOIN does_not_exist x
ON e.EmployeeID = x.xID
GO
-- Here is the statement to actually see the text of the trigger.
SELECT t.object_id, m.definition
FROM sys.triggers t INNER JOIN sys.sql_modules m
ON t.object_id = m.object_id
WHERE t.type = 'TR' and t.name = 'trig1'
AND t.parent_class = 1
GO
-- Creating a trigger on an existing table, but with a nonexistent
-- column.
USE AdventureWorks
IF OBJECT_ID ('HumanResources.trig2','TR') IS NOT NULL
DROP TRIGGER HumanResources.trig2
GO
CREATE TRIGGER trig2
ON HumanResources.Employee
AFTER INSERT, UPDATE
AS
Pgina 471 de 630

DECLARE @fax varchar(12)


SELECT @fax = 'AltPhone'
FROM HumanResources.Employee
GO
-- Here is the statement to actually see the text of the trigger.
SELECT t.object_id, m.definition
FROM sys.triggers t INNER JOIN sys.sql_modules m
ON t.object_id = m.object_id
WHERE t.type = 'TR' and t.name = 'trig2'
AND t.parent_class = 1
GO

E. Utilizar un trigger DDL con mbito en la base de datos


En el ejemplo siguiente se utiliza un trigger DDL para impedir que se quiten
sinnimos en una base de datos.
USE AdventureWorks
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE
GO
CREATE TRIGGER safety
ON DATABASE
FOR DROP_SYNONYM
AS
RAISERROR ('You must disable Trigger "safety" to drop synonyms!',10, 1)
ROLLBACK
GO
DROP TRIGGER safety
ON DATABASE
GO

F. Utilizar un trigger DDL con mbito en el servidor


En el ejemplo siguiente se utiliza un trigger DDL para imprimir un mensaje si
se produce un evento CREATE DATABASE en la instancia actual del
servidor, y se utiliza la funcin EVENTDATA para recuperar el texto de la
instruccin Transact-SQL correspondiente.

Pgina 472 de 630

IF EXISTS (SELECT * FROM sys.server_triggers


WHERE name = 'ddl_trig_database')
DROP TRIGGER ddl_trig_database
ON ALL SERVER
GO
CREATE TRIGGER ddl_trig_database
ON ALL SERVER
FOR CREATE_DATABASE
AS
PRINT 'Database Created.'
SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)
[1]','nvarchar(max)')
GO
DROP TRIGGER ddl_trig_database
ON ALL SERVER
GO

G. Ver los eventos que hacen que se active un trigger


En el ejemplo siguiente se efecta una consulta en las vistas de catlogo
sys.triggers y sys.trigger_events para determinar qu eventos de lenguaje
Transact-SQL hacen que se active el trigger safety.
SELECT TE.*
FROM sys.trigger_events AS TE
JOIN sys.triggers AS T
ON T.object_id = TE.object_id
WHERE T.parent_class = 0
AND T.name = 'safety'
GO
Nota:
En todas las instalaciones de SQL Server 2005, el nivel de compatibilidad
predeterminado es 90. Las bases de datos creadas en SQL Server 2005 se
configuran en este nivel, excepto la base de datos model que tiene un nivel
de compatibilidad inferior. Cuando se actualiza una base de datos de una
versin anterior de SQL Server a SQL Server 2005, la base de datos
mantiene su nivel de compatibilidad. Esto se aplica a las bases de datos del
usuario y del sistema. Use sp_dbcmptlevel para cambiar el nivel de
compatibilidad de la base de datos a 90. Para ver el nivel de compatibilidad de
la base de datos, consulte la columna compatibility_level en la vista de
catlogo sys.databases.
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores
El procedimiento almacenado sp_dbcmptlevel slo afecta a los
comportamientos de la base de datos especificada, no de todo el servidor.
sp_dbcmptlevel proporciona slo una compatibilidad parcial con versiones
anteriores de SQL Server. Use sp_dbcmptlevel como ayuda provisional para
la migracin, para solucionar diferencias de comportamiento entre las
versiones que se controlan con el nivel de compatibilidad correspondiente. Si
tiene aplicaciones de SQL Server que se ven afectadas por las diferencias de
Pgina 473 de 630

comportamiento en SQL Server 2005, convirtalas para que funcionen


correctamente. Despus, utilice sp_dbcmptlevel para cambiar el nivel de
compatibilidad a 90. El nivel de compatibilidad nuevo de una base de datos se
hace efectivo la prxima vez que se actualice la base de datos (ya sea como
la base de datos predeterminada al iniciar sesin o al especificarse en una
instruccin USE).
Una base de datos que contenga una vista indizada no se puede cambiar a
un nivel de compatibilidad inferior al 80.

Transacciones
Una transaccin es una unidad nica de trabajo. Si una transaccin tiene
xito, todas las modificaciones de los datos realizadas durante la transaccin
se confirman y se convierten en una parte permanente de la base de datos.
Si una transaccin encuentra errores y debe cancelarse o revertirse, se
borran todas las modificaciones de los datos.
SQL Server funciona en los siguientes modos de transaccin:
Transacciones de confirmacin automtica
Cada instruccin individual es una transaccin.
Transacciones explcitas
Cada transaccin se inicia explcitamente con la instruccin BEGIN
TRANSACTION y se termina explcitamente con una instruccin
COMMIT o ROLLBACK.
Transacciones implcitas
Se inicia implcitamente una nueva transaccin cuando se ha
completado la anterior, pero cada transaccin se completa
explcitamente con una instruccin COMMIT o ROLLBACK.
Transacciones de mbito de lote
Una transaccin implcita o explcita de Transact-SQL que se inicia en
una sesin de MARS (conjuntos de resultados activos mltiples), que
slo es aplicable a MARS, se convierte en una transaccin de mbito

Pgina 474 de 630

de lote. Si no se confirma o revierte una transaccin de mbito de lote


cuando se completa el lote, SQL Server la revierte automticamente.
En Microsoft SQL Server 2005, las conexiones se pueden habilitar
para admitir conjuntos de resultados activos mltiples (MARS). Estas
conexiones tienen asociado un entorno de ejecucin de lotes
predeterminado.
El entorno de ejecucin de lotes consta de los siguientes
componentes:
Valores de opcin SET (incluidos ANSI_NULLS,
DATE_FORMAT, LANGUAGE y TEXTSIZE)
Contexto de seguridad (la funcin de usuario o aplicacin
para el entorno de ejecucin de lotes)
Contexto de base de datos (la base de datos actual para el
entorno)
Funciones de estado de ejecucin (incluidas @@ERROR,
@@ROWCOUNT, @@FETCH_STATUS y @@IDENTITY)
Tablas temporales de nivel superior
Cada nuevo lote que empieza a ejecutarse para una conexin
especfica recibe una copia del entorno predeterminado. Siempre que
se ejecuta un lote, todos los cambios efectuados en el entorno de
ejecucin tienen como mbito ese lote en concreto. Cuando finaliza la
ejecucin, su configuracin se copia en el entorno predeterminado. En
el caso de un solo lote que emite varios comandos de ejecucin
secuencial, el comportamiento observado es el mismo que el de las
conexiones en las que intervienen clientes o servidores de versiones
anteriores de SQL Server.
En las versiones anteriores de SQL Server, slo se poda ejecutar un
lote a la vez. Por lo tanto, los cambios que un lote realizaba en el
entorno de lotes estaban visibles para todos los lotes posteriores.
Para los procedimientos almacenados y funciones, el entorno
predeterminado de un lote es el valor predeterminado para la
conexin, pero cuando la ejecucin finaliza, los cambios no se vuelven
a copiar en el entorno de ejecucin de lotes predeterminado de la
conexin.
Por ejemplo, supongamos que dos lotes se ejecutan de la siguiente
manera:

--First Batch
SET ARITHABORT ON
SET ANSI_WARNINGS ON
SELECT 1/0
GO
Pgina 475 de 630

--Second Batch
SET ARITHABORT OFF
SET ANSI_WARNINGS OFF
SELECT 1/0
GO
Supongamos tambin que MARS est habilitado para la conexin con
un entorno de ejecucin predeterminado, con SET ARITHABORT
establecido en OFF y SET ANSI_WARNINGS establecido en ON.
Si los dos lotes se envan al mismo tiempo en la conexin, empezarn
a ejecutarse con la configuracin del entorno de lotes predeterminado
de la conexin. Durante la ejecucin, sus entornos se acotan para
garantizar que los cambios de entorno en un lote no afecten a los
cambios del otro lote. Cuando un lote finaliza su ejecucin, vuelve a
copiar el entorno resultante al valor predeterminado de la conexin. El
entorno predeterminado resultante para la conexin depende del
ltimo lote que finaliza la ejecucin. ste ser el entorno que utilizar
el siguiente lote que se ejecute.

Transacciones del Motor de Base de Datos

Una transaccin es una secuencia de operaciones realizadas como una sola


unidad lgica de trabajo. Una unidad lgica de trabajo debe exhibir cuatro
propiedades, conocidas como propiedades de atomicidad, coherencia,
aislamiento y durabilidad (ACID), para ser calificada como transaccin.
Atomicidad
Una transaccin debe ser una unidad atmica de trabajo, tanto si se
realizan todas sus modificaciones en los datos, como si no se realiza
ninguna de ellas.
Coherencia
Cuando finaliza, una transaccin debe dejar todos los datos en un
estado coherente. En una base de datos relacional, se deben aplicar
todas las reglas a las modificaciones de la transaccin para mantener
la integridad de todos los datos. Todas las estructuras internas de
datos, como ndices de rbol b o listas doblemente vinculadas, deben
estar correctas al final de la transaccin.
Aislamiento
Las modificaciones realizadas por transacciones simultneas se deben
aislar de las modificaciones llevadas a cabo por otras transacciones
simultneas. Una transaccin reconoce los datos en el estado en que
estaban antes de que otra transaccin simultnea los modificara o
Pgina 476 de 630

despus de que la segunda transaccin haya concluido, pero no


reconoce un estado intermedio. Esto se conoce como seriabilidad, ya
que deriva en la capacidad de volver a cargar los datos iniciales y
reproducir una serie de transacciones para finalizar con los datos en el
mismo estado en que estaban despus de realizar las transacciones
originales.
Durabilidad
Una vez concluida una transaccin, sus efectos son permanentes en el
sistema. Las modificaciones persisten an en el caso de producirse un
error en el sistema.
Especificar y exigir transacciones
Los programadores de SQL son los responsables de iniciar y finalizar las
transacciones en puntos que exijan la coherencia lgica de los datos. El
programador debe definir la secuencia de modificaciones de datos que los
dejan en un estado coherente en relacin con las reglas corporativas de la
organizacin. El programador incluye estas instrucciones de modificacin en
una sola transaccin de forma que SQL Server 2005 Database Engine
puede exigir la integridad fsica de la misma.
Es responsabilidad de un sistema de base de datos corporativo, como una
instancia de Database Engine (Motor de base de datos), proporcionar los
mecanismos que aseguren la integridad fsica de cada transaccin. Database
Engine (Motor de base de datos) proporciona:
Servicios de bloqueo que preservan el aislamiento de la
transaccin.
Servicios de registro que aseguran la durabilidad de la
transaccin. Aunque se produzca un error en el hardware del
servidor, el sistema operativo o la instancia de Database Engine.
La instancia utiliza registros de transacciones, al reiniciar, para
revertir automticamente las transacciones incompletas al punto
en que se produjo el error del sistema.
Caractersticas de administracin de transacciones que exigen la
atomicidad y coherencia de la transaccin. Una vez iniciada una
transaccin, debe concluirse correctamente; en caso contrario, la
instancia de Database Engine deshar todas las modificaciones
de datos realizadas desde que se inici la transaccin.

Pgina 477 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 2
Componentes del
SQL Server 2005

2007

Pgina 478 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 479 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 480 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 481 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 482 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 483 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 484 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 485 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 486 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 487 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 488 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 489 de 630

Unidad 2: Componentes del SQL Server 2005


Objetivos
Dar una visin acerca de los componentes que conforman el
Microsoft SQL Server 2005.

Pgina 490 de 630

Versiones de Microsoft SQL Server 2005


Los requisitos de instalacin pueden variar mucho, dependiendo de las
necesidades de las aplicaciones. Las diferentes ediciones de Microsoft SQL
Server 2005 satisfacen los requisitos de rendimiento, tiempo de ejecucin y
precio de organizaciones y personas. Los diversos componentes de
Microsoft SQL Server 2005 que instale dependern de las necesidades de las
organizaciones y de las personas. Las siguientes secciones le ayudarn a
elegir la mejor opcin entre las ediciones y componentes disponibles en
Microsoft SQL Server 2005.
Decidir entre ediciones de Microsoft SQL Server 2005
Puede usar todas las ediciones de Microsoft SQL Server 2005 en entornos de
produccin excepto para Microsoft SQL Server 2005 Developer Edition y
Microsoft SQL Server 2005 Evaluation Edition. En los prrafos siguientes se
describen las ediciones de Microsoft SQL Server 2005.
Microsoft SQL Server 2005 Enterprise Edition (32 bits y 64 bits)
Enterprise Edition es ampliable a los niveles de rendimiento necesarios
para admitir el procesamiento de transacciones en lnea (OLTP) de las
empresas ms grandes, anlisis de datos de alta complejidad,
sistemas de almacenamiento de datos y sitios web. Las completas
capacidades de anlisis y Business Intelligence, y sus caractersticas
de alta disponibilidad como, por ejemplo, el clster de conmutacin por
error, permiten controlar las cargas de trabajo empresarial de mayor
importancia. Enterprise Edition es la edicin ms completa de SQL
Server y es idnea para las organizaciones ms grandes y para los
requisitos ms complejos.
Microsoft SQL Server 2005 Evaluation Edition (32 bits y 64 bits)
Microsoft SQL Server 2005 tambin est disponible en una edicin de
evaluacin de 180 das para plataformas de 32 bits o 64 bits. SQL
Server Evaluation Edition admite el mismo conjunto de caractersticas
que Microsoft SQL Server 2005 Enterprise Edition. Puede actualizar
SQL Server Evaluation Edition para usarlo en produccin.
Microsoft SQL Server 2005 Standard Edition (32 bits y 64 bits)
Microsoft SQL Server 2005 Standard Edition es la plataforma de
anlisis y administracin de datos para organizaciones pequeas y
medianas. Incluye la funcionalidad bsica necesaria para soluciones
de lnea de negocio, almacenamiento de datos y comercio electrnico.
Las caractersticas de alta disponibilidad y de Business Intelligence
integradas de Standard Edition proporcionan a las organizaciones las
capacidades bsicas que necesitan para realizar sus operaciones.
Microsoft SQL Server 2005 Standard Edition es idneo para aquella
organizacin pequea o mediana que necesite una plataforma
completa de anlisis y administracin de datos.
Pgina 491 de 630

Microsoft SQL Server 2005 Workgroup Edition (slo 32 bits)


Microsoft SQL Server 2005 Workgroup Edition es la solucin de
administracin de datos para pequeas organizaciones que necesitan
una base de datos sin lmites de tamao o cantidad de usuarios.
Microsoft SQL Server 2005 Workgroup Edition se puede utilizar como
servidor Web cliente o para operaciones de sucursales o
departamentos. Incluye las caractersticas principales de base de
datos de la lnea de productos de SQL Server y es fcilmente
actualizable a Microsoft SQL Server 2005 Standard Edition o Microsoft
SQL Server 2005 Enterprise Edition. Microsoft SQL Server 2005
Workgroup Edition es una base de datos idnea para comenzar a
trabajar con Microsoft MS SQL Server, la cual resulta confiable, slida
y fcil de administrar.
Microsoft SQL Server 2005 Developer Edition (32 bits y 64 bits)
Microsoft SQL Server 2005 Developer Edition permite a los
programadores crear cualquier tipo de aplicacin sobre SQL Server.
Incluye toda la funcionalidad de Microsoft SQL Server 2005 Enterprise
Edition, pero su licencia permite utilizarlo como sistema de desarrollo y
prueba, no como un servidor de produccin. Microsoft SQL Server
2005 Developer Edition es una opcin ideal para fabricantes
independientes de software (ISV), asesores, integradores de sistemas,
proveedores de soluciones y programadores corporativos que crean y
prueban aplicaciones. Puede actualizar Microsoft SQL Server 2005
Developer Edition para utilizarlo en produccin.
Microsoft SQL Server 2005 Express Edition (slo 32 bits)
La plataforma de bases de datos de SQL Server Express se basa en
Microsoft Microsoft SQL Server 2005. Tambin sustituye a Microsoft
Desktop Engine (MSDE). Gracias a su integracin con Microsoft Visual
Studio 2005, SQL Server Express facilita el desarrollo de aplicaciones
controladas por datos que tienen una gran capacidad, ofrecen un
almacenamiento seguro y se implementan con rapidez.
SQL Server Express es gratuito y puede redistribuirse (mediante un
acuerdo); funciona como la base de datos de cliente, adems de como
una base de datos de servidor bsica. SQL Server Express es la
opcin idnea para fabricantes independientes de software (ISV),
usuarios de servidor, programadores no profesionales, programadores
de aplicaciones Web, hosting de sitios Web y aficionados a crear
aplicaciones cliente. Si necesita caractersticas de base de datos ms
avanzadas, SQL Server Express puede actualizarse de forma ptima a
versiones ms sofisticadas de SQL Server.
SQL Server Express tambin ofrece componentes adicionales que
estn disponibles como parte de Microsoft SQL Server 2005 Express
Edition with Advanced Services (SQL Server Express). Adems de las
caractersticas de SQL Server Express, SQL Server Express con
Advanced Services ofrece lo siguiente:
Pgina 492 de 630

SQL Server Management Studio Express (SSMSE), un


subconjunto de SQL Server Management Studio.
Compatibilidad con catlogos de texto.
Compatibilidad para ver informes mediante Reporting Services.
Microsoft SQL Server 2005 Mobile Edition (slo 32 bits)
SQL Server Mobile es la base de datos compacta que ampla la
funcionalidad de administracin de datos corporativos a dispositivos.
SQL Server Mobile puede replicar datos con Microsoft SQL Server
2005 y Microsoft SQL Server 2000, lo que permite a los usuarios
mantener un almacn de datos mvil que sincroniza con la base de
datos primaria. SQL Server Mobile es la nica edicin de SQL Server
que proporciona funcionalidad de administracin de bases de datos
relacionales para dispositivos inteligentes.
Microsoft SQL Server 2005 Runtime Edition (32 bits y 64 bits)
Microsoft SQL Server 2005 Runtime Edition se ofrece a travs del
programa Microsoft ISV Royalty Program (programa de fidelidad para
ISV). Segn el Contrato de licencia para el usuario final de Microsoft
SQL Server 2005 Runtime Edition, un proveedor independiente de
software (ISV) puede incrustar cdigo de SQL Server en su solucin
siempre que el cliente no utilice el cdigo de SQL Server para ejecutar
otras aplicaciones ni en ningn otro contexto.
Usar Microsoft SQL Server 2005 con un servidor de Internet
En un servidor de Internet, como el servidor en el que se ejecutan los
Servicios de Internet Information Server (IIS), se instalan normalmente las
herramientas de cliente de Microsoft SQL Server 2005. Las herramientas de
cliente incluyen los componentes de conectividad del cliente utilizados por
una aplicacin que se conecta a una instancia de SQL Server.
Nota:
Aunque puede instalar una instancia de SQL Server en un equipo en el que
se ejecute IIS, esto suele hacerse nicamente para sitios Web pequeos que
tienen un nico equipo servidor. La mayora de los sitios Web almacenan los
sistemas IIS de nivel intermedio en un servidor o clster de servidores, y las
bases de datos en un servidor o federacin de servidores independientes.
Microsoft SQL Server 2005 Reporting Services se instala normalmente en el
nivel intermedio.
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor
Puede instalar slo los componentes de cliente de Microsoft SQL Server
2005 en un equipo en el que se ejecuten aplicaciones cliente/servidor
conectadas directamente a una instancia de SQL Server. Una instalacin de
componentes de cliente tambin es una buena opcin si administra una
instancia de SQL Server en un servidor de base de datos, o si tiene pensado
desarrollar aplicaciones de SQL Server.
La opcin de componentes de cliente instala las siguientes caractersticas de
SQL Server: herramientas del smbolo del sistema, herramientas de
Pgina 493 de 630

Reporting Services, componentes de conectividad, modelos de


programacin, herramientas de administracin, herramientas de desarrollo,
Libros en pantalla, bases de datos de ejemplo y aplicaciones de muestra.
Decidir entre componentes de Microsoft SQL Server 2005
Utilice la pgina Seleccin de caractersticas del Asistente para la
instalacin de SQL Server para seleccionar los componentes a incluir en la
instalacin de Microsoft SQL Server 2005. Ninguna de las caractersticas del
rbol estn seleccionadas de manera predeterminada.
Utilice las siguientes descripciones para determinar el conjunto de
caractersticas que satisfaga sus necesidades.
Componentes
de servidor
SQL
Server
Database
Engine
Analysis
Services
Reporting
Services 1,2

Notification
Services
Integration
Services

Descripcin
El Database Engine es el servicio principal para almacenar,
procesar y proteger datos, rplica, bsqueda de texto y
herramientas para administrar datos XML y relacionales.
Analysis Services incluye las herramientas para crear y
administrar aplicaciones de procesamiento analtico en lnea
(OLAP) y de minera de datos.
Reporting Services incluye componentes de servidor y de
cliente para crear, administrar e implementar informes
tabulares, matriciales, grficos y de forma libre. Reporting
Services tambin es una plataforma extensible que puede
utilizarse para desarrollar aplicaciones de informes.
Notification Services es una plataforma para desarrollar e
implementar
aplicaciones
que
enven
informacin
personalizada puntualmente a los suscriptores de una gran
variedad de dispositivos.
Integration Services es un conjunto de herramientas
grficas y objetos programables para mover, copiar y
transformar datos.

Se necesita Servicios de Internet Information Server (IIS) 5.0 o posterior para


las instalaciones de Reporting Services.
2
Se necesita Microsoft Internet Explorer 6.0 Service Pack (SP) 1 para el
componente Diseador de informes de Reporting Services.

Pgina 494 de 630

Descripcin de Componentes de Microsoft SQL


Server 2005
Database Engine
El Microsoft SQL Server 2005 Database Engine de Microsoft es el servicio
principal para almacenar, procesar y proteger datos. El Database Engine
proporciona acceso controlado y procesamiento de transacciones rpido para
cumplir con los requisitos de las aplicaciones consumidoras de datos ms
exigentes de su empresa. Tambin proporciona compatibilidad completa para
mantener una alta disponibilidad.

Conceptos del Database Engine


El Microsoft SQL Server 2005 Database Engine es un servicio que se utiliza
para almacenar y procesar datos en un formato relacional (tabular) o como
documentos XML.
Tareas del motor de base de datos
La secuencia principal de las tareas utilizadas para implementar un sistema
que utiliza el Database Engine para el almacenamiento de datos es:
Disear y crear una base de datos que contenga las tablas
relacionales o los documentos XML que el sistema necesita.
Implementar sistemas para obtener acceso y cambiar los datos
almacenados en la base de datos, lo que incluye implementar los
sitios Web o las aplicaciones que funcionan con los datos, as
como crear procedimientos que utilicen las herramientas y
utilidades de SQL Server para trabajar con los datos.
Aplicar los sistemas implementados en la organizacin o en los
clientes.
Proporcionar soporte tcnico administrativo diario para optimizar
el rendimiento de la base de datos.

Pgina 495 de 630

Analysis Services
Microsoft SQL Server 2005 Analysis Services (SSAS) ofrece funciones de
procesamiento analtico en lnea (OLAP) y minera de datos mediante una
combinacin de tecnologas de servidor y cliente, reforzadas por el uso de un
entorno de desarrollo y administracin especializado al que se une un modelo
de objetos bien definido para disear, crear, implementar y mantener
aplicaciones de Business Intelligence.

Un usuario que desee recuperar informacin directamente de un origen de


datos, como una base de datos de ERP (Enterprise Resource Planning), se
enfrenta a varios retos importantes:
Con frecuencia, resulta difcil comprender el contenido de estos
orgenes de datos, ya que estn diseados desde la perspectiva
de los sistemas y los programadores, en lugar de los usuarios
finales.
La informacin interesante para el usuario se distribuye
generalmente en varios orgenes de datos heterogneos. Aunque
slo se manejen distintas bases de datos relacionales, el usuario
debe comprender los detalles de cada una, como el dialecto de
SQL que se utiliza. Adems, los orgenes de datos pueden ser de
tipos muy distintos, ya que no slo incluyen bases de datos
relacionales, sino tambin archivos y servicios Web.
Mientras que muchos orgenes de datos estn concebidos para
contener una gran cantidad de detalles de los niveles de
transaccin, con frecuencia las consultas que admiten la toma de
decisiones corporativas precisan informacin agregada y de
resumen. Al aumentar el volumen de datos, el tiempo necesario
para recuperar los valores de resumen para un anlisis de un
usuario final interactivo puede ser prohibitivo.
Por lo general, las reglas de negocios no estn encapsuladas en
los orgenes de datos. Los usuarios deben realizar su propia
interpretacin de los mismos.
La funcin de un modelo UDM (Unified Dimensional Model) es aproximar los
orgenes de datos al usuario. Un UDM se genera a partir de uno o varios
Pgina 496 de 630

orgenes de datos fsicos. El usuario emite consultas en el UDM mediante


diversas herramientas de cliente, como Microsoft Excel.

Existen ventajas para el usuario final an cuando el modelo UDM slo se


genere como una fina capa sobre el origen de datos: un modelo de datos
ms sencillo y ms fcil de comprender, el aislamiento de orgenes de datos
de servidor heterogneos y un rendimiento mejorado para las consultas de
tipo de resumen. En algunos escenarios, un modelo UDM simple se puede
generar automticamente. Una mayor inversin en la generacin del modelo
UDM puede generar ventajas adicionales por la gran cantidad de metadatos
que puede proporcionar el modelo.
El modelo UDM proporciona las siguientes ventajas:
Mejora notablemente el modelo del usuario.
Proporciona consultas de alto rendimiento que admiten un anlisis
interactivo, incluso con grandes volmenes de datos.
Captura las reglas de negocio del modelo para proporcionar un
anlisis mejorado.
Admite "cerrar el ciclo", lo que permite que los usuarios acten
segn los datos que ven.
Modelo bsico del usuario final
Imagine un ejemplo en el que un usuario desee comparar las ventas con las
cuotas de distintos perodos.
Los datos de ventas se almacenan en la base de datos principal Sales and
Inventory, que tambin contiene otras tablas. Incluso despus de identificar
las tablas relevantes, puede que el usuario observe que los datos de una
entidad nica, como Product, se reparten en distintas tablas. Dado que la
integridad referencial se aplica en la lgica de la aplicacin, no se definen
relaciones entre las tablas. Las cuotas de venta se almacenan en la base de
datos de otra aplicacin. Ninguna base de datos captura las reglas de
negocio, como el hecho de que al comparar las cuotas con las ventas reales,
debe utilizarse la fecha de envo del pedido, en lugar de las otras fechas para
pedidos (fecha de pedido, fecha de entrega, fecha programada, etc.).

Pgina 497 de 630

Obtener acceso directo a los orgenes de datos


En primer lugar, imagine que el usuario obtuviese acceso directo a los
orgenes de datos. En la siguiente ilustracin se muestra un ejemplo de una
consulta que se genera con una herramienta de ejemplo.

Hasta el momento, el usuario ha progresado considerablemente. Este


progreso incluye:
Buscar tablas de su inters entre una gran cantidad de tablas con
nombres cifrados.
Identificar las columnas que se deben utilizar para combinar las
tablas.
Seleccionar las columnas que contienen los detalles de inters, de
muchas tablas con gran cantidad de detalles orientados al
sistema. Por ejemplo, de las 11 columnas de las tablas que
almacenan detalles sobre categoras de producto, slo 2
columnas con nombre son relevantes para el usuario.
A continuacin, el usuario debe descubrir si se deben utilizar combinaciones
"externas" o "internas" y cmo agrupar los detalles para obtener los
agregados deseados.
Sin embargo, el usuario se enfrenta a tareas ms difciles. Por ejemplo,
cmo puede combinar datos procedentes de otro origen de datos? Aunque
una de las bases de datos admitiese consultas distribuidas, la mayora de los
usuarios no podra generar la consulta necesaria y puede que las
herramientas le sean de escasa utilidad para realizar esta tarea. El ejemplo
de cdigo muestra una forma de consultar datos externos.
SELECT Quotas.QuotaAmount, Quotas.EmployeeId,
FROM OPENROWSET('SQLOLEDB','seattle1';
'Sales';'MyPass',
'SELECT * FROM Forecasts.dbo.SalesQuota ) As Quotas
Pgina 498 de 630

Cuando se utilizan otros orgenes de datos, como los servicios Web, el


usuario se enfrenta a otro gran obstculo para determinar cmo se realizan
las llamadas remotas correctas y cmo se procesa el XML devuelto para
combinarlo con los dems datos.
Por ltimo, despus de realizar este trabajo para una consulta, es necesario
repetir gran parte del mismo para la siguiente consulta y todas las consultas
correctas.
Obtener acceso a los orgenes de datos mediante un UDM
Por contraste, en el siguiente diagrama se muestra un ejemplo de cmo vera
la generacin de una consulta un usuario que obtiene acceso a un modelo
UDM simple generado sobre estos orgenes de datos.

La interfaz de diseo que se muestra en este ejemplo est disponible en las


herramientas de desarrollo incluidas en Microsoft SQL Server 2005. Con
todo, se podra usar cualquier interfaz compatible con el modelo UDM,
incluidas herramientas cliente como Office Excel u Office Web Components
(OWC), o una de las muchas herramientas de anlisis y creacin de
informes.
La vista de rbol de la izquierda presenta el contenido del modelo UDM. En
este ejemplo, observe los siguientes aspectos:
Slo se muestran los elementos relevantes y orientados al
usuario. No se muestran las columnas del sistema, como los
identificadores de fila o la fecha de ltima modificacin.
Se utilizan nombres descriptivos, en lugar de las convenciones de
nomenclatura orientadas al programador que se utilizan en la
base de datos subyacente.
El modelo UDM tambin agrupa los atributos de cada entidad comercial en
"dimensiones" independientes, como Product o Employee. El cliente puede
consultar Product Color, Subcategory y Category en este ejemplo sin
necesidad de realizar explcitamente combinaciones entre las diversas tablas
implicadas.
Pgina 499 de 630

Las columnas que representan valores de transacciones, o medidas, se


presentan a continuacin como "medidas". Por ejemplo, los usuarios suelen
estar interesados en agregar columnas como importe de ventas o cuota de
venta. Este mtodo de presentacin de datos como "medidas" y
"dimensiones" se denomina modelado dimensional.
En el lado derecho del diagrama se muestran los elementos incluidos en la
consulta actual. En este caso, para solicitar el "importe de venta y cuota por
categora de producto", el usuario define la consulta con slo arrastrar los tres
elementos relevantes desde la vista de rbol hasta el lado derecho de la
interfaz de diseo. El usuario no tiene que especificar los detalles necesarios
para obtener acceso a los dos orgenes de datos distintos ni realizar las
combinaciones correctas entre las distintas tablas.
El modelo define el uso del formato predeterminado ms sencillo: por
ejemplo, el uso de smbolos de moneda. Tambin pueden definirse formatos
ms complejos, incluido el formato condicional, como mostrar un valor en rojo
si se encuentra por debajo de determinado umbral.
El mismo modelo admite diversas consultas. Por ejemplo, los resultados se
pueden desglosar por empleado con slo arrastrar un atributo de la
dimensin Employee.
Ampliar el modelo bsico
En el ejemplo anterior se demuestra cmo incluso un modelo UDM bsico
puede simplificar significativamente la exploracin bsica de datos. Sin
embargo, existen otros retos que tener en cuenta al proporcionar a los
usuarios acceso a datos. Por ejemplo:
Un modelo UDM que admite diversos tipos de consultas de
distintos usuarios podra alcanzar un gran tamao. Cmo se
puede asegurar que un usuario que trabaja en determinada tarea
no se vea inundado de informacin irrelevante?
Cmo se solucionan los requisitos de los usuarios corporativos,
que desean ver los informes en su lengua materna?
Cmo se simplifica la consulta de preguntas comunes sobre
aspectos temporales? Por ejemplo, puede que un usuario desee
mostrar ventas comparadas con el mismo perodo del ao
pasado.
En esta seccin se proporcionan algunas respuestas a estas preguntas para
mostrar cmo el modelo UDM admite la ampliacin del modelo bsico para
habilitar una exploracin de datos ms avanzada.
Jerarquas
Aunque la consolidacin de todos los atributos de una entidad en una
dimensin simplifica en gran medida el modelo al usuario, existen relaciones
entre los atributos que no se pueden expresar en una lista simple. En el caso
anterior, Category, SubCategory y SKU definen una de las jerarquas en las
que pueden organizarse los productos. El modelo UDM permite definir estas
jerarquas porque los usuarios a menudo desean realizar anlisis en funcin
de ellas. Por ejemplo, despus de ver los totales por Category, el usuario
podra obtener ms detalles en SubCategory y, desde ah, ms detalles en el
Pgina 500 de 630

nivel SKU inferior. Cada jerarqua es una secuencia de atributos que puede
utilizarse para simplificar los escenarios de aumento o reduccin de detalles
en las consultas.
El siguiente diagrama es un ejemplo de cmo podran aparecer jerarquas en
una interfaz que se muestra al usuario final. El modelo contiene varias
jerarquas diferentes en las que se pueden organizar los productos. La
consulta que se muestra a continuacin, responde a esta pregunta: mostrar
ventas y cuotas por categora de producto y desglosar en subcategoras.
Para definir la consulta, se arrastr la jerarqua Products By Category hasta
la cuadrcula. Para ver los datos detallados, el usuario hace doble clic en la
categora Bike para expandir las subcategoras.

El modelo UDM controla los detalles sobre cmo moverse por los niveles de
una jerarqua. Tambin controla detalles, como el hecho de que Quotas no
est disponible en el nivel SubCategory, slo en el nivel Category.
Un tipo especial de jerarqua es la jerarqua de elementos primarios y
secundarios, que contiene entidades que mantienen una relacin intrincada
entre s. En la siguiente ilustracin, la dimensin Employee posee una
jerarqua denominada "Employees By Organization Structure". El uso de esta
jerarqua simplifica el desplazamiento por la relacin de elementos primarios
y secundarios, y el anlisis de valores resumidos en cada nivel de la
organizacin. Por ejemplo, la cuota del vicepresidente de ventas, Charles
Marshall, incluye la suma de las cuotas de venta de todos los empleados,
adems de las cuotas de venta asociadas directamente a l.

Pgina 501 de 630

Categorizacin
Los usuarios aplican de forma natural categorizaciones a los datos. Por
ejemplo, un usuario podra decir "estos atributos son datos personales de los
empleados" o "este atributo es una direccin de correo electrnico". El
modelo UDM proporciona dos mecanismos destinados especficamente a
ofrecer un valor adicional con estas categorizaciones:
Las dimensiones, los atributos y dems objetos pueden colocarse
en categoras semnticamente significativas, lo que permite
utilizar el objeto de manera ms inteligente en una herramienta de
cliente. Por ejemplo, puede marcarse un atributo como direccin
URL. El informe que contiene este atributo podra luego permitir la
exploracin con los valores de la direccin URL. Se puede marcar
otro atributo como direccin de correo electrnico. En este caso,
un cliente de informes podra abrir automticamente un nuevo
mensaje de correo electrnico tras alguna accin del usuario.
Las medidas, las jerarquas y dems objetos se pueden agrupar
en carpetas que tengan sentido para el usuario. Esta agrupacin
permite que la herramienta de informes muestre grandes
cantidades de atributos de manera manejable. Por ejemplo, puede
crearse un grupo de atributos denominado "Customer
Demographics".
Tiempo
La informacin temporal se registra generalmente en el origen de datos
subyacente con los tipos de datos DateTime o Date. Aunque los usuarios con
conocimientos de SQL o XPath pueden extraer la informacin de fecha
necesaria para los datos totales por ao, les resultara difcil plantear una
consulta con preguntas en funcin de otros aspectos temporales, como
"Mostrar las ventas por da de la semana" o "Desglosar por ao fiscal,
comenzando el 1 de julio".
Sin embargo, el modelo UDM posee un conocimiento integrado del tiempo,
que incluye los siguientes calendarios:
Natural
Fiscal
De informes ("445", etc.)
De fabricacin (13 perodos)
ISO8601
Por lo tanto, el modelo puede incluir una dimensin de tiempo que
proporcione un amplio conjunto de atributos que definan detalles de cada da.
En la siguiente ilustracin se muestran los resultados cuando el usuario opta
por ver el importe y las cuotas de venta para el ao fiscal 2001. Para ello,
slo tiene que arrastrar el elemento relevante del rbol hasta el rea de filtro.
El modelo UDM sabe cmo traducir esa accin del usuario en un intervalo de
fechas y adems comprende la regla de negocio que indica que deben
incluirse en la consulta los pedidos enviados en estas fechas, no los
programados ni los hechos. El modelo UDM realiza implcitamente la
combinacin correcta.
Pgina 502 de 630

Adems, el modelo UDM proporciona soporte especfico para responder


preguntas comunes relativas al tiempo, incluidas las comparaciones entre
perodos, como "comparar este mes con el mismo mes del ao pasado".
Traducciones
En los ejemplos anteriores, el contenido del modelo y los datos se muestran
en un solo idioma. Sin embargo, los usuarios internacionales tienen que ver a
menudo los metadatos en su propio idioma.
Para solucionarlo, el modelo UDM ofrece la traduccin de metadatos en
todos los idiomas. Una aplicacin cliente que se conecta mediante una
configuracin regional especfica recibira los metadatos en el idioma
correspondiente.
El modelo tambin puede proporcionar traducciones de datos. Un atributo
puede asignarse a diferentes elementos en el origen de datos y ofrecer las
traducciones de estos elementos en distintos idiomas. Por ejemplo, si el
usuario se conecta mediante la misma herramienta utilizada en los ejemplos
anteriores, pero desde un equipo con configuracin regional en francs, el
modelo y los resultados de las consultas apareceran en francs, como se
muestra en la ilustracin.

Perspectivas
Aunque el modelo utilizado en este ejemplo es de tamao reducido, los
modelos reales pueden tener un mbito ms amplio, con decenas de
medidas y dimensiones, y cada dimensin con decenas o cientos de
atributos. Por lo general, los usuarios asignados a una tarea especfica no
necesitan ver el modelo completo. Para no abrumar a los usuarios con el
tamao total del modelo, es preciso poder definir una vista que muestre un
subconjunto del modelo.
El modelo UDM proporciona estas vistas, denominadas perspectivas. El
modelo UDM puede presentar varias perspectivas, cada una de las cules
slo presenta determinado subconjunto del modelo (medidas, dimensiones,
atributos, etc.) relevante para un grupo de usuarios concreto. Cada
perspectiva puede asociarse a las funciones de seguridad del rol que definen
los usuarios a los que se permite ver dicha perspectiva.
Pgina 503 de 630

Por ejemplo, puede definirse una perspectiva denominada "Seattle Inventory"


que slo incluya medidas del grupo de medida Inventory, oculte la jerarqua
"Warehouse By Location" y establezca como ciudad predeterminada
"Seattle".
Semntica de atributos
Un modelo UDM proporciona una semntica adicional para los atributos. Esta
semntica tiene por objeto simplificar el uso de la informacin. Estos son
algunos ejemplos de semntica que se pueden aplicar a los atributos:
Nombres en lugar de claves: Si se observa la base de datos
relacional, quiz no resulte evidente que EmployeeID es una clave
nica y sin significado generada por el sistema. Para resolver este
problema, el modelo UDM permite que el atributo Employee tenga
tanto una clave (el EmployeeID nico) como un nombre (por
ejemplo, una concatenacin de FirstName y LastName). De este
modo, una consulta del tipo "mostrar los empleados" distinguir
correctamente los empleados de igual nombre, mediante sus Id.
nicos, y mostrar al usuario el nombre significativo.
Ordenacin: Los valores de atributos a menudo deben mostrarse
con un orden fijo que no es un simple orden numrico o alfabtico.
El modelo UDM permite definir una ordenacin predeterminada
para administrar este requisito. Por ejemplo:
Los das de la semana se muestran como Domingo,
Lunes, Martes, etc.

Las prioridades se muestran en el orden Alta, Media y


Baja.

Discretizacin: En los atributos numricos, a veces no resulta til


mostrar los distintos valores del atributo. Por ejemplo, resulta
menos til ver las ventas para los distintos precios de un producto
(9,97$, 10,05$, 10,10$, etc.) que verlas por intervalo de precios
(<10$, 10$ - 15$, etc.). El modelo UDM permite discretizar los
atributos en estos intervalos mediante distintos criterios.
Indicadores clave de rendimiento (KPI)
Las empresas suelen definir indicadores clave de rendimiento (KPI), que son
medidas importantes para evaluar el estado de las mismas. El modelo UDM
permite crear estos indicadores KPI, para que las empresas puedan agrupar
y presentar datos de una manera ms comprensible. Un KPI puede tambin
utilizar un grfico para mostrar el estado de una tendencia, como un
semforo para indicar los valores bueno, normal o malo.
Cada KPI del modelo UDM define hasta cuatro expresiones para cada
medida de rendimiento:
Valor real
Valor objetivo

Pgina 504 de 630

Estado Valor normalizado comprendido entre -1 y 1 que


representa el estado real frente al objetivo (-1 es "muy malo" y 1
es "muy bueno").
Tendencia Valor normalizado entre -1 y 1 que representa la
tendencia a lo largo del tiempo (-1 es "empeora" y 1 es "mejora").
El uso de los KPI permite que las herramientas cliente presenten medidas
relacionadas de forma que el usuario las entienda inmediatamente. En la
siguiente ilustracin se muestra un ejemplo de cmo una herramienta cliente
puede mostrar tres KPI organizados en carpetas para mostrar.

Rendimiento
La exploracin interactiva de los usuarios precisa tiempos de respuesta
breves. Este requisito constituye un reto debido a la gran cantidad de
conjuntos de datos en los que se suele realizar la exploracin.
Para mejorar el rendimiento, el modelo UDM proporciona servicios de
almacenamiento en cach. Las cachs pueden almacenar los datos
detallados ledos del origen de datos subyacente y los valores de agregado
precalculados a partir de dichos datos. Sin embargo, el uso de estos valores
almacenados en la cach puede implicar cierto nivel de obsolescencia de los
datos. Los requisitos empresariales dictarn cmo debe utilizarse la
informacin actual. Puede que en algunos casos sea fundamental mostrar los
datos ms recientes, mientras que en otros casos sera completamente
aceptable mostrar datos con una antigedad de dos horas o dos das.
Para reflejar estas directivas que establecen la preponderancia de los datos,
el modelo UDM permite administrar explcitamente la cach (por ejemplo,
puede definirse una programacin que actualice la cach diariamente a las 2
a.m.) o administrarla de forma transparente mediante el almacenamiento en
cach automtico. El usuario puede especificar el grado de actualizacin que
deben tener los datos y el modelo UDM proporcionar la creacin y
administracin automtica de la cach para obtener el tiempo de respuesta
ms breve posible.
Anlisis
En las secciones anteriores se explicaba cmo el modelo UDM admite la
exploracin interactiva de datos. No obstante, simplemente hacer que la
informacin de los orgenes de datos subyacentes est disponible, aunque
sea de una forma ms fcil de comprender y utilizar, no cumple el objetivo de
incorporar la lgica de negocios en el modelo de los usuarios. Por lo tanto, el
Pgina 505 de 630

modelo UDM ofrece la posibilidad de definir clculos simples y complejos en


los datos.
Anlisis bsico
Por lo general, las consultas devuelven datos agregados. Por ejemplo, una
consulta tpica muestra las ventas por categora, en lugar de mostrar todos y
cada uno de los pedidos de ventas. No obstante, no existe nada en los datos
relacionales subyacentes que defina cmo se debe agregar una determinada
medida. Por ejemplo, el importe de ventas puede sumarse, pero el precio
unitario se debe promediar. El modelo UDM agrega esta semntica.
El mtodo de agregacin puede definirse mediante varios esquemas:
Puede utilizarse una funcin de agregacin simple, como Sum,
Count, Distinct Count, Max o Min.
La agregacin se puede definir como de suma parcial. Esto
significa que se utiliza una funcin simple, como Sum, para todas
las dimensiones excepto Time, en la que se utiliza Last Period.
Por ejemplo, aunque el nivel Inventory puede sumarse de Product
a Product Category, el nivel de inventario del mes no es la suma
de los niveles de inventario de cada da, sino el nivel de inventario
del ltimo da del mes.
La agregacin puede basarse en el tipo de cuenta, como Iincame
en lugar de Expense.
Puede personalizarse la agregacin para cumplir los requisitos
especiales.
Un modelo UDM tambin puede contener miembros calculados. Estos
miembros no tienen una asociacin directa con el origen de datos pero se
derivan de estos datos. Por ejemplo, puede definirse un miembro calculado,
como Variance, para calcular la diferencia entre Sales y Quota.
De forma similar, el modelo UDM puede definir conjuntos de entidades de
inters para el usuario; por ejemplo, los 10 clientes principales (por volumen
de ventas) o los productos ms importantes. Estos conjuntos pueden
utilizarse con facilidad para restringir el mbito de una consulta a un conjunto
especfico de entidades.
Anlisis avanzado
Algunas veces los clculos que necesitan los usuarios son bastante ms
complejos que el ejemplo "Variance" anterior. stos son algunos ejemplos de
clculos complejos:
Mostrar la media mvil de tres meses para cada perodo.
Comparar el crecimiento interanual de este perodo con el mismo
perodo del ao pasado.
Si las ventas se muestran en la moneda base, volver a convertir
las ventas a la moneda original utilizando la tasa de cambio media
diaria en el momento de la venta.
Calcular las ventas presupuestadas por categora para el prximo
ao como un aumento del 10% sobre este ao y asignar un
presupuesto para cada producto segn las ventas medias
relativas de los ltimos tres aos.
Pgina 506 de 630

El modelo UDM constituye un modelo completo para definir estos clculos y


se parece a una hoja de clculo multidimensional, en la que el valor de una
celda puede calcularse a partir de los valores de otras celdas. Sin embargo,
ni siquiera esta metfora puede describir adecuadamente la gran variedad de
clculos del modelo UDM. Una celda puede calcular su valor no slo segn el
valor que hay en otra celda, sino tambin segn el valor que suele haber en
dicha celda. Por lo tanto, se admiten ecuaciones simultneas; por ejemplo,
los beneficios se derivan de los ingresos menos los gastos, pero las
bonificaciones, que se incluyen en los gastos, se derivan de los beneficios.
Adems de proporcionar el eficaz lenguaje MDX (Expresiones
multidimensionales), que se ha diseado especficamente para crear estos
clculos, el modelo UDM tambin permite la integracin con Microsoft .NET.
Esta integracin permite escribir funciones y procedimientos almacenados en
cualquier lenguaje .NET comprobable, como C#.NET o Visual Basic .NET. La
funcin o el procedimiento almacenado puede invocarse luego en MDX para
su uso en clculos.
El cliente queda aislado de los detalles de estos clculos. En el siguiente
ejemplo, el usuario ve varias medidas calculadas en funcin de Sales para
los productos ms rentables vendidos en Estados Unidos.

Integracin con Data Mining


La posibilidad de mostrar los datos en un formato completo y comprensible
resulta de gran utilidad, pero los usuarios necesitan adems poder inferir
nueva informacin a partir de esos datos.
El modelo UDM contiene la tecnologa de minera de datos para permitir
minar los datos y utilizar los patrones descubiertos para la prediccin.

Pgina 507 de 630

Hacer que los datos se puedan procesar


Al ver datos con frecuencia, un usuario se plantea inmediatamente otras
preguntas o la necesidad de realizar alguna accin. Por ejemplo:
"Cules son las ventas detalladas que contribuyen a esa cifra?"
"La cuota es muy baja, necesito aumentarla".
"Parece extrao, voy a marcar el nmero con un comentario"
"Qu detalles de la promocin tenemos en el sitio Web?"
No es suficiente presentar los datos a los usuarios de una forma fcil de
comprender. Tambin es necesario facilitarles la realizacin de una accin
segn los datos que vean.
El modelo UDM admite esta caracterstica de dos formas:
Permite que se vuelvan a escribir cambios en los datos.
Habilita la asociacin de acciones a los datos.
Reescritura
El modelo UDM no es de slo lectura. En el modelo UDM tambin pueden
actualizarse los datos. En el caso de medidas, las actualizaciones pueden
almacenarse de forma independiente de los valores originales, como
diferencias de esos valores.
Adems, tambin es posible actualizar los nmeros de resumen. Por ejemplo,
considere un escenario de Budgeting. El importe presupuestado se puede
llegar a conocer hasta un nivel detallado (por equipo y cuenta), pero
inicialmente los valores slo se conocen en un nivel ms resumido (por
departamento y tipo de cuenta).
Acciones
El modelo UDM admite acciones como un vnculo entre los datos y una
accin realizada basada en los datos. Los principales tipos de acciones son:
Direccin URL: Ir a una direccin URL especfica. Este tipo de
accin admite que se dirija al usuario a una direccin URL para
que obtenga informacin adicional o a una aplicacin basada en
Web que le permita realizar una nueva tarea.
Por ejemplo:
Para un producto, ir al sitio Web de la compaa en
donde se describe el producto.

Para una combinacin de producto y almacn, ir a la


aplicacin de administracin de inventarios basada en
Web y convertir el producto y el almacn en parmetros
para permitir aumentar el nivel de inventario de
seguridad.

Informes: Ejecutar un informe especfico. Por ejemplo, para un


producto dado, la accin puede ejecutar un informe con
parmetros del producto que proporcione la descripcin del
producto y el estado de pedido actual.

Pgina 508 de 630

Obtencin de detalles: Obtener los detalles del nivel inferior de


detalle disponible. Por ejemplo, un usuario que observa las ventas
totales por producto y cliente puede obtener los detalles para ver
las transacciones de venta que contribuyen al total.
Las acciones pueden asociarse con regiones especficas de datos. Por
ejemplo, podra aplicarse una accin para explorar una pgina Web para
cada producto, pero la accin para ver las transacciones de transferencia de
inventario detalladas se aplicara a cada valor de Quantity por producto y
almacn.
Aunque las acciones se definan como parte del modelo UDM, es
responsabilidad de la aplicacin cliente recuperar los detalles de las acciones
aplicables, ofrecerlas al usuario e iniciar la accin necesaria.
Seguridad
Puede controlarse el acceso al modelo UDM. Las principales caractersticas
de seguridad son las siguientes:
El modelo UDM proporciona una seguridad basada en funciones.
Se pueden definir funciones, conceder permisos a las funciones e
incluir usuarios como miembros de cada funcin. Los permisos
actuales de un usuario son el conjunto de los permisos
concedidos a las funciones a las que pertenece el usuario. Los
permisos de una funcin pueden incluir "denegaciones seguras",
que quitan derechos con independencia de otras funciones a las
que pueda pertenecer el usuario.
Los permisos administrativos (por ejemplo, para cambiar un
modelo UDM) pueden concederse con independencia de los
permisos de acceso. Adems, se pueden definir permisos
independientes para la lectura de metadatos del objeto y para el
acceso de lectura y escritura a los datos.
Pueden protegerse los datos en niveles de granularidad hasta las
celdas individuales. Por ejemplo, se puede limitar la posibilidad de
que los usuarios vean las ventas del producto "Widget" al cliente
"ACME". La seguridad tambin puede ser condicional; por
ejemplo, puede permitirse que una funcin vea el salario total de
un departamento slo si ste cuenta con ms de cinco
empleados.
Los permisos pueden definir si deben usarse los totales visuales,
en cuyo caso los totales slo reflejan los miembros de nivel
inferior en los que tiene permisos el usuario. El acceso a celdas
tambin puede ser contingente, lo que significa que slo se
pueden ver las celdas derivadas de otras celdas si no tambin se
pueden ver las dems celdas. Por ejemplo, si los beneficios se
derivan de ingresos y gastos, los usuarios slo pueden ver los
beneficios de los productos para los que tienen permisos para ver
tanto los ingresos como los gastos.

Pgina 509 de 630

Reporting Services
Microsoft SQL Server 2005 Reporting Services es una solucin basada en
servidor que se utiliza para generar informes empresariales que extraen
contenido de una variedad de orgenes de datos relacionales y
multidimensionales, que publica informes que se pueden ver en diversos
formatos, y que administra la seguridad y las suscripciones de manera
centralizada. Los informes creados se pueden ver mediante una conexin
Web o como parte de una aplicacin de Microsoft Windows o un portal de
SharePoint.
Reporting Services incluye herramientas y asistentes grficos para crear y
publicar informes y modelos de informes; herramientas de administracin del
servidor de informes para administrar Reporting Services; e interfaces de
programacin de aplicaciones (API) para programar y extender el modelo de
objetos de Reporting Services.

Un servidor de informes se ejecuta como servicio de Windows y como


servicio Web. Los servicios funcionan juntos y admiten diferentes aspectos de
la funcionalidad del servidor de informes:
El servicio de Windows del servidor de informes ejecuta la
inicializacin, el cifrado reversible y todo el procesamiento de
programacin y entrega. Realiza un procesamiento completo para
los informes que ejecuta en una programacin (en especial, crea
instantneas de informes y ejecuta informes de suscripciones).
Debido a que realiza todas las operaciones de cifrado, el servicio
de Windows del servidor de informes debe estar en ejecucin
cuando se especifiquen o utilicen valores cifrados. La
especificacin de credenciales almacenadas, la ejecucin de un
informe que utiliza credenciales almacenadas y la publicacin de
un informe en un servidor de informes (informacin del origen de
datos cifrada) son todas operaciones que requieren el servicio de
Windows del servidor de informes.
Pgina 510 de 630

El servicio Web del servidor de informes realiza un procesamiento


completo para los informes que se ejecutan a peticin. Tambin
proporciona la interfaz de programacin principal para
aplicaciones que se integran con un servidor de informes. El
Administrador de informes, el Generador de informes y el SQL
Server Management Studio son ejemplos de aplicaciones que
requieren el servicio Web del servidor de informes.
En la mayora de los casos, desear ejecutar los servicios en forma conjunta,
de modo que pueda utilizar toda la funcionalidad proporcionada en Reporting
Services. Sin embargo, si el modo de implementacin que est utilizando
tiene muy pocos requisitos, puede ejecutar slo el servicio de Windows del
servidor de informes si todo el procesamiento de informes est configurado
como operaciones programadas.
Para utilizar cualquiera de los servicios, ejecute la herramienta de
configuracin de superficie de SQL Server y seleccione la opcin
Configuracin de superficie para caractersticas.
No se puede desactivar completamente el servicio Servidor de informes de
Windows, pues ofrece funciones de inicializacin y cifrado necesarias para
las operaciones del servidor. Sin embargo, es posible desactivar el
procesamiento programado y de eventos.
El servicio Servidor de informes de Windows se registra y configura durante
la instalacin. Se ejecuta en cualquier cuenta que se especifique. Se
recomienda utilizar una cuenta de usuario de dominio con privilegios mnimos
con permiso para iniciar sesin en la red o en Servicio de red, aunque se
puede utilizar una cuenta local si la base de datos del servidor de informes se
ejecuta en el mismo equipo que el servidor de informes. El servicio Web del
servidor de informes se ejecuta en la identidad de ASP.NET de forma
predeterminada. Si modifica la configuracin de la cuenta de servicio,
asegrese de utilizar la herramienta de configuracin de Reporting Services
para que los valores dependientes se actualicen con los nuevos.
Requisitos del servicio del Agente SQL Server
El servicio de Windows del servidor de informes requiere el servicio del
Agente SQL Server. El servicio del Agente SQL Server se debe ejecutar con
una cuenta de dominio si el servidor de informes est configurado para
conectarse a SQL Server utilizando una cuenta de dominio y autenticacin de
Windows (en lugar de un inicio de sesin de SQL Server o una Cuenta de
servicio). Cuando el servidor de informes se ejecuta como un usuario de
dominio, crea trabajos del Agente SQL Server cuyo propietario es esa cuenta
de dominio. Para que el Agente SQL Server pueda enrutar una tarea hacia el
Procesador de entrega y programacin, es preciso que el Agente SQL Server
tenga permisos para obtener acceso a la informacin de los trabajos
propiedad de una cuenta de dominio. Si el Agente SQL Server se ejecuta con
una cuenta de usuario local, el servicio no tendr permiso de acceso a la
informacin sobre la cuenta de dominio y, por lo tanto, no se podr realizar ni
la suscripcin ni la entrega de informes.

Pgina 511 de 630

Notification Services
Microsoft SQL Server Notification Services es una plataforma para desarrollar
e implementar aplicaciones que generen y enven notificaciones a los
suscriptores. Las notificaciones generadas son mensajes personalizados y
oportunos que pueden enviarse a una amplia gama de dispositivos y que
reflejan las preferencias del suscriptor.
Los suscriptores crean suscripciones para las aplicaciones de notificacin.
Una suscripcin es un inters manifiesto en un tipo determinado de evento.
Por ejemplo, las suscripciones pueden expresar preferencias como sta:
"avisarme cuando el precio de los valores alcance los $70,00" o "avisarme
cuando se actualice el documento de estrategia que est redactando mi
equipo".
Una notificacin puede generarse y enviarse al suscriptor tan pronto como se
produzca un evento que la desencadene. O bien, puede generarse y enviarse
segn una programacin predeterminada especificada por el suscriptor.
Las notificaciones pueden enviarse a una gran variedad de dispositivos. Por
ejemplo, una notificacin puede enviarse al telfono mvil de un suscriptor, a
su asistente digital personal (PDA), a Microsoft Windows Messenger o a su
cuenta de correo electrnico. Dado que el suscriptor suele llevar consigo
estos dispositivos, las notificaciones son el medio ideal para enviar
informacin importante.

Las aplicaciones de notificacin son valiosas por numerosas razones, entre


las que se incluyen:
Permiten enviar informacin importante a clientes, socios y
empleados. Las notificaciones pueden contener vnculos a un sitio
Web para obtener ms informacin o para confirmar la recepcin
de la informacin.
Mejoran y fortalecen las relaciones con los clientes, ya que
permiten ofrecerles servicios ms personalizados en el momento
oportuno.

Pgina 512 de 630

Ayudan a incrementar los ingresos, ya que facilitan el


establecimiento de relaciones comerciales con los clientes.
Ayudan a aumentar la productividad de los empleados, ya que les
proporcionan la informacin que necesitan en el momento y lugar
oportunos.
Permiten la comunicacin con suscriptores mviles a travs de
una gran variedad de dispositivos.
Gracias a Notification Services, podr crear e implementar
aplicaciones con rapidez, adems de escalarlas para que admitan
millones de suscriptores si es preciso. Notification Services consta
de:
Un marco de programacin de Notification Services sencillo a la
vez que eficaz, que permite crear e implementar rpidamente
aplicaciones de notificaciones. Permite desarrollar aplicaciones
mediante XML u objetos de administracin de Notification Services
(NMO).
Un motor confiable, de alto rendimiento y escalable que ejecuta
las aplicaciones de notificaciones. El motor de Notification
Services se basa en Microsoft .NET Framework y Microsoft SQL
Server 2005.
Arquitectura de Notification Services
Describe la arquitectura de la recopilacin de eventos y suscripciones, la
generacin de notificaciones, as como el formato y la distribucin de las
mismas.
Arquitectura de Administracin de Suscripciones
Para enviar notificaciones, una aplicacin de Notification Services
debe tener informacin acerca de los suscriptores, informacin de
inters para los suscriptores e informacin sobre adnde enviar la
informacin. La administracin de suscripciones es el proceso de
administrar los datos de suscriptor, de suscripcin y de dispositivo de
suscriptor.
Interfaces de administracin de suscripciones
La administracin de suscripciones se realiza mediante interfaces
personalizadas de administracin de suscripciones. Estas interfaces,
que pueden ser aplicaciones Web, aplicaciones de Microsoft Windows,
aplicaciones de consola o procedimientos almacenados, administran
los datos de suscriptor, de dispositivo de suscriptor y de suscripcin en
las bases de datos de la instancia y la aplicacin.
Notification Services proporciona objetos y vistas de administracin de
suscripciones para simplificar el proceso de desarrollo de interfaces.
En la ilustracin siguiente se muestra el modo en que una interfaz de
administracin de suscripciones utiliza los objetos de administracin de
suscripciones para comunicarse con Notification Services.

Pgina 513 de 630

Notification Services almacena los datos del suscriptor y del dispositivo


del suscriptor junto con los datos de la instancia de Notification
Services y, adems, almacena los datos de la suscripcin con los de la
aplicacin. Este mtodo de almacenamiento permite a las aplicaciones
compartir los datos de suscriptor entre aplicaciones y, al mismo
tiempo, almacenar las suscripciones de cada aplicacin. Esto es
apropiado para muchas aplicaciones, debido a que reduce los datos
redundantes y facilita el mantenimiento de los datos de suscriptores.
Sin embargo, si no desea compartir los datos de suscriptor entre las
aplicaciones, puede colocar cada aplicacin en su propia instancia de
Notification Services.
Cuando se ejecuta una aplicacin de Notification Services, la
aplicacin suele utilizar los datos de suscripcin para generar
notificaciones y, a continuacin, utiliza los datos de suscriptor y
dispositivo para aplicar formato a las notificaciones y distribuirlas.
Importante:
Cuando una aplicacin genera notificaciones, cada una de ellas debe incluir
informacin acerca del dispositivo de suscriptor de destino. El dispositivo de
suscriptor para la notificacin debe coincidir con el dispositivo de suscriptor
que se haya configurado para el suscriptor. De lo contrario, no se entregar la
notificacin.
Vistas de administracin de suscripciones
Al crear una instancia de Notification Services, Notification Services
agrega tres vistas para administrar el suscriptor, el dispositivo del
suscriptor y los datos de suscripcin:
Utilice NSSubscriberView, que encontrar en la base de datos y
el esquema de la instancia, para agregar, modificar y eliminar
datos del suscriptor.
Utilice NSSubscriberDeviceView, que encontrar en la base de
datos y el esquema de la instancia, para agregar, modificar y
eliminar dispositivos del suscriptor.
Utilice NSSubscriptionClassNameView, que encontrar en la base
de datos y el esquema de la instancia, para ver, agregar, modificar
y eliminar suscripciones basadas en parmetros controladas por
Pgina 514 de 630

eventos. Esta vista no permite administrar suscripciones basadas


en condiciones ni suscripciones programadas.
Arquitectura de la Recopilacin de Eventos
La recopilacin de eventos es el proceso de recopilar datos de eventos
de uno o varios orgenes, como, por ejemplo, archivos XML,
aplicaciones o bases de datos, y enviar esta informacin a una
aplicacin de notificaciones. Los proveedores de eventos se encargan
de ello.
Cada aplicacin utiliza uno o varios proveedores de eventos para
recopilar eventos. Cada proveedor enva datos a la aplicacin
mediante una de las tres API de eventos: una API de objetos de
evento, una API de XML o una API de SQL Server. En la siguiente
ilustracin se muestra una vista de alto nivel sobre el funcionamiento
de estas API.

La API de objetos de evento utiliza los objetos Event y


EventCollector para enviar eventos individuales. Utilizando los
nombres de los campos de una tabla de eventos, una aplicacin
enva un objeto Event al recopilador de eventos, que, a
continuacin, escribe los datos en la tabla de eventos.
La API de XML proporciona una forma de carga masiva de datos
XML. El proveedor de eventos XML recopila un documento o
secuencia XML de un origen de eventos y enva los datos a XML
EventLoader, que, a continuacin, escribe los eventos en la tabla
de eventos.
La API de SQL Server utiliza procedimientos almacenados para
cargar datos de eventos de objetos de base de datos. Dos formas
habituales de utilizar el proveedor de eventos de SQL Server son
invocar al proveedor mediante un procedimiento almacenado y
ejecutar una consulta segn una programacin. El proveedor de
eventos recibe un conjunto de resultados y lo escribe en la tabla
de eventos utilizando los procedimientos almacenados de la API.
Vistas de clase de evento
Al crear una instancia de Notification Services, Notification
Services agrega una vista que tiene el mismo nombre que la clase
de evento. Esta vista es el origen de eventos para las consultas
de generacin de notificaciones.
Pgina 515 de 630

Microsoft SQL Server 2005 Notification Services tambin admite la


insercin de eventos en esta vista. Cuando se insertan eventos en
esta vista, Notification Services crea y cierra un lote de eventos
para cada instruccin de insercin.
Proveedores de eventos estndar y personalizados
Los programadores de aplicaciones de Notification Services
pueden escribir sus propios proveedores de eventos
personalizados mediante cualquiera de las API mencionadas
anteriormente, o bien utilizar uno de los proveedores de eventos
estndar suministrados con Notification Services. Los proveedores
de eventos estndar pueden obtener datos XML de una carpeta
de inspeccin y realizar consultas a las bases de datos de SQL
Server y a los cubos de Analysis Services.
Los proveedores de eventos personalizados incluyen funciones no
disponibles en otros proveedores de eventos estndar. Por
ejemplo, quizs desee recopilar datos de un archivo delimitado
por comas de un tablero de cotizaciones. Con la API de
Notification Services, el programador puede crear un proveedor de
eventos con esta funcionalidad.
Proveedores de eventos alojados y no alojados
Los proveedores de eventos pueden estar alojados o no alojados.
Los proveedores de eventos alojados se ejecutan en Notification
Services. Pueden ejecutarse de forma continua o invocarse segn
una programacin definida en la definicin de la aplicacin. Estos
proveedores de eventos se ejecutan en un componente de
Notification Services denominado host del proveedor de eventos.
El host del proveedor de eventos se ejecuta con la misma
programacin que el componente generador especificado en la
definicin de la aplicacin.
Los proveedores de eventos no alojados se ejecutan como
aplicaciones externas y envan eventos segn una programacin
propia. Por ejemplo, un proveedor de eventos alojado en los
Servicios de Internet Information Server (IIS) y que expone un
mtodo Web para enviar eventos es un proveedor de eventos no
alojado.
Escritura de eventos por lotes
Los proveedores de eventos escriben eventos por lotes. La
escritura de eventos por lotes permite que el generador combine
el conjunto actual de suscripciones con todos los eventos de un
lote de eventos a la vez. Este procesamiento orientado a lotes
mejora el rendimiento de la aplicacin.
Arquitectura de Procesamiento de Suscripciones
Pgina 516 de 630

Una vez obtenidos los eventos, Notification Services ya puede


procesar las suscripciones y generar notificaciones. La funcin del
generador es evaluar las suscripciones segn los eventos.
Para generar notificaciones, el programador de la aplicacin crea una
o varias reglas para la aplicacin. Estas reglas se escriben como
consultas Transact-SQL que especifican cmo se relacionan los
eventos y las suscripciones, as como cualquier otra condicin que
deba cumplirse para generar una notificacin.
En una aplicacin sencilla, cuando el generador activa una regla, la
aplicacin evala todas las suscripciones disponibles y las compara
con el lote actual de eventos visible desde una vista de eventos.
Cuando un evento coincide con una suscripcin, el generador de
notificaciones crea una notificacin. Esta notificacin contiene datos
acerca del evento. Tambin hace referencia a datos del suscriptor, del
dispositivo del suscriptor y, en ocasiones, a la configuracin local del
suscriptor, adems de otra informacin necesaria para la distribucin.

La notificacin no se enva nada ms crearla. En su lugar, el


generador escribe la notificacin en una tabla de notificaciones interna.
Cuando un lote de notificaciones est preparado, el distribuidor aplica
formato a las notificaciones y las distribuye.
Si una aplicacin admite suscripciones programadas, cuando el
generador procesa estas suscripciones, slo ve las que deben
evaluarse. Por ejemplo, si el generador se ejecuta cada 15 minutos, a
las 8:00 a.m. el generador evala todas las suscripciones
programadas entre las 7:45 a.m. y las 8:00 a.m.
Si una aplicacin utiliza datos histricos, podr almacenarlos junto con
informacin del evento y de suscripcin en una tabla complementaria
denominada crnica y utilizar estos datos para generar notificaciones.

Pgina 517 de 630

El generador se ejecuta segn una programacin definida por el


perodo de tiempo en el archivo de definicin de la aplicacin. Este
perodo determina la frecuencia con la que el generador activa reglas.
Un perodo de cuanto corto provoca que el generador se ejecute con
ms frecuencia y consuma ms recursos del sistema. Un intervalo de
cuanto largo provoca un retardo mayor entre la llegada de los eventos
y la generacin de las notificaciones.
Tipos de regla
Las reglas definidas en la aplicacin controlan el funcionamiento
del generador. Puede crear los siguientes tipos de reglas:
o Las reglas de crnica de eventos almacenan o actualizan
el historial de eventos en tablas de crnica definidas por el
programador de la aplicacin. Cada vez que se ejecuta el
generador, activa este tipo de regla en primer lugar.
o Las reglas de evento generan notificaciones para las
suscripciones por eventos. Este tipo de regla se ejecuta
despus de la regla de crnica de eventos si se encuentra
disponible un lote de eventos asociado. Este tipo de regla
tambin puede administrar tablas de crnica.
o Las reglas programadas generan notificaciones de
suscripciones programadas. Este tipo de regla se ejecuta
despus de la regla de crnica de eventos para cualquier
suscripcin relacionada que deba procesarse. Este tipo de
regla tambin puede administrar tablas de crnica.
Nota: Las crnicas de eventos son tablas de eventos
complementarias de la base de datos de aplicacin. Puede
utilizar estas tablas para almacenar datos de eventos para su
uso por parte de suscripciones programadas o para conservar
un historial de eventos.
Tipos de accin de regla
Las reglas de evento y programadas especifican la accin que
debe ejecutarse al desencadenarse la regla. Cada accin es
una consulta Transact-SQL que define una unidad de trabajo
que debe realizar el generador. Estas consultas pueden generar
notificaciones, pero tambin pueden realizar otras tareas como
mantener los datos de la crnica.
Las reglas de evento y programadas utilizan tanto acciones
simples basadas en parmetros como acciones de condicin
ms flexibles:
Las acciones simples son consultas Transact-SQL que
definen por completo la consulta de generacin de
notificacin, incluidas las clusulas WHERE. Las acciones
simples obtienen las expresiones de la clusula WHERE de
los datos de suscripcin y los datos de evento. Por ejemplo,
una aplicacin meteorolgica puede permitir a los
suscriptores que especifiquen una ciudad para generar las
Pgina 518 de 630

notificaciones meteorolgicas. En este caso, la consulta de


accin simple utilizara una clusula WHERE, como WHERE
subscription.city = event.city, que combina los
datos de evento y de suscripcin en los nombres de ciudad.
Cuando una regla utiliza una accin simple, los suscriptores
proporcionan parmetros para la consulta tales como el
nombre de la ciudad.
Las acciones de condicin permiten a los suscriptores
definir por completo las condiciones para la bsqueda de la
consulta. Por ejemplo, podra exponer el esquema de datos
de eventos en la interfaz de administracin de suscripciones
y permitir que los suscriptores crearan sus propias
condiciones de bsqueda a partir de estos datos, como
WHERE
event.State
=
Washington
AND
event.LowTemperature
<
0. La interfaz de
administracin de suscripciones simplifica la escritura de las
condiciones de bsqueda hasta tal punto que basta con
seleccionar columnas y operadores de los cuadros de lista y
especificar los valores en los cuadros de texto.

Las acciones simples generan un conjunto limitado de


condiciones de bsqueda que debe evaluar el generador, por lo
que su rendimiento suele ser mejor que el de las acciones de
condicin. Las acciones de condicin, por su parte, son ms
eficaces, pero deben evaluar ms condiciones de bsqueda
para la regla de evento o regla programada.

Pgina 519 de 630

Integration Services
Integration Services es una plataforma para generar integracin de datos de
alto rendimiento y soluciones de flujo de trabajo, incluyendo operaciones de
extraccin, transformacin y carga (ETL) para almacn de datos.
Integration Services incluye herramientas grficas y asistentes para generar y
depurar paquetes, tareas para realizar funciones de flujo de datos tales como
operaciones de FTP, ejecucin de instrucciones SQL y mensajera de correo
electrnico, orgenes y destinos de datos para extraer y cargar datos,
transformaciones para limpiar, agregar, mezclar y copiar datos, un servicio de
administracin, el servicio Integration Services para administrar paquetes de
Integration Services e interfaces de programacin de aplicaciones (API) para
programar el modelo de objeto de Integration Services.
Esta seccin proporciona informacin general sobre Integration Services,
incluida la informacin sobre los usos normales de Integration Services, la
arquitectura de Integration Services y las herramientas de Integration
Services para generar y administrar las soluciones de integracin de datos

Arquitectura de Integration Services


Microsoft SQL Server 2005 Integration Services (SSIS) se compone de
cuatro partes clave: el servicio Integration Services, el modelo de
objetos de Integration Services, el tiempo de ejecucin, los ejecutables
de tiempo de ejecucin de Integration Services, y la tarea Flujo de
datos que encapsula el motor de flujo de datos y los componentes de
flujo de datos.
En el diagrama siguiente se muestra la relacin entre las partes.

Pgina 520 de 630

Los programadores que obtienen acceso al modelo de objetos de


Integration Services desde clientes personalizados o escriben tareas o
transformaciones personalizadas pueden escribir cdigo mediante
cualquier lenguaje compatible con Common Language Runtime (CLR).

Servicio Integration Services


El servicio Integration Services, disponible en SQL Server
Management Studio, supervisa la ejecucin de paquetes de Integration
Services y administra el almacenamiento de paquetes.
Modelo de objetos de Integration Services
El modelo de objetos de Integration Services incluye interfaces de
programacin de aplicaciones (API) administradas para obtener
acceso a las herramientas, utilidades de lnea de comandos y
aplicaciones personalizadas de Integration Services.

Pgina 521 de 630

Tiempo de ejecucin de Integration Services


El tiempo de ejecucin de Integration Services guarda el diseo de
paquetes, ejecuta paquetes y admite registros, puntos de interrupcin,
configuracin, conexiones y transacciones. Los ejecutables de tiempo
de ejecucin de Integration Services son el paquete, los contenedores,
las tareas y los controladores de eventos que incluye Integration
Services, as como las tareas personalizadas.
Flujo de datos de Integration Services
La tarea Flujo de datos encapsula el motor de flujo de datos. El motor
de flujo de datos proporciona los buffers en memoria que mueven
datos desde el origen hasta el destino y llama los orgenes que extraen
datos de archivos y bases de datos relacionales. El motor de flujo de
datos tambin administra las transformaciones que modifican datos,
as como los destinos que cargan datos o ponen datos a disposicin
de otros procesos. Los componentes de flujo de datos de Integration
Services son los orgenes, transformaciones y destinos que incluye
Integration
Services. Tambin
puede
incluir
componentes
personalizados en un flujo de datos.

Pgina 522 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 3
Administracin Avanzada

2007

Pgina 523 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 524 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 525 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 526 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 527 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 528 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 529 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 530 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 531 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 532 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 533 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 534 de 630

Unidad 3: Administracin Avanzada


Objetivos
Dar una visin acerca de la Administracin Avanzada del
SQL Server 2005., detallando el concepto de los
siguientes puntos:
1. Monitoreo
2. Activity Monitor
3. Management views
4. MBSA y Service packs
5. DB Engine Tuning Advisor
6. Plan de Ejecucin
7. Estadsticas

Pgina 535 de 630

1. Monitoreo
El objetivo del monitoreo es corregir problemas potenciales antes de que
afecten a los usuarios.
Existen varios tipos de controles que pueden realizarse en SQL Server 2005.
A continuacin se detallan algunos tipos:

2. Activity Monitor
El componente Activity Monitor de Microsoft SQL Server Management Studio
se puede usar para obtener informacin sobre las conexiones de los usuarios
al Database Engine y los bloqueos que mantienen. El Activity Monitor tiene
tres pginas.:
La pgina Informacin del Proceso que contiene informacin
acerca de las conexiones.
En la pgina Bloqueos por Proceso en donde se ordenan los
bloqueos por conexin.
En la pgina Bloqueos por Objeto en donde se ordenan los
bloqueos por el nombre del objeto.
Pueden filtrarse los registros con el fin de reducir la cantidad de informacin
mostrada.
Utilice el Activity Monitor para analizar problemas de bloqueo y para terminar
un proceso en interbloqueo o que no responde.
Para ver el Activity Monitor, el usuario necesita:
Permiso VIEW SERVER STATE en un servidor SQL Server 2005.
Permiso SELECT en las tablas sysprocesses y syslocks, en la
base de datos master, en un servidor SQL Server 2000.
Permiso para ver estas tablas, el cual se concede de forma
predeterminada al rol de base de datos PUBLIC.
De forma predeterminada, los miembros de las funciones fijas de base de
datos sysadmin y processadmin tienen el permiso KILL; este permiso no se
puede transferir.
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
Cuando se inicia el servicio del Agente Microsoft SQL Server, se crea una
nueva sesin y la tabla sysjobactivity de la base de datos msdb se llena
con todos los trabajos definidos que existen. En esta tabla se registra la
actividad y el estado actuales de los trabajos. Puede utilizar el Activity Monitor
del Agente SQL Server para ver el estado actual de los trabajos. Si el servicio
del Agente SQL Server finaliza inesperadamente, puede consultar la tabla
sysjobactivity para ver qu trabajos se estaban ejecutando cuando finaliz
el servicio.

Pgina 536 de 630

Para ver la actividad de los trabajos


a. En el Explorador de objetos, conctese a una instancia
del SQL Server Database Engine (Motor de base de
datos de SQL Server) y, despus, expndala.
b. Expanda Agente SQL Server.
c. Haga clic con el botn secundario en Monitor de
actividad de trabajo y haga clic en Ver actividad de
trabajo.
d. En el Activity Monitor de trabajo, puede ver los detalles
de cada trabajo definido para este servidor.
e. Haga clic con el botn secundario en un trabajo para
iniciarlo, detenerlo, habilitarlo o deshabilitarlo, actualizar
el estado que se muestra en el Activity Monitor de
trabajo, eliminarlo o ver su historial o sus propiedades.
f. Para iniciar, detener, habilitar o deshabilitar, o actualizar
varios trabajos, seleccione varias filas en el Monitor de
actividad de trabajo y haga clic con el botn secundario
en la seleccin.
g. Para actualizar el Activity Monitor de trabajo, haga clic en
Actualizar. Para ver menos filas, haga clic en Filtro y
escriba los parmetros del filtro.

Supervisar la actividad de trabajo


Puede supervisar la actividad actual de todos los trabajos definidos de una
instancia de SQL Server 2005 mediante el Activity Monitor de trabajo del
Agente SQL Server.
Sesiones del Agente SQL Server
El Agente SQL Server crea una sesin cada vez que se inicia el servicio. Al
crear una sesin, la tabla sysjobactivity de la base de datos msdb se
rellena con todos los trabajos definidos existentes. Esta tabla mantiene la
ltima actividad para los trabajos cuando se reinicia el Agente SQL Server.
Cada sesin registra la actividad de trabajo normal del Agente SQL Server
desde el inicio del trabajo hasta que termina. La informacin acerca de estas
sesiones se almacena en la tabla syssessions de la base de datos msdb.

Pgina 537 de 630

Activity Monitor de trabajo


El Activity Monitor de trabajo permite ver la tabla sysjobactivity mediante
SQL Server Management Studio. Puede ver todos los trabajos del servidor, o
bien puede definir filtros para limitar el nmero de trabajos mostrados.
Tambin puede ordenar la informacin sobre los trabajos haciendo clic en un
encabezado de columna de la cuadrcula Actividad de trabajo del agente.
Por ejemplo, al seleccionar el encabezado de columna ltima ejecucin,
puede ver los trabajos en el orden en que se ejecutaron por ltima vez. Al
volver a hacer clic en el encabezado de columna, el orden de los trabajos
cambia entre ascendente y descendente basndose en la fecha en que se
ejecutaron por ltima vez.
El Activity Monitor de trabajo le permite realizar las siguientes tareas:
Iniciar y detener trabajos.
Ver las propiedades del trabajo.
Ver el historial de un determinado trabajo.
Actualizar la informacin de la cuadrcula Actividad de trabajo
del agente manualmente o establecer un intervalo de
actualizacin automtico haciendo clic en Ver configuracin de
actualizacin.
Utilice el Activity Monitor de trabajo cuando desee localizar los trabajos que
estn programados para su ejecucin, el ltimo resultado de los trabajos que
se han ejecutado durante la sesin actual y localizar los trabajos que se estn
ejecutando actualmente o que estn inactivos. Si el servicio del Agente SQL
Server tiene un error inesperado, puede determinar los trabajos que se
estaban ejecutando buscando en la sesin anterior del Activity Monitor de
trabajo.
Para abrir el Activity Monitor de trabajo, expanda Agente SQL Server en el
Explorador de objetos de Management Studio, haga clic con el botn
secundario en Activity Monitor de trabajo y haga clic en Ver actividad de
trabajo.
Tambin puede ver la actividad de trabajo de la sesin actual mediante el
procedimiento almacenado sp_help_jobactivity.

3. Management views
Microsoft SQL Server Management Studio, nuevo en Microsoft SQL Server
2005, es un entorno integrado para obtener acceso a todos los componentes
de SQL Server, configurarlos, administrarlos y desarrollarlos. SQL Server
Management Studio combina un amplio grupo de herramientas grficas con
una serie de Editores de Secuencia de comandos para ofrecer acceso a SQL
Server a programadores y administradores de todos los niveles de
especializacin.
SQL Server Management Studio combina las caractersticas del
Administrador corporativo, el Analizador de consultas y Analysis Manager,
herramientas incluidas en versiones anteriores de SQL Server, en un nico
entorno. Adems, SQL Server Management Studio funciona con todos los
componentes de SQL Server, como Reporting Services, Integration Services,
Pgina 538 de 630

SQL Server Mobile y Notification Services. Los programadores obtienen una


experiencia familiar y los administradores de bases de datos una nica
herramienta completa que combina herramientas grficas fciles de usar con
funciones de secuencias de comandos enriquecidas.
Para obtener acceso a SQL Server Management Studio
En la barra de tareas, haga clic en Inicio, seleccione Todos los
programas, Microsoft SQL Server 2005 y, a continuacin, haga
clic en SQL Server Management Studio.
Nota:
De forma predeterminada, SQL Server Management Studio se instala en
C:\Program
Files\Microsoft
SQL
erver\90\Tools\Binn\VSShell\Common7\IDE.
Nota:
SQL Server Management Studio presenta las fechas con el formato
seleccionado en Configuracin regional y de idioma de Microsoft Windows
en el momento de iniciar SQL Server Management Studio. Reinicie SQL
Server Management Studio para reflejar una configuracin nueva.
Con SQL Server Management Studio, el programador y el administrador de
bases de datos pueden desarrollar o administrar cualquier componente del
Database Engine (Motor de base de datos).
Caracteristicas del SQL Server Management Studio
SQL Server Management Studio incluye las siguientes caractersticas
generales:
Compatibilidad con la mayora de las tareas administrativas de
SQL Server 2005 y SQL Server 2000.
Un entorno nico integrado para administracin y edicin de SQL
Server Database Engine (Motor de base de datos de SQL Server).
Nuevos cuadros de dilogo de administracin para la
administracin de objetos de SQL Server Database Engine (Motor
de base de datos de SQL Server), Analysis Services, Reporting
Services, Notification Services y SQL Server Mobile, lo que
permite ejecutar las acciones inmediatamente, enviarlas a un
editor de cdigo o escribirlas en secuencias de comandos para
ejecutarlas posteriormente.
Cuadros de dilogo no modales y de tamao variable que
permiten obtener acceso a varias herramientas mientras un
cuadro de dilogo est abierto.
Un cuadro de dilogo comn de programacin que permite
realizar acciones de los cuadros de dilogo de administracin en
otro momento.
Exportacin e importacin del registro de servidor de SQL Server
Management Studio desde un entorno de Management Studio a
otro.
Guardado o impresin de archivos de plan de presentacin XML o
de interbloqueo generados por el Analizador de SQL Server,
revisin posterior o envo a los administradores para su anlisis.
Un nuevo cuadro de mensaje de error e informativo que presenta
mucha ms informacin, permite enviar a Microsoft un comentario
Pgina 539 de 630

sobre los mensajes, copiar mensajes en el Portapapeles y enviar


fcilmente los mensajes por correo electrnico al equipo de
soporte.
Un explorador Web integrado para una rpida exploracin de
MSDN o la Ayuda en pantalla.
Integracin de la Ayuda de comunidades en lnea.
Un nuevo monitor de actividad con filtro y actualizacin
automtica.
Interfaces de Correo electrnico de base de datos integradas.
Nuevas funciones de las secuencias de comandos
El Editor de cdigo de SQL Server Management Studio contiene editores de
secuencias de comandos integrados para crear secuencias de comandos
Transact-SQL, MDX, DMX, XML/A y XML. Ofrece las caractersticas
siguientes:
Ayuda dinmica para el acceso inmediato a la informacin
relevante mientras se trabaja.
Un amplio conjunto de plantillas y la posibilidad de crear plantillas
personalizadas.
Compatibilidad con la escritura y modificacin de consultas o
secuencias de comandos sin necesidad de conexin a un
servidor.
Compatibilidad con secuencias de comandos para consultas y
secuencias de comandos SQLCMD.
Una nueva interfaz para ver resultados XML.
Control de cdigo fuente integrado para proyectos de secuencias
de comandos y soluciones compatible con el almacenamiento y la
conservacin de copias de secuencias de comandos a medida
que evolucionan.
Compatibilidad de Microsoft IntelliSense con instrucciones MDX.
Caractersticas del Explorador de objetos
El Explorador de objetos de SQL Server Management Studio es una
herramienta integrada para ver y administrar objetos en todo tipo de
servidores. Ofrece las caractersticas siguientes:
Filtrado por todo o parte de un nombre, esquema o fecha.
Llenado asincrnico de objetos, con la posibilidad de filtrar objetos
segn sus metadatos.
Acceso al Agente SQL Server en los servidores de rplica para
administracin.

Pgina 540 de 630

4. MBSA y Service packs


Microsoft Baseline Security Analyzer (MBSA) comunes y genera informes de
seguridad individuales por cada equipo que examina.
MBSA:
Se ejecuta en equipos con Windows Server 2003, Windows 2000
y Windows XP
Puede examinar vulnerabilidades de seguridad en equipos que
ejecutan Windows NT 4.0, Windows 2000, Windows XP y
Windows Server 2003. Busca configuraciones de seguridad
incorrectas comunes en Windows, Internet Information Services
(IIS), SQL Server, Internet Explorer y Microsoft Office.
Examina tambin las actualizaciones de seguridad perdidas en
Windows, IIS, SQL Server, Internet Explorer, Windows Media
Player, Exchange Server, Microsoft Data Access Components
(MDAC), Microsoft XML (MSXML), la mquina virtual (VM) de
Microsoft, Content Management Server, Commerce Server,
BizTalk Server, Host Integration Server y Office (slo
exploraciones locales). En la versin 1.2.1 hay una interfaz grfica
de usuario (GUI, graphical user interface) y una interfaz de lnea
de comandos.
Cmo utilizar MBSA?
Para ejecutar la versin de la GUI de MBSA, inicie Mbsa.exe desde la
carpeta en la que se instal la herramienta. Para ejecutar la versin de la
lnea de comandos, escriba el comando siguiente en un smbolo del sistema
(desde la carpeta en donde est instalada la herramienta) y, a continuacin,
presione ENTRAR: mbsacli.exe
Sistema y aplicabilidad de idioma
Puede ejecutar la versin 1.2.1 de MBSA en equipos con Windows Server
2003, Windows 2000 o Windows XP. MBSA puede examinar equipos que
ejecutan Windows NT 4.0, Windows 2000, Windows XP y Windows Server
2003. No se puede examinar remotamente un equipo con Windows XP Home
Edition. Se puede examinar remotamente un equipo de Windows XP
Professional si est unido a un dominio. Si no est unido a un dominio, un
equipo con Windows XP Professional slo puede ser examinado
remotamente despus de que la Configuracin de seguridad local se haya
puesto en Clsico: usuarios locales autenticados como ellos y est
deshabilitado el uso compartido simple de archivos.

Pgina 541 de 630

Requisitos del sistema


La lista siguiente describe los requisitos del sistema para examinar un equipo
local:

Windows Server 2003, Windows 2000 o Windows XP.


Internet Explorer 5.01 o posterior.
Para que la herramienta funcione correctamente se necesita un analizador XML. Microsoft
le recomienda que use la versin ms reciente del analizador de MSXML. En los sistemas
con Windows 2000 que no tienen instalado MSXML 3.0 o una versin posterior, el
programa de instalacin no contina hasta que el usuario instala el analizador MSXML
ms reciente.
El servicio Estacin de trabajo y el servicio Servidor deben estar en ejecucin.
Debe tener el servicio World Wide Web para realizar comprobaciones locales de
vulnerabilidad administrativa de IIS.

La lista siguiente describe los requisitos del sistema para un equipo que
ejecuta la herramienta y examina equipos remotos:

Windows Server 2003, Windows 2000 o Windows XP.


Internet Explorer 5.01 o posterior.
Para que la herramienta funcione correctamente se necesita un analizador XML. Microsoft
le recomienda que use la versin ms reciente del analizador de MSXML. En los sistemas
de Windows 2000 que no tienen instalado MSXML 3.0 o una versin posterior, el
programa de instalacin no contina hasta que el usuario instala el analizador MSXML
ms reciente.
Se necesitan los Archivos Comunes de IIS en el equipo donde la herramienta se instala
para
realizar
exploraciones
remotas
de
equipos
de
IIS.
Nota: se necesitan los Archivos comunes de IIS 6.0 en la mquina local cuando examina
remotamente un servidor IIS 6.0.
El servicio Estacin de trabajo y el Cliente para redes Microsoft debe estar activados.

La lista siguiente describe los requisitos del sistema para el equipo que quiere
examinar remotamente utilizando la herramienta:

Service Pack 4 (SP4) de Windows NT 4.0 y las versiones posteriores, Windows 2000,
Windows XP (slo exmenes locales en equipos con Windows XP que utilizan el uso
compartido simple de archivos) o Windows Server 2003.
IIS 4.0, 5.0, 5.1 o 6.0 (para ejecutar comprobaciones de vulnerabilidad de IIS).
Internet Explorer 5.01 o versiones posteriores (para ejecutar comprobaciones de zonas de
seguridad de Internet Explorer).
SQL 7.0, 2000 (para realizar comprobaciones de vulnerabilidad de IIS).
Office 2000, Office XP u Office 2003 (para realizar comprobaciones de vulnerabilidad de
Office).
Se deben instalar los servicios siguientes: Servidor, Registro remoto, Compartir archivos e
impresoras.

Los usuarios que realizan la exploracin deben tener credenciales


administrativas locales en cada equipo que quieren explorar, con
independencia de que hagan una exploracin local o una exploracin remota.
Para exploraciones remotas, los recursos compartidos administrativos deben
estar habilitados en el equipo examinado para que MBSA se conecte
correctamente y realice la exploracin.
Debe tener acceso a Internet para descargar el archivo Mssecure.cab desde
el Centro de descargas de Microsoft. Mssecure.cab se utiliza para examinar
las actualizaciones de seguridad. Si en una exploracin anterior se descarg
Pgina 542 de 630

una copia previa del archivo Mssecure.cab, MBSA intentar utilizar la copia
almacenada localmente en la memoria cach si no se detecta una conexin a
Internet.

5. DB Engine Tuning Advisor


El rendimiento de los sistemas de bases de datos empresariales depende de
una configuracin eficaz de las estructuras de diseo fsico de las bases de
datos que componen dichos sistemas. Entre las estructuras de diseo fsico
se incluyen ndices, ndices agrupados, vistas indexadas y particiones, cuyo
objetivo es mejorar el rendimiento y la facilidad de uso de las bases de datos.
Microsoft SQL Server 2005 proporciona el Asistente para la optimizacin de
motor de base de datos, una herramienta que analiza los efectos del
rendimiento de las cargas de trabajo (un conjunto de instrucciones TransactSQL que se ejecuta en las bases de datos que se desean optimizar) en una o
ms bases de datos.

Como optimizar una base de datos mediante la utilidad DTA


La utilidad dta proporciona un archivo ejecutable en el smbolo del sistema
que puede usar para optimizar bases de datos. Esto permite utilizar la
funcionalidad del Asistente para la optimizacin de motor de base de datos
en archivos por lotes y secuencias de comandos. La utilidad dta utiliza los
archivos de traza, las tablas de traza y las secuencias de comandos
Transact-SQL como cargas de trabajo.
Hay que tener en cuenta lo siguiente antes de optimizar una carga de trabajo
con la utilidad dta:
Al usar una tabla de traza como una carga de trabajo, esa tabla
debe existir en el mismo servidor que el Asistente para la
optimizacin de motor de base de datos est optimizando. Si se
crea la tabla de traza en otro servidor, se debe mover al servidor
que el Asistente para la optimizacin de motor de base de datos
est optimizando.
Se debe asegurar que el seguimiento se ha detenido antes de
usar una tabla de traza como carga de trabajo para el Asistente
para la optimizacin de motor de base de datos. El Asistente para
la optimizacin de motor de base de datos no permite el uso como
carga de trabajo de una tabla de traza en la que an se estn
escribiendo eventos de traza.
Si una sesin de optimizacin contina ejecutndose ms tiempo
del que haba previsto, puede presionar CTRL+C para detener la
sesin de optimizacin y generar recomendaciones basadas en el
anlisis que dta ha realizado hasta ese momento. Se solicita que
decida si desea o no generar recomendaciones. Presione
CTRL+C de nuevo para detener la sesin de optimizacin sin
generar recomendaciones.
Pgina 543 de 630

La utilidad dta es la versin del smbolo del sistema del Asistente para la
optimizacin de motor de base de datos. La utilidad dta est diseada para
permitir usar la funcionalidad del Asistente para la optimizacin de motor de
base de datos en aplicaciones y secuencias de comandos.
Al igual que el Asistente para la optimizacin de motor de base de datos, la
utilidad dta analiza una carga de trabajo y recomienda estructuras de diseo
fsico para mejorar el rendimiento del servidor para esa carga de trabajo. La
carga de trabajo puede ser una tabla o un archivo de traza del Analizador de
SQL Server o una secuencia de comandos de Transact-SQL. Las estructuras
de diseo fsico incluyen ndices, vistas indexadas y particiones. Despus de
analizar una carga de trabajo, la utilidad dta crea una recomendacin para el
diseo fsico de bases de datos y puede generar la secuencia de comandos
necesaria para implementar la recomendacin. Las cargas de trabajo se
pueden especificar desde el smbolo del sistema con el argumento -if o -it.
Tambin puede especificar un archivo de entrada XML desde el smbolo del
sistema con el argumento -ix. En ese caso, la carga de trabajo se especifica
en el archivo de entrada XML.
Sintaxis

dta
[ -? ] |
[
[ -S server_name[ \instance ] ]
{
{ -U login_id [-P password ] }
| E
}
{ -D database_name [ ,...n ] }
[-d database_name ]
[ -Tl table_list | -Tf table_list_file ]
{ -if workload_file | -it workload_trace_table_name }
{ -s session_name | -ID session_ID }
[ -F ]
[ -of output_script_file_name ]
[ -or output_xml_report_file_name ]
[ -ox output_XML_file_name ]
[ -rl analysis_report_list [ ,...n ] ]
[ -ix input_XML_file_name ]
[ -A time_for_tuning_in_minutes ]
[ -n number_of_events ]
[ -m minimum_improvement ]
[ -fa physical_design_structures_to_add ]
[ -fp partitioning_strategy ]
[ -fk keep_existing_option ]
[ -fx drop_only_mode ]
[ -B storage_size ]
[ -c max_key_columns_in_index ]
Pgina 544 de 630

[ -C max_columns_in_index ]
[ -e | -e tuning_log_name ]
[ -N online_option]
[ -q ]
[ -u ]
[ -x ]
[ -a ]
]
Argumentos
-?
Muestra informacin de uso.
-A time_for_tuning_in_minutes
Especifica el lmite de tiempo de optimizacin en minutos. dta utiliza el
tiempo especificado para optimizar la carga de trabajo y generar una
secuencia de comandos con los cambios de diseo fsico
recomendados. De forma predeterminada dta asume un tiempo de
optimizacin de 8 horas. Si especifica 0, se permite un tiempo de
optimizacin ilimitado. dta puede acabar de optimizar toda la carga de
trabajo antes de que pase el lmite de tiempo. No obstante, para
asegurarse de que se optimiza toda la carga de trabajo, se recomienda
especificar un tiempo de optimizacin ilimitado (-A 0).
-a
Optimiza la carga de trabajo y aplica la recomendacin sin preguntarle.
-B storage_size
Especifica el espacio mximo en megabytes que puede usar la
particin y el ndice recomendados. Cuando se optimizan varias bases
de datos, se tienen en cuenta las recomendaciones para todas las
bases de datos sobre el clculo del espacio. De forma predeterminada,
dta asume el menor de los siguientes tamaos de almacenamiento:
Tres veces el tamao actual de los datos sin procesar, que incluye
el tamao total de los ndices agrupados y montones de las tablas
de la base de datos.
El espacio libre en todas las unidades de disco adjuntas ms el
tamao de los datos sin procesar.
El tamao de almacenamiento predeterminado no incluye los ndices
no agrupados ni las vistas indizadas.
-C max_columns_in_index
Especifica el nmero mximo de columnas en los ndices propuestos
por dta. El valor mximo depende de la versin de SQL Server. El
valor mximo para SQL Server 2000 es 16, el valor mximo para SQL
Server 2005 es 1024. De forma predeterminada, este argumento se
establece en 16.
Pgina 545 de 630

-c max_key_columns_in_index
Especifica el nmero mximo de columnas de clave en los ndices
propuestos por dta. El valor predeterminado es 16, el valor mximo
permitido por SQL Server 2005. Este argumento slo se aplica a SQL
Server 2005. dta tambin tiene en cuenta la creacin de ndices con
columnas incluidas. Los ndices recomendados con columnas incluidas
pueden sobrepasar el nmero de columnas especificado en este
argumento.
-D database_name
Especifica el nombre de cada base de datos que se va a optimizar. La
primera base de datos es la base de datos predeterminada. Puede
especificar varias bases de datos separando los nombres de la base
de datos con comas, por ejemplo:
dta D database_name1, database_name2...
De forma alternativa, puede especificar varias bases de datos
utilizando el argumento D para cada nombre de base de datos, por
ejemplo:
dta D database_name1 -D database_name2... n
El argumento -D es obligatorio. Si el argumento -d no se ha
especificado, dta inicialmente se conecta con la base de datos que se
ha especificado con la primera clusula de USE database_name en
la carga de trabajo. Si no hay ninguna clusula explcita de USE
database_name en la carga de trabajo, debe usar el argumento -d.
Por ejemplo, si tiene una carga de trabajo que no contiene ninguna
clusula explcita de USE database_name y utiliza el siguiente
comando de dta, no se generar ninguna recomendacin:
dta -D db_name1, db_name2...
No obstante, si usa la misma carga de trabajo y utiliza el siguiente
comando de dta que usa el argumento -d, se generar una
recomendacin:
dta -D db_name1, db_name2 -d db_name1
-d database_name
Especifica la primera base de datos a la que se conecta dta cuando
optimiza una carga de trabajo. Slo se puede especificar una base de
datos para este argumento. Por ejemplo:
dta -d adventureworks ...
Si se especifican varios nombres de bases de datos, dta devuelve un
error. El argumento -d es opcional.
Pgina 546 de 630

Si utiliza un archivo de entrada XML, puede especificar la primera base


de datos a la que se conecta dta utilizando el elemento
DatabaseToConnect que se encuentra debajo del elemento
TuningOptions.
Si slo optimiza una base de datos, el argumento -d proporciona una
funcionalidad similar al argumento -d en la utilidad sqlcmd, pero no
ejecuta la instruccin USE de database_name.
-E
Utiliza una conexin de confianza en lugar de solicitar una contrasea.
Debe usarse el argumento -E o el argumento -U, que especifica un Id.
de inicio de sesin.
-e tuning_log_name
Especifica el nombre de la tabla o del archivo en el que dta registra
eventos que no puede optimizar. La tabla se crea en el servidor en el
que se realiza la optimizacin.
Si se usa una tabla, especifique su nombre en el formato:
[database_name].[owner_name].table_name. La siguiente tabla
muestra los valores predeterminados para cada parmetro:
Parmetros

Valor predeterminado

database_name database_name especificado con la opcin D


Dbo
owner_name

table_name

Nota:
owner_name debe ser dbo. Si se especifica otro valor, la
ejecucin de dta es errnea y devuelve un error.
Ninguno

Si se utiliza un archivo, especifique .xml como extensin. Por ejemplo,


TuningLog.xml.
Nota:
La utilidad dta no elimina el contenido de las tablas de registro de
optimizacin especificadas por el usuario si se elimina la sesin. Cuando
optimice cargas de trabajo de gran tamao, se recomienda especificar una
tabla para el registro de optimizacin. Puesto que la optimizacin de cargas
de trabajo de gran tamao puede producir registros de optimizacin grandes,
las sesiones se pueden eliminar mucho ms rpidamente cuando se utiliza
una tabla.
-F
Permite que dta sobrescriba un archivo de salida existente. Si ya
existe un archivo de salida con el mismo nombre y no se especifica -F,
dta devuelve un error. Puede usar -F con -of, -or o -ox.
Pgina 547 de 630

-fa physical_design_structures_to_add
Especifica los tipos de estructuras de diseo fsico que dta debe incluir
en la recomendacin. En la tabla siguiente se muestran y describen los
valores que se pueden especificar para este argumento. Cuando no se
especifica ningn valor, dta utiliza el -fa IDX predeterminado.
Valor

Descripcin

IDX_IV

ndices y vistas indexadas.

IDX

Slo ndices.

IV

Slo vistas indexadas.

NCL_IDX

Slo ndices no agrupados.

-fk keep_existing_option
Especifica las estructuras de diseo fsico que dta debe conservar
cuando cree su recomendacin. En la tabla siguiente se muestran y
describen los valores que se pueden especificar para este argumento:
Valor

Descripcin

NONE

Ninguna estructura existente

ALL

Todas las estructuras existentes

ALIGNED Todas las estructuras alineadas de particin


CL_IDX

Todos los ndices agrupados en las tablas

IDX

Todos los ndices agrupados y no agrupados de las tablas

-fp partitioning_strategy
Especifica si las nuevas estructuras de diseo fsico (ndices y vistas
indizadas) que dta propone se deben dividir y cmo se deben dividir.
En la tabla siguiente se muestran y describen los valores que se
pueden especificar para este argumento:
Valor

Descripcin

NONE

No crear particiones

FULL

Particiones completas (para mejorar el rendimiento)

ALIGNED Slo

particiones

alineadas

(para

mejorar

la

capacidad

Pgina 548 de 630

de

administracin)
ALIGNED significa que, en la recomendacin generada por dta, cada
ndice propuesto se divide exactamente igual que la tabla subyacente
para la que se ha definido el ndice. Los ndices no agrupados de una
vista indizada se alinean con la vista indizada. Slo se puede
especificar un valor para este argumento. El valor predeterminado es
-fp NONE.
-fx drop_only_mode
Especifica que dta slo tiene en cuenta eliminar estructuras de diseo
fsicas existentes. No se tienen en cuenta las nuevas estructuras de
diseo fsico. Cuando se especifica esta opcin, dta analiza la utilidad
de las estructuras de diseo fsico existentes y recomienda la
eliminacin de las estructuras que se utilizan rara vez. Este argumento
no necesita valores. No se puede usar con los argumentos -fa, -fp ni
-fk ALL
-ID session_ID
Especifica un identificador numrico para la sesin de optimizacin. Si
no se especifica, dta genera un nmero de Id. Puede usar este
identificador para ver informacin para sesiones de optimizacin
existentes. Si no especifica un valor para -ID, debe especificarse un
nombre de sesin con -s.
-if workload_file
Especifica el nombre y la ruta del archivo de carga de trabajo que se
desea usar como entrada para la optimizacin. El archivo debe estar
en uno de estos formatos: .trc (archivo de traza del Analizador de SQL
Server), .sql (archivo de SQL), o .log (archivo de traza de SQL Server).
Debe especificarse un archivo de carga de trabajo o una tabla de
carga de trabajo.
-it workload_trace_table_name
Especifica el nombre de una tabla que contiene la traza de carga de
trabajo para la optimizacin. El nombre se debe especificar en el
formato: [database_name].[owner_name].table_name.
En la tabla siguiente se muestran los valores predeterminados para
cada parmetro:
Parmetros

Valor predeterminado

database_name

database_name especificado con la opcin D.

owner_name

dbo.

table_name

Ninguno
Pgina 549 de 630

Nota:
owner_name debe ser dbo. Si se especifica cualquier otro valor, la ejecucin
de dta no ser correcta y se devolver un error. Tenga en cuenta tambin que
debe especificarse una tabla de carga de trabajo o un archivo de carga de
trabajo.
-ix input_XML_file_name
Especifica el nombre del archivo XML que contiene la informacin de
entrada dta. Debe ser un documento XML vlido que cumpla con
DTASchema.xsd. Los argumentos que entren en conflicto
especificados desde el smbolo del sistema para las opciones de
optimizacin anulan el valor correspondiente en este archivo XML. La
nica excepcin se produce cuando se usa una configuracin
especificada por el usuario en el modo de evaluacin del archivo de
entrada XML. Por ejemplo, si se especifica una configuracin en el
elemento Configuration del archivo de entrada XML y el elemento
EvaluateConfiguration tambin se especifica como una de las
opciones de optimizacin, las opciones de optimizacin especificadas
en el archivo de entrada XML anulan las opciones de optimizacin
especificadas desde el smbolo del sistema.
-m minimum_improvement
Especifica el porcentaje mnimo de mejora que debe satisfacer la
configuracin recomendada.
-N online_option
Especifica si las estructuras de diseo fsico se crean en lnea. En la
tabla siguiente se muestran y describen los valores que pueden
especificarse para este argumento:
Valor Descripcin
OFF

No se pueden crear en lnea las estructuras recomendadas de diseo


fsico.

ON

Se pueden crear en lnea todas las estructuras recomendadas de


diseo fsico.

Siempre que es posible, el Asistente para la optimizacin de motor de


MIXED base de datos intenta recomendar las estructuras de diseo fsico que
se pueden crear en lnea.
Si los ndices se crean en lnea, se anexa ONLINE = ON a la definicin
del objeto.
-n number_of_events

Pgina 550 de 630

Especifica el nmero de eventos de la carga de trabajo que dta debe


optimizar. Si se especifica este argumento y la carga de trabajo es un
archivo de traza que contiene informacin de duracin, dta optimiza
los eventos en orden decreciente de duracin. Este argumento es til
para comparar dos configuraciones de estructuras de diseo fsico.
Para comparar dos configuraciones, especifique el mismo nmero de
eventos que se optimizarn para ambas configuraciones y despus
especifique un tiempo de optimizacin ilimitado para las dos de la
siguiente manera:
dta -n number_of_events -A 0
En este caso es importante especificar un tiempo de optimizacin
ilimitado (-A 0). De lo contrario, el Asistente para la optimizacin de
motor de base de datos asume un tiempo de optimizacin de 8 horas
de forma predeterminada.
-of output_script_file_name
Especifica que dta escriba la recomendacin como una secuencia de
comandos de Transact-SQL en el nombre de archivo y el destino
especificados.
Puede usar -F con esta opcin. Asegrese de que el nombre de
archivo es exclusivo, especialmente si tambin utiliza -or y -ox.
-or output_xml_report_file_name
Especifica que dta escribe la recomendacin en un informe de salida
en XML. Si se proporciona un nombre de archivo, las
recomendaciones se escriben en ese destino. De lo contrario, dta
utiliza el nombre de sesin para generar el nombre de archivo y lo
escribe en el directorio actual.
Puede usar -F con esta opcin. Asegrese de que el nombre de
archivo es exclusivo, especialmente si tambin utiliza -of y -ox.
-ox output_XML_file_name
Especifica que dta escriba la recomendacin como un archivo XML en
el nombre de archivo y el destino especificados. Asegrese de que el
Asistente para la optimizacin de motor de base de datos tiene
permiso para escribir en el directorio de destino.
Puede usar -F con esta opcin. Asegrese de que el nombre de
archivo es exclusivo, especialmente si tambin utiliza -of y -or.
-P password
Especifica la contrasea para el identificador de inicio de sesin. Si no
se utiliza esta opcin, dta le pide una contrasea.

Pgina 551 de 630

-q
Establece el modo silencioso. No se escribe ninguna informacin en la
consola, ni siquiera informacin de progreso o de encabezado.
-rl analysis_report_list
Especifica la lista de informes de anlisis que se crearn. En la tabla
siguiente se muestran los valores que se pueden especificar para este
argumento:

Valor

Informe

ALL

Todos los informes de anlisis

STMT_COST

Informe de costo de instrucciones

EVT_FREQ

Informe de frecuencia de eventos

STMT_DET

Informe de detalles de instrucciones

CUR_STMT_IDX

Informe relacional de
(configuracin actual)

instrucciones

ndices

REC_STMT_IDX

Informe relacional de instrucciones


(configuracin recomendada)

ndices

STMT_COSTRANGE Informe de intervalo de costo de instrucciones


CUR_IDX_USAGE

Informe de uso de ndices (configuracin actual)

REC_IDX_USAGE

Informe de uso de ndices (configuracin recomendada)

CUR_IDX_DET

Informe de detalles de ndices (configuracin actual)

REC_IDX_DET

Informe de detalles
recomendada)

VIW_TAB

Informe relacional de vistas y tablas

WKLD_ANL

Informe de anlisis de carga de trabajo

DB_ACCESS

Informe de acceso a bases de datos

de

ndices

(configuracin

Pgina 552 de 630

TAB_ACCESS

Informe de acceso a tablas

COL_ACCESS

Informe de acceso a columnas

Especifique varios informes separando los valores con comas, por


ejemplo:
... -rl EVT_FREQ, VIW_TAB, WKLD_ANL ...
-S server_name[ \instance]
Especifica el nombre del equipo y la instancia de SQL Server a la que
conectarse. Si no se especifica ningn valor de server_name, dta se
conecta con la instancia predeterminada de SQL Server en el equipo
local. Esta opcin es necesaria cuando se conecta con una instancia
con nombre o cuando se ejecuta dta desde un equipo remoto de la
red.
-s session_name
Especifica el nombre de la sesin de optimizacin. Es necesario si no
se especifica -ID.
-Tf table_list_file
Especifica el nombre de un archivo que contiene una lista de tablas a
optimizar. Cada tabla enumerada en el archivo debe empezar en una
nueva lnea. Los nombres de tabla deben tener nombres en tres
partes,
por
ejemplo,
adventureworks.dbo.department.
Opcionalmente, para invocar la caracterstica de escala de tablas, el
nombre de una tabla existente puede ir seguido de un nmero que
indica el nmero previsto de filas de la tabla. El Asistente para la
optimizacin de motor de base de datos toma en consideracin el
nmero proyectado de filas a la vez que optimiza o evala
instrucciones de la carga de trabajo que hacen referencia a esas
tablas. Tenga en cuenta que puede haber uno o ms espacios entre el
nmero de number_of_rows y table_name.
Este es el formato de archivo de table_list_file:
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
Este argumento es una alternativa a especificar una lista de tablas en
el smbolo del sistema (-Tl). No utilice un archivo de lista de tabla (-Tf)
si est utilizando -Tl. Si se usan ambos argumentos, dta devuelve un
error.

Pgina 553 de 630

Si se omiten los argumentos -Tf y -Tl, todas las tablas de usuario de


las bases de datos especificadas se tienen en cuenta para la
optimizacin.
-Tl table_list
Especifica en el smbolo del sistema una lista de tablas que se
optimizarn. Utilice una coma entre los nombres de tabla para
separarlos. Si slo se especifica una base de datos con el argumento
-D, no es necesario calificar los nombres de tabla con un nombre de
base de datos. De lo contrario, se requiere el nombre completo en el
formato database_name.schema_name.table_name para cada tabla.
Este argumento es una alternativa al uso de un archivo de lista de
tablas (-Tf). Si se utilizan los argumentos -Tl y -Tf, dta devuelve un
error.
-U login_id
Especifica el Id. de inicio de sesin para conectar con SQL Server.
-u
Inicia la GUI del Asistente para la optimizacin de motor de base de
datos. Todos los parmetros se tratan como la configuracin inicial
para la interfaz de usuario.
-x
Inicia la sesin de optimizacin y se cierra.

Nota:
Presione CTRL+C una vez para detener la sesin de optimizacin y crear
recomendaciones basndose en el anlisis que dta ha completado hasta este
punto. Se le solicitar que decida si desea o no generar recomendaciones.
Presione CTRL+C de nuevo para detener la sesin de optimizacin sin
generar recomendaciones.
Ejemplos
A. Optimizar una carga de trabajo que incluye ndices y vistas indizadas
en su recomendacin
Este ejemplo utiliza una conexin segura (-E) para conectar con la base de
datos tpcd1G en MyServer para analizar una carga de trabajo y crear
recomendaciones. Escribe la salida en un archivo de secuencia de comandos
denominado script.sql. Si este archivo ya existe, dta sobrescribir el archivo
porque se ha especificado el argumento -F. La sesin de optimizacin se
ejecuta durante un perodo de tiempo ilimitado para garantizar un completo
anlisis de la carga de trabajo (-A 0). La recomendacin debe proporcionar
una mejora mnima del 5% (-m 5). dta debe incluir ndices y vistas indexadas
en su recomendacin final (-fa IDX_IV).
Pgina 554 de 630

dta S MyServer E -D tpcd1G -if tpcd_22.sql -F of script.sql A 0 -m 5 fa


IDX_IV
B. Limitar la utilizacin del disco
Este ejemplo limita el tamao total de la base de datos, que incluye los datos
sin procesar y los ndices adicionales, hasta 3 gigabytes (GB) (-B 3000) y
dirige la salida a d:\result_dir\script1.sql. Se ejecuta durante 1 hora como
mximo (-A 60).
dta D tpcd1G if tpcd_22.sql -B 3000 of "d:\result_dir\script1.sql" A 60
C. Limitar el nmero de consultas optimizadas
Este ejemplo limita el nmero de consultas ledas desde el archivo
orders_wkld.sql hasta un mximo de 10 (-n 10) y se ejecuta durante 15
minutos (-A 15), lo que se d primero. Para asegurarse de que se optimizan
las 10 consultas, especifique un tiempo de optimizacin ilimitado con -A 0. Si
el tiempo es importante, especifique un lmite de tiempo adecuado
estableciendo el nmero de minutos que est disponible para optimizar con el
argumento -A como se muestra en este ejemplo.
dta D orders if orders_wkld.sql of script.sql A 15 -n 10
D. Optimizar tablas especficas enumeradas en un archivo
Este ejemplo muestra el uso de table_list_file (el argumento -Tf). El contenido
del archivo table_list.txt es el siguiente:
adventureworks.dbo.customer 100000
adventureworks.dbo.store
adventureworks.dbo.product 2000000
El contenido de table_list.txt especifica que:
Slo deben optimizarse las tablas customer, store y product de
la base de datos.
Se asume que el nmero de filas de las tablas customer y
product es 100.000 y 2.000.000, respectivamente.
Se supone que el nmero de filas de store es igual al nmero
actual de filas de la tabla.
Tenga en cuenta que puede haber uno o ms espacios entre el nmero de
filas y el nombre de tabla que lo precede en table_list_file.
El tiempo de optimizacin es de 2 horas (-A 120) y la salida se escribe en un
archivo XML (-ox XMLTune.xml).
dta D pubs if pubs_wkld.sql ox XMLTune.xml A 120 Tf table_list.txt
Para optimizar una base de datos utilizando la configuracin
predeterminada de la utilidad dta
1. Determine determinar las caractersticas de la base de datos (ndices,
vistas indexadas, particiones) que desee que el Asistente para la
optimizacin de motor de base de datos pueda agregar, eliminar o
retener durante el anlisis.
Pgina 555 de 630

2. Cree una carga de trabajo. En el smbolo del sistema, escriba lo


siguiente:
dta -E -D DatabaseName -if WorkloadFile -s SessionName
3. donde -E especifica que la sesin de optimizacin utilice una conexin
de confianza (en lugar de un Id. de inicio de sesin y una contrasea); -D
especifica el nombre de la base de datos que desea optimizar. De forma
predeterminada, la utilidad se conecta a la instancia predeterminada de
Microsoft SQL Server en el equipo local. (Use la opcin -S para
especificar una base de datos remota, como se muestra en el siguiente
procedimiento, o bien para especificar una instancia con nombre.) La
opcin -if especifica el nombre y la ruta de acceso a un archivo de carga
de trabajo (que puede ser una secuencia de comandos Transact-SQL o
un archivo de traza) y -s especifica un nombre para la sesin de
optimizacin.
4. Las cuatro opciones mostradas aqu (nombre de la base de datos,
carga de trabajo, tipo de conexin y nombre de la sesin) son
obligatorias.

6. Plan de Ejecucin
En esta seccin se explica cmo visualizar los planes de ejecucin y cmo
guardarlos en un archivo de formato XML mediante Microsoft SQL Server
Management Studio.
Los planes de ejecucin muestran de forma grfica los mtodos de
recuperacin de datos que utiliza el optimizador de consultas de SQL Server.
Los planes de ejecucin representan el costo de ejecucin de las
instrucciones y consultas especficas en SQL Server en lugar de la
representacin tabular que crean las instrucciones SET SHOWPLAN_ALL o
SET SHOWPLAN_TEXT. Este enfoque grfico resulta muy til para
comprender las caractersticas de rendimiento de una consulta.
Como mostrar un plan de ejecucin estimado
En este tema se describe cmo generar planes de ejecucin estimados
utilizando SQL Server Management Studio. Cuando se generan planes de
ejecucin estimados, las consultas o lotes Transact-SQL no se ejecutan. En
su lugar, el plan de ejecucin que se genera muestra el plan de ejecucin de
la consulta que el SQL Server Database Engine utilizara con ms
probabilidad si se ejecutaran realmente las consultas.
Para utilizar esta caracterstica, los usuarios deben tener los permisos
correspondientes para ejecutar la consulta Transact-SQL para la que se va a
generar un plan de ejecucin grfico, y se les debe conceder el permiso
SHOWPLAN para todas las bases de datos a las que haga referencia la
consulta.

Pgina 556 de 630

Para mostrar el plan de ejecucin estimado de una consulta


1. En la barra de herramientas, haga clic en Consulta de motor de
base de datos. Tambin puede abrir una consulta existente y
mostrar el plan de ejecucin estimado haciendo clic en el botn Abrir
archivo de la barra de herramientas y buscando la consulta
existente.
2. Especifique la consulta para la que desea mostrar el plan de
ejecucin estimado.
3. En el men Consulta, haga clic en Mostrar plan de ejecucin
estimado o haga clic en el botn Mostrar plan de ejecucin
estimado de la barra de herramientas. El plan de ejecucin estimado
se muestra en la ficha Plan de ejecucin del panel de resultados.
Para ver informacin adicional, site el cursor del mouse sobre los
iconos de operador lgico y fsico, y vea la descripcin y las
propiedades del operador en la informacin sobre herramientas que
se muestra. Tambin puede ver las propiedades del operador en la
ventana Propiedades. Si no estn visibles las propiedades, haga clic
con el botn secundario en un operador y elija Propiedades.
Seleccione un operador para ver sus propiedades.
4. Para cambiar la visualizacin del plan de ejecucin, haga clic con el
botn secundario en el plan de ejecucin y seleccione Acercar,
Alejar, Zoom personalizado o Zoom para ajustar. Acercar y Alejar
permiten aumentar o reducir el plan de ejecucin en incrementos
fijos. Zoom personalizado permite definir su propia ampliacin de la
visualizacin, como alejar hasta un 80 por ciento. Zoom para ajustar
ampla el plan de ejecucin para que se ajuste al panel de resultados.
Como mostrar un plan de ejecucin real
En este tema se describe cmo generar planes de ejecucin grficos reales
mediante SQL Server Management Studio. Cuando se generan planes de
ejecucin reales, se ejecutan los lotes o consultas Transact-SQL. El plan de
ejecucin que se ha generado muestra el plan de ejecucin de consultas real
que utiliza el SQL Server Database Engine para ejecutar las consultas.
Para utilizar esta caracterstica, los usuarios deben tener los permisos
apropiados para ejecutar las consultas Transact-SQL para las que se genera
un plan de ejecucin grfico, y deben tener concedido el permiso
SHOWPLAN para todas las bases de datos a las que hace referencia la
consulta.
.
Para incluir un plan de ejecucin para una consulta durante la
ejecucin
1. En la barra de herramientas de SQL Server Management Studio,
haga clic en Consulta de motor de base de datos. Tambin puede
abrir una consulta existente y mostrar el plan de ejecucin estimado

Pgina 557 de 630

haciendo clic en el botn Abrir archivo de la barra de herramientas y


buscando la consulta existente.
2. Especifique la consulta para la que desee mostrar el plan de
ejecucin real.
3. En el men Consultar, haga clic en Incluir plan de ejecucin real o
en el botn Incluir plan de ejecucin real de la barra de
herramientas.
4. Ejecute la consulta haciendo clic en el botn Ejecutar de la barra de
herramientas. El plan utilizado por el optimizador de consultas se
muestra en la ficha Plan de ejecucin del panel de resultados.
Coloque el mouse (ratn) sobre los operadores lgicos y fsicos para
ver la descripcin y las propiedades de los operadores en la
informacin sobre herramientas que se muestra.
Tambin puede ver las propiedades del operador en la ventana
Propiedades. Si las propiedades no estn visibles, haga clic con el botn
secundario en un operador y seleccione Propiedades. Seleccione un
operador para ver sus propiedades.
1. Se puede modificar la visualizacin del plan de ejecucin haciendo
clic con el botn secundario en el plan de ejecucin y seleccionando
Acercar, Alejar, Zoom personalizado o Zoom para ajustar.
Acercar y Alejar permiten acercarse o alejarse del plan de ejecucin,
mientras que Zoom personalizado permite definir su propio zoom,
como por ejemplo un 80 por ciento de zoom. Zoom para ajustar
ampla el plan de ejecucin para que se ajuste al panel de resultados.

7. Estadsticas
Crea un histograma y grupos de densidad asociados (colecciones) sobre la
columna o el conjunto de columnas proporcionados de una tabla o una vista
indizada. Tambin se crean estadsticas de resumen de cadena sobre las
estadsticas generadas en las columnas con datos de tipo char, varchar,
varchar(max), nchar, nvarchar, nvarchar(max), text y ntext. El optimizador
de consultas utiliza esta informacin estadstica para elegir el plan ms eficaz
para recuperar o actualizar datos. Las estadsticas actualizadas permiten al
optimizador analizar con precisin el costo de los distintos planes de consulta
y elegir un plan de buena calidad.
Sintaxis
CREATE STATISTICS statistics_name
ON { table | view } ( column [ ,...n ] )
Pgina 558 de 630

[ WITH
[ [ FULLSCAN
| SAMPLE number { PERCENT | ROWS }
| STATS_STREAM = stats_stream ] [ , ] ]
[ NORECOMPUTE ]
];
Argumentos
statistics_name
Es el nombre del grupo de estadsticas que se va a crear. Los
nombres de las estadsticas deben cumplir las reglas de los
identificadores y deben ser exclusivos en la tabla o la vista en la que
se crean.
table
Es el nombre de la tabla en que se van a crear las estadsticas con
nombre. Los nombres de las tablas deben cumplir las reglas de los
identificadores. table es la tabla con la que se asocia column. La
especificacin del nombre del propietario de la tabla es opcional. Es
posible crear estadsticas sobre tablas de otra base de datos si se
especifica un nombre de tabla completo.
view
Es el nombre de la vista en la que se van a crear las estadsticas con
nombre. Una vista debe tener un ndice agrupado para que se puedan
crear estadsticas sobre ella. Los nombres de las vistas deben cumplir
las reglas de los identificadores. view es la vista con la que se asocia
column. La especificacin del nombre del propietario de la vista es
opcional. Es posible crear estadsticas sobre vistas de otra base de
datos si se especifica un nombre de vista completo.
column
Es la columna o el conjunto de columnas sobre el que se van a crear
las estadsticas. Cualquier columna que se pueda especificar como
clave de ndice tambin se puede especificar para las estadsticas, con
las siguientes excepciones:

No es posible especificar columnas xml.

El tamao mximo permitido de los valores de la columna


combinados puede sobrepasar el lmite de 900 bytes impuesto
sobre el valor de clave de ndice.

Slo se pueden especificar columnas calculadas si las opciones de


base de datos ARITHABORT y QUOTED_IDENTIFIER estn
establecidas en ON. Se pueden especificar columnas de tipo definido
por el usuario CLR si el tipo admite el orden binario. Es posible
especificar columnas calculadas definidas como llamadas de mtodos
fuera de una columna de un tipo definido por el usuario si los mtodos
Pgina 559 de 630

estn marcados como deterministas. Para obtener ms informacin


acerca de la creacin de columnas de tipo definido por el usuario CLR,
vea Trabajar con tipos definidos por el usuario para CLR.
FULLSCAN
Especifica que se deben leer todas las filas de table o view a fin de
recopilar las estadsticas. La especificacin de FULLSCAN
proporciona el mismo comportamiento que SAMPLE 100 PERCENT.
Esta opcin no se puede utilizar con la opcin SAMPLE.
SAMPLE number { PERCENT | ROWS }
number. Especifica que un porcentaje, o un nmero especificado de
filas, de los datos debe leerse mediante muestreo aleatorio para
recopilar las estadsticas. Si se especifica PERCENT, number debe
estar entre 0 y 100; si se especifica ROWS, number puede estar entre
0 y el total de filas n.
El SQL Server 2005 Database Engine (Motor de base de datos de
SQL Server 2005) se asegura de que se tomen muestras de un
nmero mnimo de valores para garantizar la utilidad de las
estadsticas. Si la opcin PERCENT, ROWS o number da como
resultado un nmero demasiado bajo de filas para el muestreo, el
Database Engine (Motor de base de datos) corrige automticamente el
muestreo segn el nmero de filas que existe en la tabla o en la vista.
Se realiza un muestreo de, al menos, 1.000 pginas de datos
aproximadamente. Si la opcin PERCENT, ROWS o number crea ms
valores de los necesarios para un muestreo til, el Database Engine
(Motor de base de datos) intenta ajustarse a la cantidad solicitada. No
obstante, puesto que las muestras se toman mediante el recorrido de
las pginas de datos completas, el tamao real de la muestra puede
no ser exactamente igual a la cantidad especificada. Cuando se
especifica 0 PERCENT o ROWS, el resultado es un conjunto de
estadsticas vaco.
SAMPLE no se puede utilizar con la opcin FULLSCAN. Si no se
especifica la opcin SAMPLE o FULLSCAN, el Database Engine
(Motor de base de datos) calcula automticamente una muestra.
NORECOMPUTE
Especifica que el Database Engine (Motor de base de datos) no debe
volver a calcular automticamente las estadsticas. Si se especifica
esta opcin, el Database Engine (Motor de base de datos) contina
utilizando las estadsticas creadas anteriormente (antiguas), aunque
cambien los datos. El Database Engine (Motor de base de datos) no
actualiza ni mantiene automticamente las estadsticas. Esto podra
dar lugar a planes no ptimos.
Advertencia:
Se recomienda hacer un uso limitado de esta opcin y slo por parte de un
administrador del sistema experimentado.
Pgina 560 de 630

Notas:
Slo el propietario de la tabla puede crear estadsticas sobre esa tabla. El
propietario de una tabla puede crear un grupo de estadsticas (coleccin) en
cualquier momento, tanto si hay datos en la tabla como si no los hay.
Si la opcin de base de datos AUTO_UPDATE_STATISTICS est establecida
en ON (el valor predeterminado) y no se ha especificado la clusula
NORECOMPUTE, el Database Engine (Motor de base de datos) actualizar
automticamente las estadsticas creadas manualmente.
CREATE STATISTICS se puede ejecutar en una vista indexada. El
optimizador utiliza las estadsticas sobre vistas indexadas slo si se hace
referencia directa a la vista en la consulta y se especifica la sugerencia
NOEXPAND para la vista. De lo contrario, las estadsticas se derivan de las
tablas subyacentes antes de sustituir la vista indexadas en el plan de
consulta. Esta sustitucin solamente se admite en Microsoft SQL Server 2005
Enterprise y Developer.
Permisos
Requiere el permiso ALTER en la tabla o la vista.
Ejemplos
A. Utilizar CREATE STATISTICS con SAMPLE number PERCENT
En el siguiente ejemplo se crea el grupo de estadsticas ContactMail1. ste
calcula estadsticas de muestreo aleatorio sobre el cinco por ciento de las
columnas ContactID y EmailAddress de la tabla Contact de la base de datos
AdventureWorks.
USE AdventureWorks;
GO
CREATE STATISTICS ContactMail1
ON Person.Contact (ContactID, EmailAddress)
WITH SAMPLE 5 PERCENT;

B. Utilizar CREATE STATISTICS con FULLSCAN y NORECOMPUTE


En el siguiente ejemplo se crea el grupo de estadsticas ContactMail2. ste
calcula estadsticas de todas las filas de las columnas ContactID y
EmailAddress de la tabla Contact y deshabilita la repeticin automtica del
clculo de estadsticas.
CREATE STATISTICS NamePurchase
ON AdventureWorks.Person.Contact (ContactID, EmailAddress)
WITH FULLSCAN, NORECOMPUTE;

Pgina 561 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 4
Reporting Services

2007

Pgina 562 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 563 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 564 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 565 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 566 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 567 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 568 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 569 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 570 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 571 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 572 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 573 de 630

Unidad 4: Reporting Services


Objetivos
Dar una visin acerca del Reporting Services, detallando
los conceptos de los siguientes puntos:
a. Report Server
b. Integracin con SQL Server 2005

Pgina 574 de 630

Microsoft SQL Server 2005 Reporting Services es una solucin basada en el


servidor que se utiliza para generar reportes empresariales.
Dichos reportes extraen contenido de una variedad de orgenes de datos
relacionales y multidimensionales, para ser publicados y vistos en diversos
formatos. Tambin administra la seguridad y las suscripciones de manera
centralizada. Los reportes creados se pueden ver mediante una conexin
Web o como parte de una aplicacin de Microsoft Windows o un portal de
SharePoint.
Reporting Services incluye:
Herramientas y asistentes grficos para crear y publicar reportes y
modelos de reportes
herramientas de administracin del servidor de reportes para
administrar Reporting Services
Interfaces de programacin de aplicaciones (API) para programar
y extender el modelo de objetos de Reporting Services.

SQL Server Reporting Services


SQL Server 2005 Reporting Services ofrece funcionalidad empresarial y de
reportes habilitados para Web de modo que se puedan crear reportes que
extraigan el contenido de una gran variedad de orgenes de datos, publicar
reportes en distintos formatos, y administrar de manera centralizada la
seguridad y las suscripciones.
Los reportes que se generan pueden basarse en datos relacionales o
multidimensionales de SQL Server, Analysis Services, Oracle o cualquier
proveedor de datos de Microsoft .NET, como ODBC u OLE DB. Puede crear
reportes tabulares, matriciales o de formato libre. Tambin puede crear
reportes adaptados a una circunstancia determinada, que utilicen modelos y
orgenes de datos predefinidos.
Visual y funcionalmente, los reportes que se generan en Reporting Services
van ms all de los reportes tradicionales, puesto que incluyen caractersticas
interactivas y basadas en Web. Algunos ejemplos de estas caractersticas
son los reportes de varios niveles de detalle, que permiten la navegacin por
distintas capas de datos, los reportes con parmetros, que admiten el filtro de
contenido en tiempo de ejecucin, o los reportes de formato libre, que
admiten contenido con diseos verticales, anidados o adyacentes, vnculos a
contenido o recursos basados en Web y acceso seguro y centralizado a
reportes mediante conexiones Web locales o remotas.
Aunque Reporting Services se integra con otras tecnologas de Microsoft sin
necesidad de adaptacin, los programadores y otros proveedores pueden
generar componentes compatibles con otros formatos de salida de reportes,
formatos de entrega, modelos de autenticacin y tipos de orgenes de datos.
La arquitectura de desarrollo y tiempo de ejecucin se ha creado con un
diseo modular para admitir extensiones de terceros y posibilidades de
integracin.

Pgina 575 de 630

Reportes empresariales
Muchas compaas utilizan software de elaboracin de reportes para
distribuir informacin a los usuarios que utilizan reportes para tomar
decisiones, identificar oportunidades o analizar amenazas. Reporting
Services incluye una amplia gama de herramientas y servicios listos para
usar que le permitirn crear, implementar y administrar reportes para la
organizacin. Si bien se puede manipular reportes mediante programacin,
sta no es necesaria si desea utilizar Reporting Services tal como se
distribuye. Las herramientas de creacin y administracin incluyen el
Diseador de reportes, SQL Server Management Studio, el Administrador de
reportes y la herramienta de configuracin de Reporting Services. Los
usuarios de empresas pueden utilizar el Administrador de reportes,
elementos Web de SharePoint o un explorador Web para ver reportes a
peticin o suscribirse a reportes que se entregan por correo electrnico.
Elaborar reportes ad hoc
Los usuarios que trabajen con datos empresariales precisan con frecuencia la
capacidad de crear y ajustar reportes ad-hoc. Reporting Services incluye el
Generador de reportes, una herramienta que permite seleccionar una plantilla
y un modelo de informe del servidor de reportes, arrastrar campos de datos y
elementos grficos a una superficie de diseo para crear reportes bsicos,
guardar archivos de definicin de reportes en el servidor y modificar los
reportes. Los reportes ad hoc requieren modelos de informe predefinidos que
se creen con un diseador de modelos y se publiquen despus en el servidor
de reportes para usarlos en la organizacin.
Elaboracin de reportes incrustados
Un programador, puede utilizar Reporting Services para proporcionar
caractersticas de elaboracin de reportes a su aplicacin. Para algunas
aplicaciones, la adicin de reportes completa un conjunto de caractersticas
proporcionando un modo de presentar datos de los que la aplicacin
mantiene un seguimiento, crea o supervisa. Se puede utilizar el Diseador de
reportes para crear reportes basados en un origen de datos de su aplicacin
o que est disponible pblicamente.
Se puede utilizar la API para definir el acceso y agregar compatibilidad con
las caractersticas de servidor de reportes integradas que se desee incluir en
una aplicacin. Como parte de la implementacin de la aplicacin, se debe
incluir un servidor de reportes y la base de datos del servidor de reportes que
contenga reportes y otros metadatos. En tiempo de ejecucin, cuando el
usuario solicita un informe, el cdigo de la aplicacin llama al servicio Web
del servidor de reportes, que despus recupera la definicin de informe de la
base de datos del servidor de reportes y procesa el informe con los datos
ms recientes.
Como alternativa, si la aplicacin no requiere todas las caractersticas
proporcionadas en el servidor de reportes, puede utilizar los controles
ReportViewer que incluye Microsoft Visual Studio 2005. A diferencia de
Reporting Services, los controles ReportViewer se distribuyen gratuitamente
con la aplicacin.

Pgina 576 de 630

Integracin de portales
Puesto que los reportes pueden acomodar y presentar datos de una gran
variedad de orgenes, muchas organizaciones utilizan las caractersticas de
elaboracin de reportes interactivas de Reporting Services para distribuir
datos tabulares o grficos en aplicaciones de portal. Se puede alojar reportes
en una pgina de portal o crear un informe que refleje una aplicacin Web
con estilo de panel incrustando varios reportes, imgenes y grficos
controlados por datos en un solo diseo de informe de forma libre. Siempre
que se necesite incorporar datos tabulares o de grficos en una aplicacin de
lnea de negocio, considere la adicin de un informe en su lugar.
Elaborar reportes para Internet
Puede crear reportes que estn disponibles para aquellos empleados que
trabajen fuera o en oficinas regionales implementando un servidor de
reportes en un servidor Web para Internet. Tenga en cuenta que la
implementacin de reportes en Internet suele requerir la creacin de una
extensin de seguridad personalizada que permita autenticacin basada en
formularios. Se requieren conocimientos en seguridad para Web,
implementacin en Internet y programacin para escribir las extensiones
necesarias.
Generar herramientas personalizadas de diseo y administracin de
reportes
Las herramientas y aplicaciones de que dispone Reporting Services se basan
en interfaces de programacin disponibles para todos los usuarios. Esto
significa que es posible reemplazar las aplicaciones y herramientas incluidas
en Reporting Services por un conjunto de herramientas personalizadas que
se cree ad hoc. Por ejemplo, si se desea una alternativa al entorno de
creacin de Visual Studio utilizado por el Diseador de reportes, se puede
desarrollar una herramienta de elaboracin de reportes personalizada para
reemplazarlo. Para generar una herramienta de administracin de reportes o
un portal Web personalizados, se debe revisar la API para conocer las
funciones de administracin del servidor de reportes que debe permitir.
Reporting Services incluye un proveedor WMI (Instrumental de administracin
de Windows) que se puede usar para desarrollar herramientas basadas en
Windows utilizadas para la administracin de servidores.
Ampliar la funcionalidad de Reporting Services
Reporting Services est diseado para poderse ampliar. Se pueden crear
extensiones personalizadas para admitir otros tipos de orgenes de datos,
mtodos de entrega, modelos de seguridad y elementos de informe. Cuando
se crean extensiones personalizadas, el grado de dificultad puede variar
considerablemente dependiendo del tipo de extensin que se cree y de la
funcionalidad que debe proporcionar. Las extensiones de procesamiento de
datos suelen ser las ms fciles de crear, mientras que las extensiones de
representacin pueden resultar muy difciles si se crean para admitir todo el
esquema del informe.

Pgina 577 de 630

Crear reportes
Para crear un informe, se debe crear una definicin de informe mediante el
Diseador de reportes o el Generador de reportes. La herramienta de
creacin que se utilice depende de los requisitos del informe y del nivel de
conocimiento del usuario sobre tcnicas de creacin de reportes.
El Diseador de reportes es una herramienta de creacin de
reportes completa que se ejecuta en Business Intelligence
Development Studio. Para utilizarla, se debe conocer cmo
conectarse a un origen de datos, generar consultas y establecer
propiedades. Se puede utilizar el Diseador de reportes para crear
reportes simples o reportes complejos que incluyan expresiones y
ensamblados personalizados para hacerlos compatibles con una
funcionalidad personalizada. Se puede utilizar el Asistente para
reportes para crear un informe y luego modificarlo, o generarlo a
partir de cero mediante una plantilla de proyecto del servidor de
reportes.
El Generador de reportes proporciona reportes ad hoc sobre datos
relacionales y multidimensionales mediante orgenes de datos de
modelo. Est destinado a usuarios que desean crear reportes
bsicos fcilmente sin escribir consultas. El Generador de
reportes utiliza modelos y plantillas de informe predefinidos que
administran conexiones de datos, consultas y relaciones de datos
de modo que los usuarios slo deban arrastrar y colocar campos
de datos en una plantilla para crear reportes tabulares o de matriz.
Nota: Se deben crear reportes en un equipo cliente, distinto del servidor de
reportes. Una vez que el informe tenga el aspecto deseado, puede publicarlo
en un servidor de reportes, donde estar disponible para su uso
generalizado. Para crear un informe, se deben seguir los siguientes pasos:
Conectarse a un origen de datos y recuperar datos. Se puede
hacer mediante cadenas de conexin y consultas, o bien, creando
un modelo de informe que especifique los datos con los que
desea trabajar.
Crear un diseo de informe. El Generador de reportes proporciona
plantillas que realizan estos pasos. El Generador de reportes
proporciona un cuadro de herramientas y una superficie de diseo
para que se puedan combinar tablas, matrices, grficos,
elementos grficos y otros elementos como se desee.
Obtener una vista previa del informe para ver los datos y el diseo
juntos y, a continuacin, publicar el informe en un servidor de
reportes.

Administrar reportes y otros elementos


Una de las principales ventajas de utilizar Reporting Services es la posibilidad
de administrar reportes y elementos relacionados, como carpetas,
conexiones de orgenes de datos y recursos, desde una ubicacin
centralizada. Se puede definir la seguridad, establecer propiedades y
Pgina 578 de 630

programar operaciones. Tambin se puede crear programaciones


compartidas y orgenes de datos compartidos, y ponerlos a disposicin de
todos los usuarios. Para administrar reportes y el entorno de reportes, se
debe utilizar SQL Server Management Studio o el Administrador de reportes.
La administracin de reportes comprende las siguientes tareas:
Organizar el entorno de reportes agregando nuevas carpetas para
almacenar colecciones de reportes.
Habilitar caractersticas como Mis reportes, el historial del informe
y la entrega de reportes por correo electrnico.
Proteger el acceso a carpetas e reportes mediante la asignacin
de usuarios y grupos a funciones.
Generar las programaciones compartidas y los orgenes de datos
compartidos que desea poner a disposicin de todos los usuarios.
Tanto los usuarios como los administradores del servidor de reportes pueden
administrar reportes, pero no del mismo modo. Los usuarios pueden publicar
y administrar reportes en un rea de trabajo personal denominado Mis
reportes. Los administradores del servidor de reportes pueden administrar el
espacio de nombres completo de carpetas del servidor de reportes. La
posibilidad de realizar tareas de administracin depende de los permisos de
usuario.
Obtener acceso a reportes y entregarlos
Reporting Services ofrece dos mtodos para obtener acceso a los reportes y
entregarlos:
El acceso a peticin permite a los usuarios seleccionar los
reportes desde una herramienta de visualizacin de reportes. Se
puede utilizar el Administrador de reportes, una parte de Microsoft
SharePoint Web o un explorador.
El acceso basado en suscripciones genera y entrega reportes
automticamente a un destino. Puede entregar reportes a una
bandeja de entrada de correo electrnico o a un recurso
compartido de archivos.
Para ver un informe a peticin, se puede buscar o seleccionar un informe de
una jerarqua de carpetas, denominada espacio de nombres de carpetas del
servidor de reportes. Para recibir reportes automticamente, puede
suscribirse a un informe especfico. Cuando se ejecuta el informe, el usuario
recibe una notificacin que le indica que el informe est disponible o recibe
una copia del mismo en un mensaje de correo electrnico.
Los administradores del servidor de reportes pueden generar suscripciones
controladas por datos que proporcionan datos a un grupo numeroso de
personas. Las suscripciones controladas por datos generan una lista de
destinatarios en tiempo de ejecucin. En una suscripcin controlada por
datos, la configuracin de entrega se genera a partir de los datos
almacenados (por ejemplo, los de una base de datos de empleados) cuando
se desencadena la suscripcin.
Reporting Services es compatible con varios formatos de visualizacin. Al
principio los reportes se muestran en formato HTML, pero, una vez
representado un informe, se puede volver a mostrar en un formato diferente
como Excel o PDF.

Pgina 579 de 630

Caractersticas
SQL Server Reporting Services proporciona un servidor de nivel medio que
se ejecuta en Microsoft Internet Information Services (IIS) y permite generar
un entorno de reportes sobre una infraestructura de servidores Web
existente. Se puede generar reportes que extraigan datos de los servidores
de datos que se disponga para cualquier tipo de origen de datos que tenga
un proveedor de datos administrados con Microsoft .NET Framework, un
proveedor OLE DB o un origen de datos ODBC. Se puede generar una gran
variedad de reportes que combinen los puntos fuertes de las caractersticas
basadas en Web y de los reportes convencionales. Se puede crear reportes
interactivos, tabulares o de forma libre que recuperen datos a intervalos
programados o a peticin, cuando el usuario abre un informe. Los reportes de
matriz pueden resumir datos para realizar revisiones de alto nivel, a la vez
que ofrecen detalles adicionales en reportes de obtencin de detalles. Se
pueden utilizar reportes con parmetros para filtrar datos basados en valores
que se proporcionan en tiempo de ejecucin. Los reportes se pueden
representar con formatos de escritorio o basados en Web. Se puede elegir
entre diversos formatos de visualizacin para representar los reportes a
peticin en los formatos preferidos para la manipulacin o impresin de
datos. Reporting Services se basa en un servidor y, por lo tanto, proporciona
un modo de centralizar el almacenamiento y la administracin de reportes,
proporcionar acceso seguro a reportes y carpetas, controlar el procesamiento
y la distribucin de reportes, y normalizar el uso de los reportes en la
empresa. Reporting Services puede configurarse para proporcionar una gran
disponibilidad. Puede instalar servidores de reportes en configuraciones de
servidor nico, distribuidas y agrupadas.
Este tema describe las ventajas de las caractersticas de diseo y definicin,
configuracin e implementacin, acceso y entrega, y programacin de
reportes de Reporting Services. Los programadores que deseen incrustar
funcionalidad de reportes en aplicaciones Web o de Windows pueden
considerar los controles ReportViewer como una solucin alternativa de
reportes.
Caractersticas de reportes
Orgenes de datos relacionales, multidimensionales y XML.
Se puede crear reportes que utilicen datos relacionales y
multidimensionales procedentes de SQL Server y Analysis
Services. Tambin se puede utilizar proveedores de datos de .NET
Framework para obtener datos de Oracle y otras bases de datos.
Los proveedores ODBC y OLE DB tambin son compatibles. Se
puede utilizar una extensin de procesamiento de datos XML para
recuperar datos desde cualquier origen de datos XML.
Diseos de reportes tabulares, matriciales, de grficos y de
forma libre. Se puede generar reportes tabulares para datos
basados en columnas, reportes matriciales para datos resumidos,
reportes de grficos para datos grficos e reportes de forma libre
para todos los dems tipos de datos. El diseo de forma libre se
basa en regiones de datos, que contienen los controles y campos
Pgina 580 de 630

en un contenedor que se puede mover, anidar o disponer al lado


de otro contenedor. Puede combinar informacin tabular, de matriz
y grfica en un nico informe.
Reportes ad hoc. Se puede crear y guardar reportes
directamente en un servidor de reportes utilizando la aplicacin
ClickOnce denominada Generador de reportes. Los reportes ad
hoc se admiten mediante un cliente ligero que se descarga desde
el servidor de reportes.
Reportes de obtencin de detalles e interactividad. Se pueden
agregar caractersticas interactivas proporcionando vnculos a
reportes relacionados y a reportes con informacin adicional. Se
pueden agregar expresiones de secuencias de comandos en
Microsoft Visual Basic.
Reportes con parmetros. Se pueden agregar parmetros para
precisar una consulta o filtrar un conjunto de datos. Los
parmetros dinmicos obtienen valores en tiempo de ejecucin
basndose en las opciones que elija el usuario (la eleccin de un
parmetro genera la lista de valores de un segundo parmetro).
Formatos de presentacin. Se debe elegir un formato de
presentacin al abrir el informe o una vez que lo haya abierto. Se
puede elegir entre formatos orientados a Web o a pgina, o
formatos de aplicaciones de escritorio. Estos formatos incluyen
HTML, MHTML, PDF, XML, CSV, TIFF y Excel.
Elementos de informe o controles personalizados. Se puede
incrustar elementos de informe o controles personalizados que
haya creado o comprado de otro fabricante. Un control
personalizado requiere una extensin de procesamiento de
reportes personalizada.
Exploracin. Se puede agregar marcadores y mapas de
documento para proporcionar opciones de exploracin en reportes
de gran tamao.
Agregaciones. Se puede agregar y resumir datos mediante
controles y expresiones. Entre las agregaciones se incluyen:
suma, promedio, mnimo, mximo, recuento y totales acumulados.
Elementos grficos. Se puede incrustar o hacer referencia a
imgenes y a otros recursos que contengan contenido externo.
Diseador de reportes. Se debe crear reportes en una completa
aplicacin de creacin de reportes que se aloja en Business
Intelligence Development Studio. Se puede utilizar el Diseador
de reportes para trabajar con datos, definir un diseo, obtener una
vista previa de un informe y publicar un informe en un servidor de
prueba o produccin. El Diseador de reportes incluye
generadores de consultas, un editor de expresiones y asistentes
que permiten seguir instrucciones paso a paso para crear un
informe. El Diseador de reportes tambin admite caractersticas
avanzadas para los reportes tiles para los diseadores de
reportes profesionales que comprenden lenguajes de consulta y
lenguajes de expresin.
Diseador de modelos. Se pueden crear modelos que admitan
reportes ad hoc en Reporting Services. Puede generar modelos
Pgina 581 de 630

automticamente a partir de un esquema o vista existente,


perfeccionar el modelo y, a continuacin, publicarlo en un servidor
de reportes.
Generador de reportes. Se pueden crear reportes ad hoc
mediante plantillas y datos previamente organizados, y gurdelos
directamente en un servidor de reportes. Se puede obtener
acceso a los reportes que cree con el Generador de reportes,
distribuirlos y administrarlos del mismo modo que lo hara con
cualquier otro informe.
Implementacin y administracin
Configuracin de Reporting Services. Se debe implementar y
mantener un servidor de reportes existente mediante una interfaz
grfica de usuario para configurar cuentas de servicio, directorios
virtuales, bases de datos del servidor de reportes, claves de
cifrado e implementacin de conjuntos de servidores Web.
Administrador de reportes. Se debe configurar seguridad
basada en funciones y administre el contenido del servidor de
reportes mediante el establecimiento de propiedades en orgenes
de datos, reportes, carpetas, recursos y modelos de informe. Se
puede configurar la ejecucin de reportes y el historial del informe,
y establecer lmites sobre el tiempo de procesamiento; supervisar
y cancelar reportes pendientes o en curso; y crear y administrar
conexiones de orgenes de datos y programaciones
independientemente de los reportes a los que estn asociadas.
Integracin con las herramientas SQL Server Management
Studio, Administrador de configuracin de SQL Server y
Configuracin de superficie. Los administradores del servidor
de reportes pueden utilizar las herramientas que se suministran
con SQL Server 2005 para administrar una instalacin de
Reporting Services. Pueden registrar secuencias de comandos en
Management Studio para reproducir tareas de mantenimiento de
rutina en otros servidores de reportes.
Utilidades de la lnea de comandos. Las utilidades de la lnea de
comandos admiten operaciones de configuracin del servidor de
reportes, administracin de claves y de secuencias de comandos.
Seguridad basada en funciones. Se debe utilizar la seguridad
basada en funciones para controlar el acceso a carpetas, reportes
y recursos. La configuracin de seguridad sigue un patrn de
herencia en la estructura de carpetas. Puede modificar la
seguridad en cualquier rama para cambiar la definicin de acceso
al nivel de elemento de los usuarios.
Caractersticas de acceso y entrega de reportes
Acceso a peticin mediante conexiones Web. Se pude utilizar
un explorador para desplazarse por una jerarqua de carpetas a
fin de buscar y trabajar con reportes y otros elementos. Se puede

Pgina 582 de 630

hacer referencia a los reportes desde la lista Favoritos del


explorador Web crear un vnculo desde un portal Web.
Partes de SharePoint Web. Reporting Services proporciona dos
partes Web para ver reportes y desplazarse por carpetas del
servidor de reportes. Se puede incrustar las partes Web en el sitio
Microsoft SharePoint Portal para integrarlas fcilmente con una
implementacin del servidor de reportes.
Mis reportes y Mis suscripciones. En el Administrador de
reportes, se pueden almacenar y administrar reportes y
suscripciones en un rea de trabajo personal.
Suscripciones para entrega por correo electrnico o a
recursos compartidos de archivos. Se puede entregar reportes
automticamente mediante una suscripcin estndar y establezca
preferencias de presentacin de reportes. Los usuarios que
deseen ver un informe en Microsoft Excel, por ejemplo, pueden
especificar este formato en una suscripcin. Se puede entregar un
informe representado en una bandeja de entrada de correo
electrnico. Para ello se deben establecer las opciones de entrega
que controlan si el informe se entrega como vnculo o como datos
adjuntos. Se debe entregar un informe representado en una
carpeta compartida, estableciendo las opciones de entrega que
controlan si el informe se sobrescribe o se agrega a una carpeta
existente.
Suscripciones controladas por datos. La distribucin de
reportes se automatiza mediante suscripciones controladas por
datos, que generan una lista de destinatarios e instrucciones de
entrega en tiempo de ejecucin desde un origen de datos externo.
Utilizando una consulta e informacin de asignacin de columnas
para personalizar la salida del informe para un nmero elevado de
usuarios.
Programacin y extensibilidad
Lenguaje RDL (Report Definition Language). RDL describe
todos los elementos posibles de un informe mediante una
gramtica XML que se valida con un esquema XML. La definicin
de un informe concreto se basa en el lenguaje RDL y contiene
instrucciones para representar el diseo en tiempo de ejecucin.
RDL es extensible. Puede agregar compatibilidad con elementos o
caractersticas que no se encuentren en el esquema RDL
existente y, a continuacin, generar herramientas personalizadas y
extensiones de representacin de reportes para controlar las
caractersticas que cree.
API de SOAP. Los mtodos del servicio Web del servidor de
reportes se pueden utilizar para obtener acceso mediante
programacin a un servidor de reportes y al servicio Web del
servidor de reportes.
Acceso mediante direcciones URL. Se puede tener acceso a
elementos del servidor de reportes mediante cadenas de
direcciones URL con parmetros. Todos los reportes y los
Pgina 583 de 630

elementos almacenados en un servidor de reportes pueden tener


direcciones del espacio de nombres del servidor de reportes.
Proveedor WMI. Reporting Services incluye un proveedor de
Instrumental de administracin de Windows (WMI) que se puede
utilizar para administrar el servicio de Windows del servidor de
reportes.
Entrega extensible, procesamiento de datos, representacin,
seguridad y procesamiento de reportes. Se pueden crear
extensiones de entrega personalizadas para enrutar reportes a
recursos compartidos de archivos, almacenes de archivo internos
o aplicaciones internas. Se puede ampliar el procesamiento de
datos para consultar, convertir o transformar datos procedentes de
nuevos tipos de orgenes de datos. Se puede crear extensiones
de representacin personalizadas para admitir la representacin
de reportes con formatos de aplicacin o formatos orientados a
Web que no se proporcionan con el producto. Se puede generar o
integrar una extensin de seguridad que proporcione una
alternativa al modelo de autenticacin de Windows.

Conceptos
La siguiente lista define brevemente los principales trminos que se utilizan
en la documentacin de Reporting Services..
Definicin de informe: Esbozo de un informe antes de que dicho informe se
procese o se represente. Una definicin de informe contiene informacin
sobre la consulta y el diseo del informe.
Instantnea de informe: Informe que contiene los datos capturados en un
momento concreto en el tiempo. Una instantnea de informe es, en realidad,
una definicin de informe que contiene un conjunto de datos en lugar de
instrucciones de consulta.
Informe representado: Informe totalmente procesado que contiene datos e
informacin de diseo, en un formato que permite su visualizacin (por
ejemplo, HTML).
Informe con parmetros: Informe publicado que acepta valores de entrada
mediante parmetros.
Origen de datos compartido: Elemento independiente predefinido que
contiene informacin de conexin del origen de datos.
Programacin compartida: Elemento independiente predefinido que
contiene informacin de programacin.
Origen de datos especfico del informe: Informacin del origen de datos
definida en una definicin de informe.
Modelo de informe: Descripcin semntica de datos empresariales que se
utiliza para reportes ad hoc creados en el Generador de reportes.
Informe vinculado: Informe que obtiene su definicin a travs de un vnculo
con otro informe.
Administrador del servidor de reportes: Este trmino se utiliza en la
documentacin para describir a un usuario con privilegios elevados que tiene
acceso a todas las configuraciones y al contenido de un servidor de reportes.
Si usa las funciones predeterminadas, el administrador de un servidor de
Pgina 584 de 630

reportes suele ser un usuario asignado a las funciones Administrador de


contenido y Administrador del sistema. Los administradores locales tienen
permisos elevados incluso si no se han definido para ellos las asignaciones
de funciones.
Jerarqua de carpetas: Espacio de nombres delimitado que identifica de
manera exclusiva todos los reportes, carpetas, modelos de informe,
elementos de orgenes de datos compartidos y recursos almacenados y
administrados en un servidor de reportes.

Arquitectura del SQL Server Reporting Server


SQL Server Reporting Services es un conjunto de componentes de
procesamiento, herramientas e interfaces de programacin que permiten el
desarrollo y la utilizacin de reportes completos en un entorno administrado.
El conjunto de herramientas incluye herramientas de desarrollo, de
configuracin y de administracin as como herramientas de visualizacin de
reportes. Las interfaces de programacin incluyen el protocolo simple de
acceso a objetos (SOAP), los extremos de direcciones URL e Instrumental de
administracin de Windows (WMI), para permitir una fcil integracin con
aplicaciones y portales nuevos o existentes.
El procesamiento se distribuye en mltiples componentes. Para recuperar
datos, procesar el diseo de los reportes, representar los formatos de
presentacin y entregar en destinos especficos se utilizan procesadores
centralizados y especializados. El procesamiento de una presentacin tiene
lugar despus de recuperar los datos y es independiente del procesamiento
de los datos, lo que permite a diversos usuarios consultar el mismo informe
simultneamente en formatos diseados para distintos servicios o cambiar
inmediatamente el formato de visualizacin del informe, de HTML a PDF, a
Microsoft Excel o a XML, con un solo clic. La arquitectura modular se ha
diseado para permitir ampliaciones. Los programadores pueden incluir
funciones de reportes en aplicaciones personalizadas o ampliar la
funcionalidad para hacerla compatible con caractersticas personalizadas.
El diagrama siguiente muestra los componentes y las herramientas de
Reporting Services. El diagrama tambin muestra cmo se adaptan las
herramientas personalizadas al diseo global. Presenta el flujo de solicitudes
y datos entre componentes del servidor y los componentes que envan y
recuperan contenido de un almacn de datos.

Pgina 585 de 630

Diagrama de la arquitectura de Reporting Services

Report Server
El servidor de reportes es el componente principal de Reporting Services. El
servidor de reportes se implementa como un servicio de Microsoft Windows y
como un servicio Web que proporciona una infraestructura de procesamiento
optimizada y en paralelo para el procesamiento y la representacin de
reportes. El servicio Web presenta un conjunto de interfaces de programacin
que las aplicaciones cliente pueden utilizar para obtener acceso a servidores
de reportes. El servicio de Windows proporciona servicios de inicializacin,
programacin y entrega, as como mantenimiento del servidor. Los servicios
funcionan conjuntamente y constituyen una nica instancia del servidor de
reportes.
A travs de sus subcomponentes, el servidor de reportes procesa solicitudes
de reportes y permite que los reportes estn disponibles para el acceso a
peticin o la distribucin programada. Los subcomponentes del servidor de
reportes incluyen procesadores y extensiones. Los procesadores son el
concentrador del servidor de reportes. Los procesadores admiten la
integridad del sistema de reportes y no se pueden modificar ni ampliar. Las
extensiones tambin son procesadores, pero realizan funciones muy
especficas. Reporting Services incluye una o varias extensiones
Pgina 586 de 630

predeterminadas para cada tipo de extensin que se admite. Los


programadores de otros fabricantes pueden crear extensiones adicionales
para reemplazar o ampliar la capacidad de procesamiento del servidor de
reportes.
Procesadores
El servidor de reportes incluye dos procesadores que realizan el
procesamiento de reportes previo e intermedio, as como operaciones
programadas y de entrega. El Procesador de reportes recupera la definicin o
el modelo de informe, combina informacin de diseo con datos de la
extensin de procesamiento de datos y representa el informe en el formato
solicitado. El Procesador de entrega y programacin procesa reportes
desencadenados a partir de una programacin y los entrega a destinos.
Almacenamiento de datos
El servidor de reportes es un servidor sin estado que almacena todas las
propiedades, los objetos y los metadatos en una base de datos de SQL
Server. Los datos almacenados incluyen reportes publicados, modelos de
informe y la jerarqua de carpetas que proporciona el direccionamiento de
todos los elementos que administra el servidor de reportes. Una base de
datos del servidor de reportes puede proporcionar almacenamiento interno
para una nica instalacin de Reporting Services o para varios servidores de
reportes que formen parte de la implementacin escalada.
Extensiones
El servidor de reportes admite extensiones de autenticacin personalizadas,
extensiones de procesamiento de datos, extensiones de procesamiento de
reportes, extensiones de representacin y extensiones de entrega. Un
servidor de reportes requiere al menos una extensin de autenticacin, una
extensin de procesamiento de datos y una extensin de representacin. Las
extensiones de procesamiento de reportes personalizadas y de entregas son
opcionales, pero necesarias si desea admitir controles personalizados o de
distribucin de reportes.
Extensiones de seguridad
Las extensiones de seguridad se utilizan para autenticar y autorizar
usuarios y grupos para un servidor de reportes. La extensin de
seguridad predeterminada se basa en la autenticacin de Windows.
Tambin se puede crear una extensin de seguridad personalizada
para reemplazar la seguridad predeterminada si el modelo de
implementacin requiere un enfoque de autenticacin diferente (por
ejemplo, si se requiere autenticacin basada en formularios para la
implementacin de Internet o extranet). Slo puede utilizarse una
extensin de seguridad en una nica instalacin de Reporting
Services. Se puede reemplazar la extensin de seguridad de
autenticacin predeterminada de Windows, pero no utilizarla junto con
una extensin de seguridad personalizada.

Pgina 587 de 630

Extensiones de procesamiento de datos


Las extensiones de procesamiento de datos se utilizan para consultar
un origen de datos. Y cuando esto sucede, devuelven un conjunto de
filas planas. Reporting Services utiliza diferentes extensiones para
interactuar con distintos tipos de orgenes de datos. Se puede utilizar
las extensiones que se incluyen en Reporting Services o desarrollar
extensiones propias. Se proporcionan extensiones de procesamiento
de datos para orgenes de datos ODBC, SQL Server, Analysis
Services, Oracle y OLE DB. Reporting Services puede utilizar tambin
cualquier proveedor de datos de ADO.NET. Las extensiones de
procesamiento de datos procesan las solicitudes de consulta del
Procesador de reportes por medio de las siguientes tareas:
Abrir una conexin con un origen de datos.
Analizar una consulta y devolver una lista de nombres de campo.
Ejecutar una consulta en el origen de datos y devolver un conjunto
de filas.
Pasar parmetros a una consulta, si es necesario.
Establecer una iteracin en el conjunto de filas y recuperar datos.
Algunas extensiones tambin pueden realizar las siguientes
tareas:
Analizar una consulta y devolver una lista de los nombres de
parmetro utilizados en la consulta.
Analizar una consulta y devolver la lista de campos utilizados para
la agrupacin.
Analizar una consulta y devolver la lista de campos utilizados para
la ordenacin.
Proporcionar un nombre de usuario y una contrasea para
conectar con el origen de datos.
Pasar parmetros con varios valores a una consulta.
Establecer iteraciones en las filas y recuperar metadatos
auxiliares.

Extensiones de representacin
Las extensiones de representacin convierten los datos y la
informacin de diseo del Procesador de reportes en el formato
especfico de un dispositivo. Reporting Services incluye seis
extensiones de representacin: HTML, Excel, CSV, XML, imagen y
PDF.
Extensin de representacin en HTML. Cuando se solicita un
informe del servidor de reportes a travs de un explorador Web, el
servidor de reportes utiliza la extensin de representacin en HTML
para representar el informe. La extensin de representacin en
HTML genera todo el lenguaje HTML mediante codificacin UTF-8.
Extensin de representacin en Excel. La extensin de
representacin en Excel produce reportes que se pueden ver y
modificar en Microsoft Excel 97 o posterior. Esta extensin de
representacin crea archivos BIFF (Formato de archivo de

Pgina 588 de 630

intercambio binario). BIFF es el formato de archivo nativo para


datos de Excel. Los reportes que se representan en Microsoft Excel
admiten todas las caractersticas disponibles para una hoja de
clculo.
Extensin de representacin en CSV. La extensin de
representacin en CSV (Valores separados por comas) produce
reportes como archivos de texto sin formato delimitados por comas.
Los usuarios pueden abrir estos archivos en una aplicacin de hoja
de clculo, como Microsoft Excel, o en cualquier otro programa que
pueda leer archivos de texto.

Extensin de representacin en XML. La extensin de


representacin en XML produce reportes en archivos XML. Otros
programas pueden almacenar o leer estos archivos XML. Tambin
se puede utilizar una transformacin de XSLT para convertir el
informe a otro esquema XML y poder utilizarlo con otra aplicacin.
El lenguaje XML que genera la extensin de representacin en
XML tiene la codificacin UTF-8.

Extensin de representacin en imgenes. La extensin de


representacin en imgenes produce reportes en mapas de bits o
metarchivos. Esta extensin puede representar reportes en los
formatos siguientes: BMP, EMF, GIF, JPEG, PNG, TIFF y WMF.
De forma predeterminada, la imagen se representa en formato
TIFF, que se puede mostrar en el visor de imgenes
predeterminado del sistema operativo (por ejemplo, Visor de
imgenes y fax de Windows). Desde el visor, puede enviar la
imagen a una impresora. El uso de la extensin de representacin
en imgenes para producir reportes garantiza que el informe tenga
la misma apariencia en todos los clientes. Si un usuario ve un
informe en HTML, la apariencia del informe puede variar
dependiendo de la versin del explorador que tenga el usuario, la
configuracin del explorador y las fuentes disponibles. La extensin
de representacin en imgenes representa el informe en el
servidor, de forma que todos los usuarios vean la misma imagen.
Puesto que el informe se representa en el servidor, todas las
fuentes utilizadas en el informe tienen que estar instaladas en el
servidor.

Extensin de representacin en PDF. La extensin de


representacin en PDF representa reportes en archivos PDF que
se pueden abrir y visualizar con Adobe Acrobat 6.0 o posterior.

Pgina 589 de 630

Extensiones de procesamiento de reportes


Se pueden agregar extensiones de procesamiento de reportes para
proporcionar un procesamiento de reportes personalizado para los
elementos de informe que no se incluyen en Reporting Services. De
forma predeterminada, un servidor de reportes puede procesar tablas,
grficos, matrices, listas, cuadros de texto, imgenes. Si desea
agregar caractersticas especiales a un informe que requiere un
procesamiento personalizado durante la ejecucin de informe (por
ejemplo, si desea incrustar una asignacin de Microsoft MapPoint),
puede crear una extensin de procesamiento de reportes para hacerlo.

Extensiones de entrega
Reporting Services contiene una extensin de entrega por correo
electrnico y una extensin de entrega a recursos compartidos de
archivos. La extensin de entrega por correo electrnico enva un
mensaje de correo electrnico mediante el Protocolo simple de
transferencia de correo (SMTP) que contenga el informe o un vnculo
de direccin URL al informe. Tambin se pueden enviar avisos cortos
sin el vnculo a una direccin URL ni el informe a localizadores,
telfonos u otros dispositivos. La extensin de entrega a recursos
compartidos de archivos guarda reportes en una carpeta compartida
en la red. Se puede especificar la ubicacin, el formato de
representacin, el nombre de archivo y las opciones de sobrescritura
del archivo que se crea. Tambin puede utilizar la entrega a recursos
compartidos de archivos para archivar reportes representados y como
parte de una estrategia de trabajo con reportes de gran tamao. Las
extensiones de entrega funcionan conjuntamente con las
suscripciones. Cuando un usuario crea una suscripcin, elige una de
las extensiones de entrega disponibles para determinar cmo se
entrega el informe.

Pgina 590 de 630

Integracin con SQL Server 2005


SQL Server 2005 Reporting Services ofrece dos modelos de implementacin:
Una implementacin estndar consiste en una instancia de
servidor de reportes que utiliza un motor de base de datos de SQL
Server local o remoto para alojar la base de datos del servidor de
reportes. Se puede utilizar SQL Server 2000 o SQL Server 2005
para alojar la base de datos del servidor de reportes.
Una implementacin escalada consiste en varios servidores de
reportes que comparten una sola base de datos del servidor de
reportes. La base de datos se puede instalar en una instancia
remota de SQL Server o localmente en uno de los servidores de
reportes. La instancia de SQL Server que aloja la base de datos
del servidor de reportes puede ser parte de un clster de
conmutacin por error.
Las siguientes ediciones son compatibles con la implementacin
escalada: Enterprise Edition, Developer Edition y Evaluation Edition.

Implementacin estndar
El siguiente diagrama muestra el modelo de implementacin estndar, con la
base de datos de servidor de reportes ubicada en un servidor remoto.
Tambin puede instalarla localmente para que todos los componentes de
servidor estn en el mismo equipo.

Las principales consideraciones al elegir dnde alojar la base de datos del


servidor de reportes son:
Recursos de procesamiento
Disponibilidad de espacio en disco

Pgina 591 de 630

El servidor de reportes y el motor de base de datos compiten por recursos de


procesamiento como el tiempo de CPU, la memoria y el acceso al disco.
Algunas operaciones de servidor de reportes consumen gran cantidad de
recursos. Por ejemplo, un servidor de reportes intenta utilizar toda la memoria
disponible para operaciones de representacin de reportes. La competicin
por los recursos de procesamiento se puede reducir si el servidor de reportes
se ejecuta en un equipo independiente.
Los requisitos de espacio en disco del servidor de reportes son la segunda
razn por la que se debe utilizar un motor de base de datos de SQL Server
remoto para almacenar datos del servidor de reportes. Aunque el volumen de
una base de datos de servidor de reportes puede ser reducido al principio, los
requisitos de espacio en disco pueden aumentar notablemente en tiempo de
ejecucin en funcin de cmo ejecute los reportes y del nmero de usuarios
que tengan acceso al servidor de reportes.
Implementacin escalada
Se puede implementar Reporting Services de forma escalada para crear una
instalacin de servidor de reportes altamente disponible y escalable.
Configurar una implementacin escalada tambin puede ser de utilidad si se
desea mejorar el rendimiento de las operaciones programadas y la entrega
de suscripciones. Una implementacin escalada de servidor de reportes
consta de varios servidores de reportes que comparten una sola base de
datos de servidor de reportes. Cada servidor de reportes de la
implementacin se denomina nodo. Los nodos participan en la
implementacin escalada si el servidor de reportes se configura para utilizar
la misma base de datos que otro servidor de reportes.
Es posible equilibrar la carga de los nodos de servidor para admitir un gran
volumen de reportes. Asimismo, la base de datos del servidor de reportes se
puede crear en un clster de conmutacin por error si es necesario cumplir
requisitos de alta disponibilidad.
Entre las configuraciones de clster que no se admiten se encuentra la
implementacin de una instalacin de servidor de reportes completa, es decir,
un servidor de reportes y su base de datos, en cada nodo de un clster de
varios nodos. Concretamente, no se puede implementar Reporting Services
en un clster de dos nodos formado por un nodo activo y un nodo pasivo que
se utiliza cuando se produce un error en el nodo activo.

Pgina 592 de 630

Diagrama de implementacin escalada


El siguiente diagrama muestra varios servidores de reportes y bases de datos
de servidor de reportes implementados en clsteres de servidores distintos.

Crear una base de datos de servidor de reportes


Reporting Services utiliza dos bases de datos relacionales de SQL Server
para almacenar metadatos y objetos de servidor de reportes. Una base de
datos se utiliza para el almacenamiento principal y la otra para almacenar
datos temporales. Las bases de datos se crean juntas y se enlazan mediante
el nombre. De manera predeterminada, las bases de datos se denominan
reportserver y reportservertempdb. Colectivamente, ambas se conocen
como "base de datos del servidor de reportes" o "catlogo del servidor de
reportes". Para alojar las bases de datos se puede utilizar SQL Server 2000 o
SQL Server 2005.
Importante:
No debe escribir aplicaciones que ejecuten consultas en la base de datos del
servidor de reportes. La base de datos del servidor de reportes no es un
esquema pblico. La estructura de tablas puede cambiar de una versin a la
siguiente. Si se escribe una aplicacin que necesita acceso a la base de datos
del servidor de reportes, se debe utilizar las API de Reporting Services para
obtener acceso.
Mtodos para crear la base de datos del servidor de reportes
Se puede crear la base de datos del servidor de reportes de varias formas:
Automticamente con el programa de instalacin, si elige la
opcin de instalacin de configuracin predeterminada. En el
Asistente para la instalacin de SQL Server, sta es la opcin
Instalar la configuracin predeterminada en la pgina Opciones de
instalacin del servidor de reportes. Si elige la opcin Instalar,
pero no configurar, debe utilizar la herramienta de configuracin
de Reporting Services para crear la base de datos.
Manualmente, con la herramienta de configuracin de Reporting
Services.
Pgina 593 de 630

Se puede crear una base de datos del servidor de reportes en una


instancia de motor de base de datos de SQL Server local o remota. Para
crear la base de datos de servidor de reportes en un equipo remoto es
preciso que se configure la conexin para utilizar una cuenta de usuario
de dominio o una cuenta de servicio que tenga acceso a la red. Si se
decide utilizar una instancia de SQL Server remota, considerese
detenidamente qu credenciales debe utilizar el servidor de reportes
para conectarse a dicha instancia.
Importante:
El servidor de reportes y la instancia de SQL Server que aloja la base de
datos del servidor de reportes pueden estar en dominios diferentes. Para la
implementacin en Internet, la prctica ms comn es utilizar un servidor que
est detrs de un firewall. Si se va a configurar un servidor de reportes para
acceso a Internet, se debe utilizar credenciales de SQL Server para
conectarse a la instancia de SQL Server que est detrs del firewall y utilizar
IPSEC para proteger la conexin.

Pgina 594 de 630

Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 5
BI Development Studio

2007

Pgina 595 de 630

Contenido
Contenido del curso...........................................................................................2
Unidad 1: Introduccin a las bases de datos...................................................13
Objetivos.......................................................................................................13
Concepto de Bases de Datos..........................................................................14
Algunos conceptos de bases de datos:.......................................................14
Tipos de bases de datos..............................................................................14
Segn la variabilidad de los datos almacenados.....................................14
Segn el contenido...................................................................................15
Modelos de bases de datos......................................................................15
Sistema de gestin de base de datos..............................................................18
Propsito......................................................................................................18
Objetivos.......................................................................................................18
Ventajas........................................................................................................19
Base de datos OLTP....................................................................................19
Objetos de la base de datos............................................................................21
Tablas...........................................................................................................21
.........................................................................................................................23
Vistas............................................................................................................23
Tipos de vistas..........................................................................................24
Escenarios de utilizacin de vistas...........................................................24
ndices..........................................................................................................26
Tipo de ndices.........................................................................................27
Procedimientos Almacenados......................................................................27
Tipos de Procedimientos Almacenados...................................................29
Funciones definidas por el Usuario..............................................................30
Tipos de funciones....................................................................................31
Sinnimos.....................................................................................................32
Transaccin..................................................................................................32
Tipos de datos..................................................................................................34
Precisin, escala y longitud..........................................................................36
Constantes...................................................................................................37
Contenido del curso.........................................................................................40
Unidad 2: Base de Datos Relacional...............................................................51
Objetivos.......................................................................................................51
Base de Datos Relacional................................................................................52
Reglas de Codd............................................................................................52
Diseo de Base de Datos................................................................................57
Qu es un buen diseo de base de datos?...............................................57
El proceso de diseo....................................................................................57
Determinar la finalidad de la base de datos.................................................58
Buscar y organizar la informacin necesaria...............................................58
Dividir la informacin en tablas....................................................................60
Convertir los elementos de informacin en columnas.................................61
Especificar claves principales......................................................................63
Crear relaciones entre las tablas.................................................................65
Crear una relacin de uno a varios..........................................................65
.........................................................................................................................66
Pgina 596 de 630

Crear una relacin de varios a varios.......................................................67


Crear una relacin de uno a uno..............................................................69
Ajustar el diseo...........................................................................................70
Ajustar la tabla Productos.........................................................................71
Aplicar las reglas de normalizacin..............................................................72
Primera forma normal...............................................................................72
Segunda forma normal.............................................................................73
Tercera forma normal...............................................................................73
Desnormalizacin.........................................................................................74
Integridad Referencial......................................................................................75
Contenido del curso.........................................................................................78
Unidad 3 Introduccin al SQL........................................................................89
Objetivos.......................................................................................................89
Conceptos Claves........................................................................................90
Introduccin al SQL......................................................................................90
Bsqueda de informacin en una tabla ......................................................90
Condiciones mltiples para una bsqueda .................................................91
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY . .92
Funciones para el manejo de grupo de filas................................................94
.....................................................................................................................94
Condiciones de bsqueda de un grupo de lneas: HAVING .......................95
Sub-bsquedas o subqueries .....................................................................95
Contenido del curso.........................................................................................98
Unidad 4 Arquitectura Cliente / Servidor.....................................................109
Objetivos.....................................................................................................109
Conceptos Claves......................................................................................110
Conceptos a comentar en esta unidad:.....................................................110
Arquitectura Cliente/Servidor.....................................................................111
Sistemas de bases de datos de escritorio.................................................113
Componentes del SQL Server 2005..........................................................115
El Motor de Base de Datos........................................................................116
Introduccin ...........................................................................................116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores
................................................................................................................116
Analysis Services.......................................................................................117
Introduccin............................................................................................117
Mejoras en Analysis Services con respecto a versiones anteriores:.....117
SQL Server Integration Services................................................................118
Introduccin............................................................................................118
SSIS mejoras con respecto a versiones anteriores:..............................118
Notification Services...................................................................................119
Introduccin ..........................................................................................119
Caractersticas de Notification Services.................................................119
Full-Text Search ........................................................................................120
Introduccin............................................................................................120
Perfeccionamientos de Bsqueda Full-text............................................120
Relational Database Engine .NET CLR, Lenguaje comn de los Tiempos
de Ejecucin...............................................................................................120
Introduccin............................................................................................120
Integracin de .NET CLR en SQL Server..............................................121
Pgina 597 de 630

Definir objetos de base de datos con cdigo administrado...................121


Reporting Services.....................................................................................122
Introduccin............................................................................................122
Caracteristicas Reporting Services........................................................122
Replicacin.................................................................................................123
Introduccin............................................................................................123
Perfeccionamientos de Replicacin.......................................................123
Native HTTP Support.................................................................................124
Introduccin............................................................................................124
Administrar HTTP endpoints..................................................................124
Service Broker............................................................................................125
Introduccin............................................................................................125
Mejoras del Service Broker con respecto a versiones anteriores:.........125
Mejoras ......................................................................................................126
Mejoras del Sistema...............................................................................126
Introduccin............................................................................................126
Memoria Dinmica AWE........................................................................126
Memoria Hot-add....................................................................................127
Afinidad Dinmica de CPU.....................................................................127
Perfeccionamiento del Almacenamiento de Datos................................128
Nuevos y mejorados tipos de datos.......................................................128
Mayor tamao de Row...........................................................................128
Mejoras de Tablas e Indices Particionados............................................129
Introduccin............................................................................................129
Esparcimiento de Tablas de Datos a travs de Grupos de Archivos.....129
Snapshot Isolation Level........................................................................130
Introduccin............................................................................................130
Como Trabaja Snapshot Isolation?........................................................130
Administracin de snapshot isolation.....................................................130
SQLiMail.................................................................................................131
Introduccin............................................................................................131
Instalar y configurar SQLiMail................................................................131
Usar SQLiMail.........................................................................................131
Contenido del curso.......................................................................................133
Unidad 2 Instalacin....................................................................................144
Objetivos.....................................................................................................144
Conceptos Claves......................................................................................145
Ediciones SQL Server 2005
....................................................................................................................145
Introduccin ...........................................................................................145
Ediciones Disponibles ...........................................................................145
Requerimientos de Hardware
....................................................................................................................147
Requerimientos del Procesador.............................................................147
Requerimientos de la Memoria ..............................................................147
Requisitos del Disco Rgido ...................................................................148
Hardware Adicional.................................................................................148
Requerimientos de Software del Sistema Operativo.................................149
Introduccin ...........................................................................................149
Sistema Operativo..................................................................................149
Pgina 598 de 630

Requerimientos de Software Adicional......................................................150


Instalacion de SQL Server 2005................................................................151
Introduccin ...........................................................................................151
Actualizacin de Componentes .............................................................151
SQL Setup MSI ......................................................................................152
El System Consistency Checker ...........................................................152
Introduccin ...........................................................................................152
Chequeos de Configuracin del Sistema ..............................................153
Chequeos de Disponibilidad del Sistema ..............................................154
Chequeos de la Configuracin Seguridad..............................................154
Chequeos de Configuracin de versin.................................................155
Chequeos de Configuracin Remota y de Cluster.................................155
El SCC Report .......................................................................................155
Instalar Componentes de SQL Server 2005..............................................156
Introduccin............................................................................................156
Pasos para la Instalacin.......................................................................156
Realice una instalacin desatendida ........................................................158
Introduccin ...........................................................................................158
Crear un archivo .ini ...............................................................................158
Empezar una instalacin desatendida...................................................158
Realizar una instalacin Remota ..............................................................159
Introduccin ...........................................................................................159
Requerimientos de Instalacin Remota.................................................160
Instale SQL Server en un Cluster .............................................................160
Introduccin............................................................................................161
Prepararse para la instalacin en un cluster .........................................161
Instalar SQL Server 2005 en un cluster ................................................161
Actualizar un cluster existente ...............................................................163
Administrar una instalacin de SQL Server 2005......................................163
Introduccin ...........................................................................................163
Objetivos ................................................................................................163
Agregar o Remover componentes de SQL Server 2005 .....................164
Aplicacin Add or Remove Program de SQL Server ............................164
Introduccin ...........................................................................................164
Remover SQL Server 2005 .......................................................................165
Introduccin ...........................................................................................165
Remover SQL Server.............................................................................165
Trabajando con versiones previas.............................................................166
Introduccin ...........................................................................................166
Upgrading to SQL Server 2005 .............................................................166
Compatibilidad Backward ......................................................................167
Contenido del curso.......................................................................................169
Unidad 3 Configuracin...............................................................................180
Objetivos.....................................................................................................180
SQL Server Configuration Manager...........................................................181
Propiedades del Servidor...........................................................................184
Para ver o cambiar las propiedades del servidor...................................184
Contenido del curso.......................................................................................186
Unidad 4 Administracin..............................................................................197
Objetivos.....................................................................................................197
Pgina 599 de 630

Propiedades de las Bases de Datos..........................................................198


Sintaxis...................................................................................................198
Argumentos............................................................................................198
Tipos de valor devueltos.........................................................................202
Almacenamiento de datos..........................................................................202
Pginas...................................................................................................203
Compatibilidad con filas largas...............................................................204
Extensiones............................................................................................204
Copias de Seguridad y Restauracin.......................................................205
Copias de Seguridad..............................................................................205
Copias de seguridad de bases de datos................................................206
Copias de seguridad parciales...............................................................206
Copias de seguridad de archivos...........................................................207
Copias de seguridad del registro de transacciones (slo para el modelo
de recuperacin completa y por medio de registros de operaciones
masivas)..................................................................................................207
Copias de seguridad de slo copia........................................................208
Dispositivos de copia de seguridad........................................................208
Programar copias de seguridad.............................................................208
Restricciones de las operaciones de copia de seguridad en SQL Server
................................................................................................................209
No se pueden realizar copias de seguridad de los datos sin conexin. 209
Restricciones de simultaneidad durante una copia de seguridad..........209
Restauracin de una base de datos..........................................................210
Conjunto de puestas al da.....................................................................210
Secuencias de restauracin...................................................................211
Fases de la restauracin........................................................................211
Fase de copia de datos..........................................................................211
Fase de rehacer (puesta al da).............................................................212
Punto de recuperacin...........................................................................212
Coherencia de rehacer (puesta al da)...................................................212
Fase de deshacer (revertir) y recuperacin...........................................213
Relacin de las opciones RECOVERY y NORECOVERY con las fases
de restauracin.......................................................................................213
Rutas de recuperacin...........................................................................214
Restaurar una base de datos cuando SQL Server no est conectado. 214
Para restaurar una copia de seguridad completa de la base de datos. 214
Contenido ......................................................................................................218
Unidad 5: Introduccin al T-SQL...................................................................229
Objetivos.....................................................................................................229
Lenguaje de Definicin de Datos...................................................................230
Archivos y grupos de archivos de base de datos...................................231
Instantneas de base de datos..............................................................231
Opciones de base de datos....................................................................231
Base de datos model y creacin de nuevas bases de datos.................232
Ver la informacin de la base de datos..................................................232
Tablas temporales..................................................................................234
Tablas con particiones............................................................................235
Reglas de aceptacin de valores NULL en una definicin de tabla.......235
Quitar una base de datos.......................................................................237
Pgina 600 de 630

Quitar una instantnea de la base de datos...........................................238


Quitar una base de datos utilizada en la rplica....................................238
Configurar opciones................................................................................241
Mover archivos.......................................................................................241
Inicializar archivos..................................................................................241
Cambiar la intercalacin de la base de datos........................................242
Ver informacin de base de datos..........................................................242
Manipulacin de Datos..................................................................................248
Reglas para insertar filas........................................................................251
Utilizar desencadenadores INSTEAD OF en acciones INSERT...........252
Insertar valores en columnas de tipo definido por el usuario.................252
Utilizar OPENROWSET y BULK para datos de carga masiva..............252
Utilizar UPDATE con la clusula FROM................................................258
Actualizar columnas de tipos definidos por el usuario...........................259
Actualizar tipos de datos de valores grandes.........................................259
Actualizar columnas de tipo text, ntext e image.....................................260
Utilizar triggers INSTEAD OF en acciones UPDATE.............................260
Configurar variables y columnas............................................................261
Utilizar un desencadenador INSTEAD OF en acciones DELETE.........264
Consultas Avanzadas....................................................................................265
Funciones Predefinidas.................................................................................271
Funciones de categora (Transact-SQL)................................................272
Funciones de agregado (Transact-SQL)................................................272
Funciones de conjuntos de filas (Transact-SQL)...................................273
Funciones matemticas (Transact-SQL) ..............................................273
Funciones de cadena (Transact-SQL) .................................................274
Funciones del sistema (Transact-SQL) ................................................274
Contenido ......................................................................................................276
Unidad 2: Integridad Referencial...................................................................287
Objetivos.....................................................................................................287
Integridad Referencial....................................................................................288
Integridad Referencial Declarativa.................................................................289
Restricciones..................................................................................................289
Informacin adicional sobre las restricciones.........................................291
Restricciones PRIMARY KEY................................................................291
Restricciones UNIQUE...........................................................................293
Restricciones FOREIGN KEY................................................................294
Restricciones CHECK.............................................................................297
Definiciones DEFAULT...........................................................................299
Contenido ......................................................................................................301
Unidad 3: Objetos Avanzados.......................................................................312
Objetivos.....................................................................................................312
Vistas.............................................................................................................313
Descripcin de Vistas.................................................................................313
Disear e implementar Vistas....................................................................314
Modificar Vistas..........................................................................................317
Modificar y cambiar el nombre de una vista...........................................317
Modificar datos mediante una vista........................................................319
Obtener informacin acerca de una vista...............................................321
Eliminar una vista...................................................................................321
Pgina 601 de 630

Sinnimos...................................................................................................322
Sinnimos y esquemas..................................................................................324
Conceder permisos para un sinnimo....................................................325
Contenido ......................................................................................................327
Unidad 4: T-SQL Avanzado...........................................................................338
Objetivos.....................................................................................................338
Procedimientos Almacenados.......................................................................339
Sintaxis...................................................................................................339
Argumentos............................................................................................339
Utilizar las opciones de SET...................................................................344
Utilizar parmetros con procedimientos almacenados CLR..................345
Obtener informacin acerca de procedimientos almacenados..............345
Resolucin diferida de nombres.............................................................346
Ejecutar procedimientos almacenados..................................................346
Parmetros que utilizan el tipo de datos cursor.....................................346
Procedimientos almacenados temporales.............................................346
Ejecutar procedimientos almacenados automticamente......................347
Anidamiento de procedimientos almacenados......................................347
Limitaciones de <sql_statement>...........................................................347
Funciones Definidas por el Usuario...........................................................355
Descripcin de funciones definidas por el usuario.................................355
Disear funciones definidas por el usuario............................................360
Directivas para el diseo de funciones definidas por el usuario seccin
................................................................................................................360
Funciones definidas por el usuario con valores de tabla.......................363
Funciones en lnea definidas por el usuario...........................................366
Volver a escribir procedimientos almacenados como funciones...........369
SubConsultas.................................................................................................371
Contenido del curso.......................................................................................374
Unidad 5: Seguridad......................................................................................385
Objetivos.....................................................................................................385
Seguridad SQL y Seguridad de Windows.....................................................386
Autentificacin del Login:........................................................................386
Autentificacin del SQL Server:..............................................................386
Autentificacin de Windows NT:.............................................................386
Modo de Autentificacin:........................................................................386
Usuarios.........................................................................................................387
Cuentas de Usuario y Roles en una Base de Datos:.............................387
Cuentas de Usuarios de la Base de Datos:...........................................387
Asegurables................................................................................................387
Roles..............................................................................................................388
Esquemas......................................................................................................388
Separacin de esquemas de usuario.....................................................389
Esquema en SQL Server 2000 y esquema en SQL Server 2005..........389
Ventajas de la separacin entre esquema y usuario.............................390
Esquemas predeterminados...................................................................390
Autorizacin............................................................................................391
Permisos........................................................................................................391
Conceder acceso al Agente SQL Server...............................................392
Jerarqua de permisos............................................................................392
Pgina 602 de 630

Convenciones de nomenclatura de permisos........................................393


Permisos aplicables a asegurables especficos.....................................395
Ejemplos.................................................................................................396
Trabajar con permisos............................................................................397
Cifrado............................................................................................................400
Mecanismos de cifrado...........................................................................400
Certificados.............................................................................................401
Sintaxis...........................................................................................................402
Argumentos....................................................................................................402
Permisos........................................................................................................403
Claves asimtricas..................................................................................403
Sintaxis...........................................................................................................403
Argumentos....................................................................................................404
Permisos........................................................................................................405
Claves simtricas....................................................................................405
Sintaxis...........................................................................................................405
Argumentos....................................................................................................405
Permisos........................................................................................................406
Contenido ......................................................................................................407
Unidad 1: T-SQL Avanzado...........................................................................418
Objetivos.....................................................................................................418
ndices............................................................................................................419
Descripcin de ndices...............................................................................419
Conceptos bsicos de los ndices..........................................................419
ndices y restricciones............................................................................420
Cmo utiliza los ndices el optimizador de consultas....................................420
Tipos de ndices.........................................................................................421
Disear ndices...........................................................................................422
Conceptos bsicos del diseo de ndices..................................................422
Tareas del diseo de ndices..................................................................423
Directivas generales para disear ndices.................................................423
Consideraciones acerca de las bases de datos............................................424
Consideraciones sobre las consultas.....................................................424
Caractersticas de los ndices.................................................................426
Directivas para disear ndices agrupados................................................426
Consideraciones sobre las consultas.....................................................427
Consideraciones sobre las columnas.....................................................427
Directivas para disear ndices no agrupados...........................................428
Consideraciones acerca de las bases de datos.....................................429
Consideraciones sobre consultas...........................................................429
Consideraciones sobre columnas..........................................................429
Directivas para disear ndices nicos......................................................430
Consideraciones.....................................................................................431
Implementar ndices...................................................................................431
Tareas de creacin de ndices...............................................................431
Consideraciones de implementacin.....................................................434
Tipos de datos........................................................................................435
Consideraciones adicionales..................................................................436
La actualizacin de SQL Server deshabilita un ndice...........................436
Usar ALTER INDEX para deshabilitar un ndice....................................437
Pgina 603 de 630

Para deshabilitar un ndice ....................................................................438


Sintaxis...........................................................................................................438
Argumentos....................................................................................................439
Notas..............................................................................................................446
Regenerar ndices..................................................................................447
Reorganizar ndices................................................................................447
Deshabilitar ndices................................................................................448
Establecer opciones...............................................................................448
Opciones de bloqueo de fila y pgina....................................................448
Operaciones de ndice en lnea..............................................................449
Permisos........................................................................................................449
Ejemplos........................................................................................................449
A. Regenerar un ndice...........................................................................449
B. Regenerar todos los ndices de una tabla y especificar opciones.....449
C. Reorganizar un ndice con compactacin LOB.................................450
D. Establecer opciones en un ndice......................................................450
E. Deshabilitar un ndice.........................................................................450
F. Deshabilitar restricciones...................................................................450
G. Habilitar restricciones........................................................................451
H. Regenerar un ndice con particiones.................................................451
Requisitos de espacio en disco.....................................................................452
Consideraciones de rendimiento...................................................................452
Optimizar ndices........................................................................................453
Tareas del diseo de ndices.........................................................................454
Establecer opciones sin volver a generar......................................................456
Ver la configuracin de opciones de ndice...................................................456
Ejemplos........................................................................................................456
Triggers..........................................................................................................458
Sintaxis...........................................................................................................458
Argumentos....................................................................................................459
Triggers DML..........................................................................................464
Triggers DDL..........................................................................................467
Consideraciones generales sobre los triggers.......................................467
Permisos........................................................................................................469
Ejemplos........................................................................................................470
A. Utilizar un trigger DML con un mensaje de aviso..............................470
B. Utilizar un trigger DML con un mensaje de correo electrnico de aviso
................................................................................................................470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre
las tablas PurchaseOrderHeader y Vendor............................................470
D. Utilizar la resolucin diferida de nombres..........................................471
E. Utilizar un trigger DDL con mbito en la base de datos....................472
F. Utilizar un trigger DDL con mbito en el servidor..............................472
G. Ver los eventos que hacen que se active un trigger.........................473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores.....473
Transacciones................................................................................................474
Transacciones de confirmacin automtica ..........................................474
Transacciones explcitas .......................................................................474
Transacciones implcitas .......................................................................474
Transacciones de mbito de lote ...........................................................474
Pgina 604 de 630

Transacciones del Motor de Base de Datos..............................................476


Atomicidad..............................................................................................476
Coherencia.............................................................................................476
Aislamiento.............................................................................................476
Durabilidad..............................................................................................477
Especificar y exigir transacciones..................................................................477
Contenido ......................................................................................................479
Unidad 2: Componentes del SQL Server 2005.............................................490
Objetivos.....................................................................................................490
Versiones de Microsoft SQL Server 2005.....................................................491
Decidir entre ediciones de Microsoft SQL Server 2005................................491
Usar Microsoft SQL Server 2005 con un servidor de Internet...............493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor......493
Decidir entre componentes de Microsoft SQL Server 2005..........................494
Descripcin de Componentes de Microsoft SQL Server 2005......................495
Database Engine........................................................................................495
Analysis Services.......................................................................................496
Reporting Services.....................................................................................510
Notification Services...................................................................................512
Integration Services....................................................................................520
Contenido ......................................................................................................524
Unidad 3: Administracin Avanzada..............................................................535
Objetivos.....................................................................................................535
1. Monitoreo...................................................................................................536
2. Activity Monitor...........................................................................................536
Cmo ver la actividad de los trabajos (SQL Server Management Studio)
................................................................................................................536
Supervisar la actividad de trabajo..........................................................537
3. Management views....................................................................................538
4. MBSA y Service packs...............................................................................541
5. DB Engine Tuning Advisor.........................................................................543
Como optimizar una base de datos mediante la utilidad DTA...............543
Ejemplos.................................................................................................554
6. Plan de Ejecucin......................................................................................556
7. Estadsticas................................................................................................558
Contenido ......................................................................................................563
Unidad 4: Reporting Services........................................................................574
Objetivos.....................................................................................................574
SQL Server Reporting Services.................................................................575
Reportes empresariales.........................................................................576
Caractersticas........................................................................................580
Conceptos...............................................................................................584
Arquitectura del SQL Server Reporting Server..........................................585
Report Server.............................................................................................586
Integracin con SQL Server 2005..............................................................591
Contenido ......................................................................................................596
Unidad 5: BI Development Studio..................................................................607
Objetivos.....................................................................................................607
Analysis Services.......................................................................................608
Conceptos y objetos de Analysis Services.............................................608
Pgina 605 de 630

Arquitectura del Servidor (Analysis Services)........................................608


Arquitectura del Cliente (SSAS).............................................................609
Objetos de Analysis Services.................................................................614
Orgenes de datos (Analysis Services)..................................................614
Vistas de origen de datos (Analysis Services).......................................615
Cubos (Analysis Services)......................................................................615
Dimensiones (Analysis Services)...........................................................616
Estructuras de Data Mining (Analysis Services)....................................616
Funciones (Analysis Services)...............................................................618
Assemblies (Analysis Services)..............................................................619
Integration Services Project (SSIS)............................................................620
Usos tpicos de Integration Services......................................................621
Arquitectura de Integration Services......................................................625
Uso de Business Intelligence Development Studio y SQL Server Management
Studio con Integration Services.....................................................................627
SQL Server Management Studio............................................................627
Business Intelligence Development Studio............................................628

Pgina 606 de 630

Unidad 5: BI Development Studio


Objetivos
Dar una visin acerca del BI Development Studio,
detallando el concepto de los siguientes puntos:
a. Analysis Services (SAS)
b. Integration Services Project (SSIS)

Pgina 607 de 630

Analysis Services
Microsoft SQL Server 2005 Analysis Services (SSAS) ofrece funciones de
procesamiento analtico en lnea (OLAP) y Datamining para aplicaciones de
Business Intelligence.
Analysis Services admite OLAP y permite disear, crear y administrar
estructuras multidimensionales que contienen datos agregados desde otros
orgenes de datos, como bases de datos relacionales. En el caso de las
aplicaciones de Dataminig, Analysis Services permite disear, crear y
visualizar modelos de Data Mining que se construyen a partir de otros
orgenes de datos mediante el uso de una gran variedad de algoritmos de
Data Mining estndar del sector.

Conceptos y objetos de Analysis Services


Microsoft SQL Server 2005 Analysis Services (SSAS) ofrece funciones de
procesamiento analtico en lnea (OLAP) y Data Mining mediante una
combinacin de tecnologas de servidor y cliente, reforzadas por el uso de un
entorno de desarrollo y administracin especializado al que se une un modelo
de objetos bien definido para disear, crear, implementar y mantener
aplicaciones de Business Intelligence.
Arquitectura del Servidor (Analysis Services)
El componente de servidor de Microsoft SQL Server 2005 Analysis Services
(SSAS) es la aplicacin msmdsrv.exe, que por lo general se ejecuta como un
servicio de Windows. Esta aplicacin est formada por componentes de
seguridad, un componente de escucha XML for Analysis (XMLA), un
componente de procesador de consultas y otros componentes internos que
realizan las siguientes funciones:
Analizar instrucciones recibidas de clientes
Pgina 608 de 630

Administrar metadatos
Controlar transacciones
Procesar clculos
Almacenar datos de celdas y dimensiones
Crear agregaciones
Programar consultas
Almacenar objetos en la cach
Administrar recursos del servidor
Componente de escucha XMLA
El componente de escucha XMLA controla todas las comunicaciones XMLA
entre Analysis Services y los clientes. Puede utilizarse el valor de
configuracin Analysis Services Port del archivo msmdsrv.ini para especificar
un puerto en el que escucha una instancia de Analysis Services. Un valor de
0 en este archivo indica que Analysis Services escucha en el puerto
predeterminado. A menos que se especifique lo contrario, Analysis Services
utiliza los siguientes puertos TCP predeterminados:
Puerto
2725
2383
2382
Se asigna dinmicamente al iniciar el
servidor.

Descripcin
Instancias existentes de SQL Server 2000 Analysis
Services.
Instancia predeterminada de SQL Server 2005
Analysis Services.
Redirector de otras instancias de SQL Server 2005
Analysis Services.
Instancia con nombre de SQL Server 2005 Analysis
Services.

Arquitectura del Cliente (SSAS)


Microsoft SQL Server 2005 Analysis Services (SSAS) admite una arquitectura
de cliente ligero. El motor de clculo de Analysis Services depende
totalmente del servidor, por lo que todas las consultas se resolvern en l. En
consecuencia, para cada consulta slo se necesita realizar un viaje de ida y
vuelta entre el cliente y el servidor, lo que produce un rendimiento escalable a
medida que las consultas aumenten en complejidad.
El protocolo nativo para Analysis Services es XML for Analysis (XML/A).
Analysis Services proporciona varias interfaces de acceso a datos para
aplicaciones cliente pero todos estos componentes se comunican con una
instancia de Analysis Services a travs de XML for Analysis.
Se proporcionan varios proveedores distintos en Analysis Services para
admitir diferentes lenguajes de programacin. Un proveedor se comunica con
un servidor de Analysis Services enviando y recibiendo XML for Analysis en
paquetes SOAP sobre TCP/IP o sobre HTTP a travs de Servicios de Internet
Information Server (IIS). La conexin HTTP utiliza un objeto COM,
denominado bombeo de datos y cuya instancia ha sido creada por IIS, que
acta como conducto para los datos de Analysis Services. El bombeo de
datos no examina de ningn modo los datos subyacentes contenidos en la
secuencia HTTP, ni ninguna de las estructuras de datos subyacentes est
disponible para el cdigo en la propia biblioteca de datos.
Pgina 609 de 630

Las aplicaciones cliente de Win32 pueden conectarse con un servidor de


Analysis Services mediante interfaces OLE DB para OLAP o mediante el
modelo de objetos Microsoft ActiveX Data Objects (ADO) para lenguajes
de automatizacin COM (Modelo de objetos componentes) como, por
ejemplo, Microsoft Visual Basic. Las aplicaciones codificadas con
lenguajes .NET se pueden conectar con un servidor de Analysis Services
mediante ADO MD.NET.
Las aplicaciones existentes pueden comunicarse con Analysis Services sin
necesidad de ser modificadas utilizando simplemente uno de los proveedores
de Analysis Services.
Lenguaje de programacin
Interfaz de acceso a datos
C++
OLE DB para OLAP
Visual Basic 6
ADO MD
Lenguajes .NET
ADO MD.Net
Cualquier lenguaje que admita SOAP
XML for Analysis
Analysis Services tiene una arquitectura Web con un nivel medio
completamente escalable para implementacin en organizaciones pequeas
y medianas.

Pgina 610 de 630

Analysis Services ofrece una amplia compatibilidad de nivel medio para


servicios Web. Las aplicaciones ASP son compatibles con OLE DB para
OLAP y ADO MD, y las aplicaciones ASP.NET son compatibles con
ADOMD.NET. El nivel medio, que viene ilustrado en la siguiente figura, es
escalable para muchos usuarios simultneos.

Las aplicaciones cliente y de nivel medio pueden comunicarse directamente


con Analysis Services sin necesidad de ningn proveedor. Las aplicaciones
cliente y de nivel medio pueden enviar XML for Analysis en paquetes SOAP
sobre TCP/IP, HTTP o HTTPS. El cliente puede estar codificado con
cualquier lenguaje compatible con SOAP. La comunicacin se administra
mucho ms fcilmente en este caso a travs de los Servicios de Internet
Information Server (IIS) mediante HTTP, aunque tambin puede codificarse
una conexin directa con el servidor mediante TCP/IP. Se trata de la solucin
de cliente ms ligero para Analysis Services.
Pgina 611 de 630

Compatibilidad con el modelo de Data Mining de datos local y con


cubos locales
Los cubos locales y los modelos de Data Mining locales permiten el anlisis
en una estacin de trabajo cliente aunque est desconectada de la red. El
motor de cubos locales (Msmdlocal.dll) admite cubos locales y modelos de
Data Mining de datos locales en equipos cliente. El motor de cubos locales es
un servidor COM en curso. Una aplicacin cliente llama al proveedor OLE DB
para OLAP, que carga el motor de cubos locales para crear y consultar los
cubos locales, tal como se muestra en la siguiente ilustracin.

Un cubo local puede basarse en un cubo existente almacenado en Analysis


Services o en una base de datos relacional OLE DB. Cuando se crea un cubo
local desde un origen de datos relacional, su estructura es muy similar a la de
los cubos de Analysis Services. Cuando se crea un cubo local desde un
origen de datos OLAP, el cubo local se enlaza con el cubo de origen.
Tambin se puede crear un cubo local sin ningn origen de datos inicial.
Los cubos locales y los modelos de Data Mining locales se almacenan en los
archivos de cubos multidimensionales (.cub) de una aplicacin cliente. Un
archivo .cub contiene al menos un cubo local, pero puede contener ms de
uno. Las consultas a los cubos locales se controlan mediante el motor de
cubos locales y no necesitan conexin con una instancia de Analysis
Services.
El motor de cubos locales tambin puede crear modelos de Datamining
locales procesados en cubos locales. Un modelo de Data Mining local se
basa en un cubo local y se almacena en el mismo archivo .cub que define el
cubo local. Los modelos de Data Mining locales tambin se pueden utilizar
sin conexin con una instancia de Analysis Services.
El motor de cubos locales puede conectarse con los cubos locales de
Analysis Services y actualizarlos, como se muestra en el siguiente grfico.

Pgina 612 de 630

El motor de cubos locales no puede crear un cubo local de Analysis Services,


aunque admite la biblioteca de SQL Server 2000 SP1 Analysis Services para
crear un cubo local.
Las aplicaciones cliente tambin pueden realizar conexiones con los
servidores de Analysis Services. El proveedor de OLE DB para OLAP/DM 9.0
llama al proveedor de 8.0, que se comunica directamente con los servidores
de Analysis Services, como se ilustra a continuacin.

Pgina 613 de 630

Objetos de Analysis Services


Una instancia de Microsoft SQL Server 2005 Analysis Services (SSAS)
contiene Assemblies y objetos de base de datos para su uso con
procesamiento analtico en lnea (OLAP) y Datamining.
Las bases de datos contienen objetos OLAP y de Data Mining
como orgenes de datos, vistas de origen de datos, cubos,
medidas, grupos de medida, dimensiones, atributos, jerarquas,
estructuras de Data Mining, modelos de Data Mining y funciones.
Los Assemblies contienen funciones definidas por el usuario que
amplan la funcionalidad de las funciones intrnsecas
suministradas por los lenguajes Expresiones multidimensionales
(MDX) y Extensiones de Data Mining (DMX).
En los siguientes temas se describen los objetos compartidos por
caractersticas de OLAP y de Data Mining de Analysis Services.
Tema
Descripcin
Orgenes de datos Describe un origen de datos en Analysis Services.
(Analysis Services)
Vistas de origen de Describe un modelo de datos lgico basado en uno o
datos
(Analysis varios orgenes de datos, en Analysis Services.
Services)
Cubos
(Analysis Describe cubos y objetos de cubo, lo que incluye
Services)
medidas, grupos de medida, relaciones de uso de
dimensiones,
clculos,
indicadores
clave
de
rendimiento, acciones, traducciones, particiones y
perspectivas.
Dimensiones
Describe dimensiones y objetos de dimensiones,
(Analysis Services) incluidos atributos, relaciones de atributo, jerarquas,
niveles y miembros.
Estructuras de Data Describe estructuras y objetos de Data Mining,
Mining
(Analysis incluidos modelos de Data Mining.
Services)
Funciones (Analysis Describe una funcin, el mecanismo de seguridad
Services)
utilizado para controlar el acceso a objetos de Analysis
Services.
Assemblies
Describe un ensamblado, una coleccin de funciones
(Analysis
definidas por el usuario utilizadas para ampliar los
Services)
lenguajes MDX y DMX, en Analysis Services.

Orgenes de datos (Analysis Services)


Un origen de datos de Microsoft SQL Server 2005 Analysis Services (SSAS)
representa una conexin a un origen de datos y contiene la cadena de
conexin que define el modo en que Analysis Services conecta con un
almacn de datos fsico mediante un proveedor Microsoft .NET Framework
administrado o un proveedor OLE DB nativo. La cadena de conexin contiene
informacin sobre el nombre del servidor, la base de datos, la seguridad, el
Pgina 614 de 630

tiempo de espera y otra relacionada con la conexin. Analysis Services


admite directamente muchos orgenes de datos. Entre los orgenes de datos
admitidos se incluyen las bases de datos de Microsoft SQL Server y las
creadas mediante otros productos, como Oracle, DB2 y Teradata.
Es posible definir un nuevo origen de datos o uno basado en un origen de
datos previamente definido.
Vistas de origen de datos (Analysis Services)
Una vista de origen de datos contiene el modelo lgico del esquema que
utilizan los objetos de las bases de datos de Analysis Services: cubos,
dimensiones y estructuras de Data Mining. Una vista de origen de datos es la
definicin de metadatos, almacenada en formato XML, de estos elementos de
esquema que utilizan el modelo UDM (Unified Dimensional Model) y las
estructuras de Data Mining. Una vista de origen de datos:
Contiene los metadatos que representan objetos seleccionados a
partir de uno o ms orgenes de datos subyacentes, o bien los
metadatos que se utilizarn para generar un almacn de datos
relacional subyacente. Se puede generar con uno o ms orgenes
de datos, lo que permite definir objetos OLAP y de Data Mining
que integren datos de varios orgenes.
Puede contener relaciones, claves principales, nombres de objeto,
columnas calculadas y consultas que no estn presentes en un
origen de datos subyacente y que son independientes de los
orgenes de datos subyacentes.
No est visible ni disponible para que las aplicaciones cliente
realicen consultas.
La vista de origen de datos le ofrece flexibilidad a la hora de crear objetos en
SQL Server 2005 Analysis Services (SSAS), SQL Server 2005 Integration
Services (SSIS) y SQL Server 2005 Reporting Services (SSRS), dado que los
objetos de bases de datos Analysis Services estn vinculados a los objetos
lgicos contenidos en la vista de origen de datos en lugar de estar
directamente vinculados a los objetos fsicos definidos en el origen de datos
subyacente. Por lo tanto, el usuario puede definir objetos lgicos, como
columnas calculadas o consultas con nombre, que no existen en un origen de
datos y a los que es posible que no tenga permisos para definir en un origen
de datos.
Cubos (Analysis Services)
Un cubo es un conjunto de medidas y dimensiones relacionadas que se usa
para analizar datos.
Una medida es un hecho, que es un valor transaccional que un
usuario podra desear agregar. Las medidas se obtienen de las
columnas de una o varias tablas de origen y se agrupan en grupos
de medidas.
Una dimensin es un grupo de atributos que representa un rea
de inters relacionada con las medidas del cubo y que se usan
para analizar las mismas. Por ejemplo, una dimensin Customer
podra tener los atributos Customer Name, Customer Gender y
Pgina 615 de 630

Customer City, lo que permitira que Customer Name, Customer


Gender y Customer City analizaran las medidas del cubo. Los
atributos se obtienen de las columnas de una o varias tablas de
origen. Los atributos de cada dimensin se pueden organizar en
jerarquas para proporcionar rutas para el anlisis.
Un cubo se forma con clculos, indicadores clave de rendimiento (KPI),
acciones, particiones, perspectivas y traducciones. Los cubos son
esencialmente sinnimos de un modelo UDM (Unified Dimensional Model).
Los cubos pueden desarrollarse con o sin un origen de datos relacional
subyacente.
Los registros de la tabla FACT de un cubo se agregan a todas las
dimensiones, en funcin de las jerarquas de dimensiones..

Dimensiones (Analysis Services)


En Microsoft SQL Server 2005 Analysis Services (SSAS), las dimensiones
constituyen un componente fundamental de los cubos. Las dimensiones
organizan los datos en funcin de un rea de inters para los usuarios, por
ejemplo clientes, almacenes o empleados. Las dimensiones en Analysis
Services contienen atributos que corresponden a columnas de tablas de
dimensiones. Estos atributos aparecen como jerarquas de atributo y se
pueden organizar en jerarquas definidas por el usuario, o bien se pueden
definir como jerarquas de elementos primarios y secundarios basadas en
columnas en la tabla de dimensiones subyacente. Las jerarquas se utilizan
para organizar las medidas incluidas en un cubo.

Estructuras de Data Mining (Analysis Services)


Services (SSAS). Los dos objetos principales que se utilizan son:
Estructura de Data Mining: La estructura de Data Mining es una
estructura de datos que define el dominio a partir del cual se
generan los modelos de Data Mining. Una nica estructura de
Data Mining puede contener varios modelos de Data Mining que
comparten el mismo dominio. Las unidades de creacin de la
estructura de Data Mining estn dadas por las columnas de la
estructura describen los datos que contiene el origen. Estas
columnas contienen informacin como el tipo de datos, el tipo de
contenido y el modo en que se distribuyen los datos. Una
estructura de Data Mining tambin puede contener tablas
anidadas. Una tabla anidada representa una relacin de uno a
varios entre la entidad de un escenario y sus atributos
relacionados. Por ejemplo, si la informacin que describe al cliente
se encuentra en una tabla y las compras del cliente en otra, puede
utilizar tablas anidadas para combinar la informacin en un nico
escenario. El identificador del cliente es la entidad y las compras
son los atributos relacionados. La estructura de Data Mining no
contiene informacin sobre el modo en que las columnas se
utilizan para un modelo de Data Mining concreto, ni sobre el tipo
Pgina 616 de 630

de algoritmo que se utiliza para generarlo; esta informacin se


define en el propio modelo de Data Mining.
Modelo de Data Mining: Cuando se examina un modelo de Data
Mining en Analysis Services, el modelo se muestra en la ficha
Visor de modelos de Data Mining del Diseador de Data Mining.
Puede utilizar el Visor de redes neuronales de Microsoft para
seleccionar estados concretos de atributos de entrada y para
investigar el modo en que los otros atributos de entrada del
modelo afectan al estado del atributo de salida, tambin
denominado atributo de prediccin. Por ejemplo, puede saber que
un posible cliente tiene entre 40 y 50 aos, es propietario de un
vivienda y tiene dos hijos que todava viven en casa. No obstante,
es posible que no conozca otros rasgos especficos de la persona
que podra emplear para determinar si adquirira una bicicleta de
Adventure Works. Puede explorar el modelo TM_Neural_Net de la
base de datos de ejemplo Adventure Works DW para descubrir
que si una persona tambin tiene ingresos altos, hay ms
probabilidad de que adquiera una bicicleta, segn el modelo. Por
el contrario, si vive a ms de 15 km del lugar de trabajo,
probablemente no adquirir una bicicleta.
o Visor (fichas): El Visor de redes neuronales de Microsoft
ofrece las siguientes fichas para utilizarlas con el fin de
explorar modelos de Data Mining de redes neuronales:
Entradas: Con la ficha Entrada puede seleccionar
los atributos y valores de atributo que el modelo de
red neuronal utilizar como entradas. Cuando se
abre el visor, la opcin predeterminada es incluir
todos los atributos. Para seleccionar un atributo de
entrada, haga clic dentro de la columna Atributo de
la cuadrcula Entrada y, a continuacin, seleccione
un atributo de la lista desplegable. En la lista slo
estn incluidos los atributos presentes en el modelo.
Si hace clic en el valor predeterminado aparece una
lista que contiene los posibles estados del atributo
asociado. Puede seleccionar el estado que desea
investigar. Puede seleccionar tantos atributos como
desee cambiar.
Salidas: Puede utilizar la ficha Salida para designar
el atributo del modelo de red neuronal que se va a
utilizar como salida y los dos estados que desea
comparar. nicamente puede seleccionar atributos
del modelo definidos como columnas PREDICT o
PREDICT ONLY. Utilice la lista Atributo de salida
para seleccionar un atributo.
Variables: La cuadrcula de la ficha Variables
muestra las columnas con los valores asignados. Se
puede hacer clic en un encabezado de columna,
para cambiar el orden de visualizacion. Una barra a
la derecha del atributo muestra a qu estado del
atributo de salida favorece el atributo de entrada
Pgina 617 de 630

especificado; el tamao de la barra muestra la


fuerza con que el estado de salida favorece al
estado de entrada.
Los dems objetos son las columnas de la estructura de Data Mining y las
columnas del modelo de Data Mining.
Funciones (Analysis Services)
Las funciones se utilizan en Microsoft SQL Server 2005 Analysis Services
(SSAS) para administrar la seguridad de los objetos y datos de Analysis
Services. En trminos simples, una funcin asocia los identificadores de
seguridad (SID) de usuarios y grupos de Microsoft Windows que tienen
derechos y permisos de acceso especficos a los objetos administrados por
una instancia de Analysis Services. En Analysis Services se incluyen dos
tipos de funciones:
La funcin del servidor, que es una funcin fija que proporciona
acceso de administrador a una instancia de Analysis Services.
Las funciones de base de datos, que son funciones definidas por
los administradores para controlar el acceso a los objetos y datos
de los usuarios que no son administradores.
Funcin del servidor
La funcin del servidor de Analysis Services define el acceso administrativo
de los usuarios y grupos de Windows a una instancia de Analysis Services.
Los miembros de esta funcin tienen acceso a todas las bases de datos y
objetos de Analysis Services. Se puede realizar las siguientes tareas:
Realizar funciones administrativas de nivel de servidor utilizando
SQL Server Management Studio o Business Intelligence
Development Studio, incluida la creacin de bases de datos y la
configuracin de propiedades de nivel de servidor.
Realizar funciones administrativas mediante programacin con
Objetos de administracin de Anlisis (AMO).
Mantener las funciones de base de datos de Analysis Services.
Iniciar trazas (distintas de eventos de procesamiento, que puede
realizar una funcin de base de datos con acceso de proceso).
Cada instancia de Analysis Services tiene una funcin de servidor que define
qu usuarios pueden administrar la instancia. El nombre Id. de esta funcin
es Administradores y, a diferencia de las funciones de base de datos, no
puede eliminarse la funcin del servidor ni pueden agregarse ni quitarse
permisos. En otras palabras, un usuario puede o no ser un administrador
para una instancia de Analysis Services, segn est incluido en la funcin del
servidor de la instancia correspondiente.

Funciones de base de datos


Una funcin de base de datos de Analysis Services define el acceso de
usuario a los objetos y datos de una base de datos de Analysis Services. Una
Pgina 618 de 630

funcin de base de datos se crea como objeto independiente en una base de


datos de Analysis Services y slo se aplica a la base de datos en la que se
crea la funcin. El administrador incluye los usuarios y grupos de Windows en
la funcin y tambin define los permisos de la funcin.
Los permisos de una funcin pueden permitir a los miembros obtener acceso
y administrar la base de datos, adems de administrar los objetos y los datos
de la misma. Cada permiso tiene uno o ms derechos de acceso asociados,
que a su vez proporcionan al permiso ms control sobre el acceso a un
objeto especfico de la base de datos.

Assemblies (Analysis Services)


Microsoft SQL Server 2005 Analysis Services (SSAS) proporciona gran
cantidad de funciones intrnsecas que se pueden utilizar con los lenguajes
MDX (Expresiones multidimensionales) y DMX (Extensiones de Data Mining),
diseados para realizar multitud de tareas, desde el clculo estadstico
estndar hasta recorridos de miembros de una jerarqua. No obstante, al
igual que con cualquier otro producto complejo, existe siempre la necesidad
de ampliar la funcionalidad.
Por lo tanto, Analysis Services permite agregar ensamblados a una instancia
o base de datos de Analysis Services. Los ensamblados permiten crear
funciones externas definidas por el usuario mediante cualquier lenguaje CLR
(Common Language Runtime), como por ejemplo Microsoft Visual Basic .NET
o Microsoft Visual C#. Tambin puede utilizar lenguajes de automatizacin
COM (Modelo de objetos componentes), como Microsoft Visual Basic o
Microsoft Visual C++.
Los ensamblados le permiten ampliar la funcionalidad empresarial de MDX y
DMX. Se puede crear la funcionalidad que se desee en una biblioteca, como
por ejemplo una biblioteca de vnculos dinmicos (DLL), y agregar la
biblioteca como ensamblado a una instancia de Analysis Services o a una
base de datos de Analysis Services. Los mtodos pblicos de la biblioteca se
ofrecern como funciones definidas por el usuario a procedimientos, clculos,
acciones, aplicaciones cliente y expresiones de MDX y DMX.
Llamar a funciones definidas por el usuario
La llamada a una funcin definida por el usuario en un ensamblado se realiza
de la misma forma que la llamada a una funcin intrnseca, salvo que se deba
utilizar un nombre completo. Por ejemplo, una funcin definida por el usuario
que devuelva un tipo esperado por MDX se incluye en una consulta MDX,
como se muestra en el siguiente ejemplo:
Select MyAssembly.MyClass.MyStoredProcedure(a, b, c) on 0 from Sales
Tambin se puede llamar a las funciones definidas por el usuario mediante la
palabra clave CALL. Debe utilizar la palabra clave CALL con funciones
definidas por el usuario que devuelvan conjuntos de registros o valores nulos,
y no podr utilizarla si la funcin definida por el usuario depende de un objeto
del contexto de la secuencia de comandos o instruccin MDX o DMX, como
Pgina 619 de 630

el modelo de Data Mining o el cubo actual. Un uso comn de una funcin


llamada fuera de una consulta MDX o DMX es utilizar el modelo de objetos
AMO para realizar funciones administrativas. Si, por ejemplo, desea utilizar la
funcin MyVoidProcedure(a, b, c) en una instruccin MDX, se utilizara la
siguiente sintaxis:
Call MyAssembly.MyClass.MyVoidProcedure(a, b, c)
Los assemblies simplifican el desarrollo de la base de datos al permitir que se
desarrolle una sola vez el cdigo comn y se almacene en una ubicacin
nica. Los programadores de software cliente pueden crear bibliotecas de
funciones para Analysis Services y distribuirlas en sus aplicaciones.
Los ensamblados y las funciones definidas por el usuario pueden duplicar los
nombres de funcin de la biblioteca de funciones de Analysis Services o de
otros ensamblados. Siempre que se llame a la funcin definida por el usuario
con su nombre completo, Analysis Services utilizar el procedimiento
correcto. Por razones de seguridad y para eliminar la posibilidad de llamar a
un nombre duplicado de una biblioteca de clases diferente, Analysis Services
requiere que se utilicen slo nombres completos para procedimientos
almacenados.
Para llamar a una funcin definida por el usuario desde un ensamblado CLR,
la funcin definida por el usuario estar precedida por el nombre de
ensamblado, el nombre de clase completo y el nombre de procedimiento,
como se muestra a continuacin:
AssemblyName.FullClassName.ProcedureName(Argument1, Argument2, ...)
Por razones de compatibilidad con versiones anteriores de Analysis Services,
se acepta tambin la siguiente sintaxis:
AssemblyName!FullClassName!ProcedureName(Argument1, Argument2, ...)
Si una biblioteca COM admite varias interfaces, tambin se puede utilizar el
Id. de interfaz para resolver el nombre de procedimiento, como se muestra a
continuacin:
AssemblyName!InterfaceID!ProcedureName(Argument1, Argument2, ...)

Integration Services Project (SSIS)


Integration Services es una plataforma para generar integracin de datos de
alto rendimiento y soluciones de flujo de trabajo, incluyendo operaciones de
extraccin, transformacin y carga (ETL) para almacenamiento de datos.
Integration Services incluye herramientas grficas y asistentes para generar y
depurar paquetes, tareas para realizar funciones de flujo de datos tales como
operaciones de FTP, ejecucin de instrucciones SQL y mensajera de correo
electrnico, orgenes y destinos de datos para extraer y cargar datos,
transformaciones para limpiar, agregar, mezclar y copiar datos, un servicio de
administracin, el servicio Integration Services para administrar paquetes de

Pgina 620 de 630

Integration Services e interfaces de programacin de aplicaciones (API) para


programar el modelo de objeto de Integration Services.
Esta seccin proporciona informacin general, incluida la informacin sobre
los usos normales, la arquitectura y las herramientas de Integration Services
para generar y administrar las soluciones de integracin de datos

Usos tpicos de Integration Services


SQL Server 2005 Integration Services (SSIS) proporciona un amplio conjunto
de tareas, contenedores, transformaciones y adaptadores de datos
integrados que permiten desarrollar aplicaciones de negocios. Sin escribir
una sola lnea de cdigo, puede crear soluciones de SSIS para resolver
problemas de negocios complejos mediante ETL y Business Intelligence,
administrar bases de datos de SQL Server y copiar objetos de SQL Server
entre distintas instancias.
En los escenarios siguientes se describen usos tpicos de los paquetes de
SSIS.
Mezclar datos de almacenamientos de datos heterogneos
Los datos suelen almacenarse en muchos sistemas de almacenamiento
distintos, por lo que extraer datos de todos los orgenes y mezclarlos en un
solo conjunto coherente constituye un desafo. Esta situacin puede
producirse por diversas razones. Por ejemplo:
Muchas organizaciones archivan informacin que est
almacenada en sistemas de almacenamiento de datos antiguos.
Estos datos pueden no ser importantes para las operaciones
diarias, pero pueden resultar tiles para el anlisis de tendencias,
que requiere datos recopilados a lo largo de un perodo
prolongado.
Las sucursales de una organizacin pueden usar distintas
tecnologas de almacenamiento de datos para almacenar los
datos operativos. Es posible que el paquete tenga que extraer
datos de hojas de clculo y de bases relacionales para poder
mezclarlos.
Los datos pueden estar almacenados en bases que usan distintos
esquemas para los mismos datos. Es posible que el paquete
tenga que cambiar el tipo de datos de una columna o combinar
datos de varias columnas en una sola para poder mezclar.
Integration Services puede conectarse a una gran variedad de orgenes de
datos, incluso con varios orgenes en un solo paquete. Un paquete puede
conectarse a bases de datos relacionales mediante proveedores .NET y DB
OLE, y a muchas bases de datos antiguas mediante controladores ODBC.
Tambin puede conectarse con archivos planos, archivos de Excel y
proyectos de Analysis Services.
Integration Services incluye componentes de origen que extraen datos de
archivos planos, hojas de clculo Excel, documentos XML y tablas y vistas de
bases de datos relacionales desde el origen de datos al que se conecta el
paquete.

Pgina 621 de 630

A continuacin, los datos se suelen transformar mediante las


transformaciones incluidas en Integration Services. Cuando los datos se han
transformado a formatos compatibles, pueden mezclarse fsicamente en un
conjunto de datos.
Despus de mezclar correctamente los datos y aplicarles transformaciones,
se suelen cargar en uno o varios destinos. Integration Services incluye un
destino para cargar datos en archivos planos, archivos sin procesar y bases
de datos relacionales. Los datos tambin se pueden cargar en un conjunto de
registros en memoria a los que tienen acceso otros elementos del paquete.
Llenar almacenamientos de datos y puestos de datos
Los datos de los almacenamientos de datos y los puestos de datos suelen
actualizarse frecuentemente y normalmente las cargas de datos son muy
grandes.
Integration Services incluye una tarea que realiza una carga masiva de datos
directamente desde un archivo plano a tablas y vistas de SQL Server, y un
componente de destino que realiza una carga masiva de datos en una base
de datos de SQL Server como ltimo paso de un proceso de transformacin
de datos.
Se puede configurar un paquete de SSIS como reiniciable. Esto significa que
podr volver a ejecutar el paquete desde un punto de comprobacin
predeterminado. La capacidad de reiniciar un paquete permite ahorrar mucho
tiempo, especialmente si el paquete procesa datos de un gran nmero de
orgenes.
Puede utilizar paquetes de SSIS para cargar las tablas de dimensiones y
hechos en la base de datos. Si los datos de origen de una tabla de
dimensiones estn almacenados en varios orgenes de datos, el paquete
puede mezclar los datos en un conjunto de datos y cargar la tabla de
dimensiones en un solo proceso, en lugar de utilizar un proceso
independiente para cada origen de datos.
La actualizacin de datos de almacenamientos de datos y puestos de datos
puede ser compleja, ya que ambos tipos de almacenamientos de datos
suelen incluir dimensiones de pocos cambios que pueden ser difciles de
administrar mediante un proceso de transformacin de datos. El Asistente
para dimensiones de variacin lenta automatiza la compatibilidad para las
dimensiones de variacin lenta, creando dinmicamente las instrucciones
SQL que insertan y actualizan registros, actualizan registros relacionados y
agregan nuevas columnas a las tablas.
Adems, las tareas y transformaciones de los paquetes de Integration
Services pueden procesar cubos y dimensiones de Analysis Services.
Cuando el paquete actualiza las tablas de la base de datos con las que se ha
generado un cubo, puede utilizar tareas y transformaciones de Integration
Services para procesar automticamente el cubo y las dimensiones. El
procesamiento de los cubos y las dimensiones ayuda automticamente a
mantener actualizados los datos de los usuarios de ambos entornos: los
usuarios que tienen acceso a la informacin de cubos y dimensiones, y los
usuarios que tienen acceso a datos de una base de datos relacional.
Integration Services tambin puede calcular funciones antes de que se
carguen los datos en el destino. Si los almacenamientos de datos y los
puestos de datos almacenan informacin agregada, el paquete de SSIS
Pgina 622 de 630

puede calcular funciones como SUM, AVERAGE y COUNT. Una


transformacin de SSIS tambin puede cambiar datos relacionales y
transformarlos a un formato menos normalizado pero ms compatible con la
estructura de las tablas del almacenamiento de datos.
Limpiar y normalizar datos
Independientemente de si los datos se van a cargar en una base de datos de
procesamiento de transacciones en lnea (OLTP) o de procesamiento
analtico en lnea (OLAP), una hoja de clculo de Excel o un archivo, hay que
limpiarlos y normalizarlos antes de cargarlos. Puede ser necesario actualizar
los datos por las siguientes razones:
Los datos proceden de varias sucursales de una organizacin y
en cada una de las sucursales se usan convenciones y
estndares distintos. Para poder usar los datos, es posible que
sea necesario cambiar su formato. Por ejemplo, es posible que
tenga que combinar el nombre y el apellido en una columna.
Los datos pueden ser alquilados o comprados. Para poder usar
los datos es posible que sea necesario normalizar y limpiar los
datos de forma que satisfagan los estndares de negocios. Por
ejemplo, una organizacin desea comprobar que todos los
registros usan el mismo conjunto de abreviaturas de estado o el
mismo conjunto de nombres de productos.
Los datos son especficos de la configuracin regional. Por
ejemplo, en los datos puede haber diversos formatos de
fecha/hora o numricos. Si se mezclan datos de configuraciones
regionales distintas, deben convertirse a una configuracin
regional antes de cargarse para evitar que los datos resulten
daados.
Integration Services incluye transformaciones integradas que se pueden
agregar a paquetes para limpiar y normalizar datos, modificar las maysculas
y minsculas de los datos, convertir datos a un tipo o formato distinto, o crear
nuevos valores de columna basados en expresiones. Por ejemplo, el paquete
podra concatenar las columnas de nombre y apellido en una sola columna y
despus convertir los caracteres a maysculas.
Un paquete de Integration Services tambin puede limpiar datos
reemplazando los valores de las columnas por valores de una tabla de
referencia mediante una bsqueda exacta o aproximada, a fin de encontrar
los valores en una tabla de referencia. Normalmente, un paquete realiza la
bsqueda exacta primero y, en caso de que no devuelva resultados, realiza la
bsqueda aproximada. Por ejemplo, el primer paquete intenta buscar un
nombre de producto en la tabla de referencia utilizando el valor de la clave
principal del producto. Si esta bsqueda no devuelve el nombre del producto,
el paquete intenta la bsqueda de nuevo, pero esta vez realiza una bsqueda
aproximada del nombre del producto.
Otra transformacin limpia los datos agrupando los valores similares de un
conjunto de datos. Esto es til para identificar registros que pueden ser
duplicados y, por tanto, no se deben insertar en la base de datos sin realizar
ms evaluaciones. Por ejemplo, comparar las direcciones de los registros de
clientes puede ayudar a identificar varios clientes duplicados.

Pgina 623 de 630

Generar Business Intelligence en un proceso de transformacin de


datos
Un proceso de transformacin de datos requiere lgica integrada para
responder dinmicamente a los datos que procesa y a los que tiene acceso.
Es posible que sea necesario resumir, convertir y distribuir los datos en
funcin de valores de datos. Incluso es posible que el proceso tenga que
rechazar datos en funcin de una evaluacin de valores de columna.
Para satisfacer este requisito, la lgica del paquete de SSIS puede tener que
realizar los siguientes tipos de tareas:
Mezclar datos de varios orgenes de datos.
Evaluar datos y aplicar conversiones de datos.
Dividir un conjunto de datos en mltiples conjuntos de datos en
funcin de valores.
Aplicar agregaciones diferentes a distintos subconjuntos de un
conjunto de datos.
Cargar subconjuntos de los datos en destinos distintos o en varios
destinos.
Integration Services proporciona contenedores, tareas y transformaciones
para generar Business Intelligence en paquetes de SSIS.
Los contenedores admiten la repeticin de flujos de trabajo recorriendo
archivos u objetos, y evaluando expresiones. Un paquete puede evaluar
datos y repetir flujos de trabajo en funcin de los resultados. Por ejemplo, si
la fecha pertenece al mes actual, el paquete realiza un conjunto de tareas; en
caso contrario, realiza un conjunto de tareas alternativas.
Las transformaciones pueden evaluar expresiones y despus, en funcin de
los resultados, enviar filas de un conjunto de datos a diferentes destinos. Una
vez divididos los datos, el paquete puede aplicar distintas transformaciones a
cada subconjunto. Por ejemplo, una expresin puede evaluar una columna de
fecha, agregar los datos de ventas del perodo correspondiente y despus
almacenar nicamente la informacin resumen.
Tambin es posible enviar un conjunto de datos a varios destinos y aplicar a
continuacin distintos conjuntos de transformaciones a los mismos datos. Por
ejemplo, un conjunto de transformaciones puede resumir los datos mientras
otro conjunto de transformaciones expande los datos buscando valores en
tablas de referencia y agregando datos de otros orgenes.
Automatizar las funciones administrativas y la carga de datos
Normalmente, los administradores desean automatizar las funciones
administrativas como la copia de seguridad y la restauracin de bases de
datos, la copia de bases de datos de SQL Server y los objetos que contienen,
la copia de objetos de SQL Server y la carga de datos. Los paquetes de
Integration Services pueden realizar estas funciones.
Integration Services incluye tareas diseadas especficamente para copiar
objetos de bases de datos de SQL Server como tablas, vistas y
procedimientos almacenados, para copiar objetos de SQL Server como
bases de datos, inicios de sesin y estadsticas, y para agregar, modificar y
eliminar objetos y datos de SQL Server mediante instrucciones TransactSQL.
La administracin de un entorno de base de datos OLTP u OLAP suele incluir
la carga de datos. Integration Services incluye varias tareas que facilitan la
Pgina 624 de 630

carga masiva de datos. Puede utilizar una tarea para cargar datos de
archivos de texto directamente en tablas y vistas de SQL Server, o puede
usar un componente de destino para cargar datos en tablas y vistas de SQL
Server despus de aplicar transformaciones a los datos de la columna.
Un paquete de Integration Services puede ejecutar otros paquetes. Una
solucin de transformacin de datos con muchas funciones administrativas
puede separarse en varios paquetes de forma que resulte ms sencillo
administrar y reutilizar los paquetes.
Si se necesita realizar las mismas funciones administrativas en distintos
servidores, puede utilizar paquetes. Un paquete puede usar un bucle para
recorrer los servidores y realizar las mismas funciones en varios equipos.
Integration Services proporciona un enumerador que recorre los Objetos de
administracin de SQL (SMO), como ayuda para la administracin de SQL
Server. Por ejemplo, un paquete puede usar el enumerador de SMO para
realizar las mismas funciones administrativas en cada trabajo de la coleccin
Jobs de una instalacin de SQL Server.
Arquitectura de Integration Services
Microsoft SQL Server 2005 Integration Services (SSIS) se compone de cuatro
partes clave:
1. el servicio Integration Services
2. el modelo de objetos de Integration Services
3. el tiempo de ejecucin y los ejecutables de tiempo de ejecucin de
Integration Services
4. la tarea Flujo de datos que encapsula el motor de flujo de datos y los
componentes de flujo de datos.
En el diagrama siguiente se muestra la relacin entre las partes.

Pgina 625 de 630

Los programadores que obtienen acceso al modelo de objetos de Integration


Services pueden escribir cdigo mediante cualquier lenguaje compatible con
Common Language Runtime (CLR).
Servicio Integration Services
El servicio Integration Services, disponible en SQL Server Management
Studio, supervisa la ejecucin de paquetes de Integration Services y
administra el almacenamiento de paquetes.
Modelo de objetos de Integration Services
El modelo de objetos de Integration Services incluye interfaces de
programacin de aplicaciones (API) administradas para obtener acceso a las
herramientas, utilidades de lnea de comandos y aplicaciones personalizadas
de Integration Services.
Tiempo de ejecucin de Integration Services
El tiempo de ejecucin de Integration Services guarda el diseo de paquetes,
ejecuta paquetes y admite registros, puntos de interrupcin, configuracin,
conexiones y transacciones. Los ejecutables de tiempo de ejecucin de
Pgina 626 de 630

Integration Services estn conformados por: el paquete, los contenedores,


las tareas y los controladores de eventos que incluye Integration Services.
Flujo de datos de Integration Services
La tarea Flujo de datos encapsula el motor de flujo de datos. El motor de flujo
de datos proporciona los bferes en memoria que mueven datos desde el
origen hasta el destino y llama los orgenes que extraen datos de archivos y
bases de datos relacionales. El motor de flujo de datos tambin administra las
transformaciones que modifican datos, as como los destinos que cargan
datos o ponen datos a disposicin de otros procesos. Los componentes de
flujo de datos de Integration Services son los orgenes, transformaciones y
estinos que incluye Integration Services. Tambin puede incluir componentes
personalizados en un flujo de datos.

Uso de Business Intelligence Development Studio y


SQL Server Management Studio con Integration
Services
Microsoft SQL Server 2005 consolida la administracin de servidores y la
creacin de objetos en dos entornos integrados: SQL Server Management
Studio y Business Intelligence Development Studio. Ambos entornos utilizan
soluciones y proyectos para fines de administracin y organizacin. Adems,
ambos ofrecen una funcionalidad de control de cdigo fuente totalmente
integrada (si hay un proveedor de control de cdigo fuente como Microsoft
Visual SourceSafe instalado).
Aunque ambos entornos utilizan contenedores y elementos visuales
establecidos en Microsoft Visual Studio 2005 (por ejemplo, proyectos,
soluciones, el Explorador de soluciones y el cuadro de herramientas), estos
entornos no forman parte de Visual Studio 2005. Por el contrario, los entornos
de Studio incluidos en SQL Server 2005 constituyen entornos independientes
diseados para los programadores de aplicaciones de negocio que trabajan
con SQL Server, SQL Server Mobile, Analysis Services, Integration Services
y Reporting Services. No es posible utilizar estas herramientas para crear
aplicaciones personalizadas o realizar grandes proyectos de desarrollo.

SQL Server Management Studio


SQL Server Management Studio es un entorno integrado para obtener
acceso a todos los componentes de SQL Server, as como para configurarlos
y administrarlos. SQL Server Management Studio combina un amplio grupo
de herramientas grficas con un editor de texto enriquecido para ofrecer
acceso a SQL Server a los programadores y administradores, sin importar su
nivel de especializacin.

Pgina 627 de 630

SQL Server Management Studio puede combinar las funciones del


Administrador corporativo y el Analizador de consultas, herramientas
incluidas en versiones anteriores de SQL Server, en un nico entorno.
Adems,
SQL Server Management Studio proporciona un entorno para administrar
Analysis Services, Integration Services, Reporting Services y XQuery. Este
entorno ofrece a los programadores una experiencia familiar y proporciona a
los administradores de bases de datos una herramienta nica para realizar
sus tareas con la facilidad de las herramientas grficas y una experiencia de
secuencias de comandos enriquecida.
Business Intelligence Development Studio
Business Intelligence Development Studio es un entorno integrado para
desarrollar construcciones de inteligencia empresarial, como cubos, orgenes
de datos, informes y paquetes de Integration Services. Business Intelligence
Development Studio incluye plantillas de proyecto que proporcionan un
contexto para desarrollar construcciones especficas. Por ejemplo, se puede
optar por un proyecto de Analysis Services si el objetivo es crear una base de
datos de Analysis Services que contenga cubos, dimensiones o modelos de
Data Mining.
En Business Intelligence Development Studio, es posible desarrollar
proyectos que formen parte de una solucin independiente de un servidor
concreto. Por ejemplo, puede incluir un proyecto de Analysis Services, de
Integration Services y de Reporting Services en la misma solucin. Puede
implementar los objetos en un servidor de prueba para probarlos durante el
desarrollo y, posteriormente, implementar el resultado de los proyectos en
uno o ms servidores de desarrollo o de produccin.
Soluciones, proyectos y elementos
Tanto SQL Server Management Studio como Business Intelligence
Development Studio proporcionan proyectos que se organizan en soluciones.
Los proyectos de SQL Server se guardan como secuencias de comandos de
SQL Server, de Analysis Server y de SQL Server Mobile. Los proyectos de
Business Intelligence Development Studio se guardan como proyectos de
Analysis Services, de Integration Services y de informes. Los proyectos
deben abrirse en la misma herramienta en la que han sido creados.
Elegir entre SQL Server Management Studio y Business Intelligence
Development Studio
SQL Server Management Studio est diseado para desarrollar y administrar
objetos de base de datos y para administrar y configurar objetos existentes
de Analysis Services. Business Intelligence Development Studio est
diseado para desarrollar aplicaciones de Business Intelligence. Si est
implementando una solucin que utiliza servicios de bases de datos de SQL
Server o si est administrando una solucin existente que utiliza SQL Server,
Analysis Services, Integration Services o Reporting Services, debe utilizar
SQL Server Management Studio. Si est desarrollando una solucin que
utiliza Analysis Services, Integration Services o Reporting Services, debe
utilizar Business Intelligence Development Studio.

Pgina 628 de 630

Desarrollo integrado
BI Development Studio integra toda la funcionalidad que anteriormente
estaba disponible en Analysis Manager y en el entorno de desarrollo y
administracin utilizado en versiones anteriores de Analysis Services.
Tambin agrega muchas funciones nuevas a un nico entorno de desarrollo
que se puede configurar.
En la tabla siguiente se describen algunas de las caractersticas de BI
Development Studio.
Explorador de soluciones
El Explorador de soluciones proporciona una vista organizada de los
proyectos y archivos, adems de un rpido acceso a los comandos
que les pertenecen. Una barra de herramientas asociada a esta
ventana ofrece los comandos utilizados con frecuencia para el
elemento resaltado en la lista.
Diseadores y ventanas de cdigo
BI Development Studio permite ver y editar definiciones de objeto,
como cubos, modelos de minera de datos, paquetes e informes, ya
sea a travs de una interfaz grfica de usuario, lo que se denomina un
diseador, o directamente mediante la edicin del cdigo basado en
XML que define el objeto.
Cuadros de dilogo no modales
Es posible obtener acceso a varios recursos al mismo tiempo en BI
Development Studio. Por ejemplo, si utiliza el Diseador de informes
para desarrollar un informe en un proyecto de Reporting Services
basado en un cubo de un proyecto de Analysis Services, puede
mostrar las propiedades del cubo sin cerrar el Diseador de informes.
El Diseador de informes es el diseador de Reporting Services para
el desarrollo y la visualizacin de informes.
Configurabilidad
Puede personalizar BI Development Studio para adaptarlo a sus
hbitos, su entorno y sus preferencias de trabajo, lo que incluye las
preferencias de edicin de cdigo, la configuracin de implementacin
y los perfiles.
Extensibilidad
BI Development Studio est diseado de modo que sea
completamente extensible y permita ampliar el entorno de desarrollo
mediante programacin a fin de ajustarse a sus necesidades.

Administracin de proyectos mejorada


En versiones anteriores de SQL Server Analysis Services y SQL Server
Integration Services, los datos y los metadatos se modificaban directamente y
nicamente durante el proceso de diseo. Sin embargo, ahora es posible
utilizar el desarrollo basado en proyectos de BI Development Studio para
Pgina 629 de 630

revisar, ajustar y explorar los objetos de un entorno de produccin sin miedo


a causar daos. Puede utilizar el Explorador de soluciones, diseado para los
programadores de Business Intelligence que crean y administran
aplicaciones, para organizar definiciones de objeto, como vistas de orgenes
de datos, y otros archivos de proyectos a fin de formar una solucin. Si ha
creado aplicaciones mediante Microsoft Visual Studio .NET, el Explorador de
soluciones le resultar conocido. Analysis Services, Integration Services y
Reporting Services utilizan la funcionalidad del proyecto.
El control de cdigo fuente tambin est completamente integrado en BI
Development Studio, as que es posible administrar las versiones de las
soluciones de Business Intelligence desde el entorno de desarrollo.

Pgina 630 de 630

Potrebbero piacerti anche