Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2007
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
Pgina 12 de 630
Pgina 13 de 630
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.
Pgina 16 de 630
Pgina 17 de 630
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
Ventajas
1.
2.
3.
4.
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
Pgina 21 de 630
Pgina 22 de 630
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
Pgina 25 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 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
Pgina 28 de 630
Pgina 30 de 630
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
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
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
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
Pgina 36 de 630
e1 + e2
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)
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
Programa 5 Estrellas
2007
Pgina 39 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
Pgina 50 de 630
Pgina 51 de 630
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.
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.
las
vistas
tericamente
Cada sistema puede hacer unas suposiciones particulares sobre las vistas
que son actualizables.
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
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
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.
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.
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.
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
Pgina 62 de 630
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.
Pgina 64 de 630
1.
2.
3.
4.
5.
varios.
Pgina 65 de 630
Pgina 66 de 630
Pgina 67 de 630
Pgina 69 de 630
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
Pgina 71 de 630
Pgina 72 de 630
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.
Pgina 76 de 630
Programa 5 Estrellas
2007
Pgina 77 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
Pgina 88 de 630
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.
El Resultado es el siguiente:
Pgina 90 de 630
FROM
EMP
WHERE
DEPTNO=30;
Para obtener todas las columnas pero de los empleados del
Departamento nmero 30:
El Resultado es el siguiente:
ENAME,
JOB,
SAL
JOB = 'SALESMAN' AND SAL >=100;
NAME,
JOB,
SAL
JOB = 'manager' OR SAL >=100;
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 Resultado es el siguiente:
ENAME,
DEPTNO
ENAME = 'WARD';
El Resultado es el siguiente:
Segunda Bsqueda
SELECT
LOC
FROM DEPT
WHERE
DEPTNO = 30;
El Resultado es el siguiente:
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
especifica que los registros de las tablas EMP y DEPT deben coincidir en el
valor del campo o columna DEPTNO.
DEPTNO,
MAX(SAL)
FROM EMP
GROUP BY DEPTNO;
El Resultado es el siguiente:
AVG:
DNAME,
JOB,
SUM(SAL),
COUNT(*),
AVG(SAL)
FROM EMP,DEPT
WHERE
EMP.DEPTNO=DEPT.DEPTNO
GROUP BY DNAME,JOB;
El Resultado es el siguiente:
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:
ENAME,
SAL
FROM EMP
WHERE SAL > (SELECT AVG(SAL)
FROM EMP);
El Resultado es el siguiente:
Pgina 96 de 630
Programa 5 Estrellas
2007
Pgina 97 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
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.
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:
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
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
Full-text search
Descripcin
Seguridad
XML
Replicacin
Mantenimiento de
base de datos
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.
Descripcin
Analysis Services
Engine
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.
Descripcin
SSIS Designer
Transformaciones
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.
Event APIs
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
Backup y
Restauracin
Attach y Detach
Datos XML
Performance
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
Report
execution
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.
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
Replicacin
Transaccional
Replicacin
Heterognea
Replicacin Peer-topeer
Replicacin HTTP
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).
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
Flexibilidad de
Trabajo
Mensajes de
Bloqueo
Relacionados
Programa de
activacin
automtica de
Servicio
Integracin de
Base de Datos
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
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.
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).
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.
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.
SQLiMail
Introduccin
Descripcin
SQLiMail usa SMTP, no Extended MAPI.
Failover accounts
Envo
Desincronizado
Perfil de
Seguridad
Configuracin
Integrada
Programa 5 Estrellas
2007
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
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.
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.
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
Descripcin
Mobile Edition
Requerimientos de Hardware
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.
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
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.
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,
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.
tem a Chequear
Descripcin
Requerimientos
Mnimos
para
el
Sistema Operativo
Nivel Requerido del
Operating
System
Service Pack
Compatibilidad
de
SQL con el Sistema
Operativo
Configuracin 32-bit o
64-bit
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.
Descripcin
Requerimiento
de Rebooteo
Pendiente
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.
que
key
Descripcin
Privilegios
del
Administrador del Sistema
Descripcin
Requerimiento de Internet
Explorer
Refiera al usuario al
Windows Update
Component para instalar
El navegador requerido.
Chequee
las
versiones
instaladas de SQL Server
para tener las condiciones
necesarias cuando actualiza.
Requisitos MSXML
Refiera al usuario al
Windows Update
Component para instalar
MSXML.
Descripcin
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.
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.
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.
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.
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.
Descripcin
TARGETCOMPUTER
ADMINACCOUNT
ADMINPASSWORD
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.
Descripcin
Soporte de
clustering
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.
Objetivos
Agregar o quitar componentes de SQL Server 2005.
Remover SQL Server 2005.
Administrar una instalacin de SQL Server.
Introduccin
Si necesita remover SQL Server 2005 de una computadora, use las
aplicaciones Add or Remove Programs del Panel de Control.
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.
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
60
65
70
80
90
Programa 5 Estrellas
2007
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
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
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
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.
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.
Programa 5 Estrellas
2007
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
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
Sintaxis
Descripcin
Valor
devuelto
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsAnsiNullsEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsAnsiWarningsEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsAutoClose
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsAutoCreateStatistics
IsAutoShrink
1 = Verdadero
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
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsCloseCursorsOnCommitEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsDboOnly
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsDetached
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsEmergencyMode
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsFulltextEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsInLoad
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsInRecovery
1 = Verdadero
0 = FALSE o
NULL1 = La
entrada no es
vlida
IsInStandBy
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsLocalCursorsDefault
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsNotRecovered
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
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsParameterizationForced
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsQuotedIdentifiersEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsReadOnly
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsRecursiveTriggersEnabled
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsShutDown
1 = Verdadero
0 = Falso
NULL1 = La
entrada no es
vlida
IsSingleUser
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsSuspect
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
IsTruncLog
1 = Verdadero
0 = Falso
NULL =
Entrada no
vlida
Versin
Nmero de
versin = La
base de datos
est abierta.
NULL = La
base de datos
est cerrada.
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
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.
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.
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.
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.
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.
Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 1
Introduccin al T-SQL
2007
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
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
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.
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
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
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.
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
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
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.
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.
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
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 ] ]
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
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).
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.
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
[ 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
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.
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
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;
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 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
Funciones
metadatos
Funciones
seguridad
Funciones de cadena
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.
NTILE
DENSE_RANK
ROW_NUMBER
MIN
CHECKSUM
SUM
CHECKSUM_AGG
STDEV
COUNT
STDEVP
COUNT_BIG
VAR
Pgina 272 de 630
GROUPING
VARP
MAX
OPENROWSET
OPENDATASOURCE
OPENXML
DATEPART
DAY
GETDATE
GERUTCDATE
MONTH
YEAR
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.
PATINDEX
SPACE
CHARINDEX
QUOTENAME
STR
DIFFERENCE
REPLACE
STUFF
LEFT
REPLICATE
SUBSTRING
LEN
REVERSE
UNICODE
LOWER
RIGHT
UPPER
LTRIM
RTRIM
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
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
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
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.
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
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.
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
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.
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
Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 3
Objetos Avanzados
2007
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
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
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.
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:
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
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
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.
Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 4
T-SQL Avanzado
2007
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
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
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
; 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
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
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.
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
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
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)
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
--------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
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
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
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.
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
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
GO
-- Example of calling the function for a specific region
SELECT *
FROM Sales.ufn_CustomerNamesInRegion(N'Washington')
GO
Comentarios
Determinista, a menos que se utilice con datetime, smalldatetime o
sql_variant.
Determinista, a menos que se cumpla una de estas condiciones:
@@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
INSERT #temp
SELECT ...
FROM fn_results(), t1
WHERE ...
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
Programa 5 Estrellas
SQL Server 2005
Estrella 2
Unidad 5
Seguridad
2007
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
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
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.
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.
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
Esquemas predeterminados
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.
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
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
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
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
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.
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.
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
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.
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
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
Omitir
Obligatorio
Obligatorio
Omitir
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
Programa 5 Estrellas
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
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
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
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.
Tipos de ndices
En la tabla siguiente se indican los tipos de ndice disponibles en SQL Server
2005.
Tipo
ndice
de
Descripcin
nico
ndice
con
ndice no agrupado que se extiende para incluir columnas sin clave adems
columnas
de las columnas de clave.
incluidas
Vistas
indizadas
Texto
XML
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.
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
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
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
Valor
1
249
249
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.
.
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.
Columnas de Varchar de
insercin no consecutiva
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.
}
<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 deshabilitado
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.
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
ndices deshabilitados
ndices XML
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
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.
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.
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
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
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
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
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.
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
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
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
ALTER INDEX
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.
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
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
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
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
--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.
Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 2
Componentes del
SQL Server 2005
2007
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
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
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.
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.
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.
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
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
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
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.
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.
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
Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 3
Administracin Avanzada
2007
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
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
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.
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
La lista siguiente describe los requisitos del sistema para un equipo que
ejecuta la herramienta y examina equipos remotos:
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.
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.
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
Valor predeterminado
table_name
Nota:
owner_name debe ser dbo. Si se especifica otro valor, la
ejecucin de dta es errnea y devuelve un error.
Ninguno
-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
IDX
Slo ndices.
IV
NCL_IDX
-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
ALL
IDX
-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
ALIGNED Slo
particiones
alineadas
(para
mejorar
la
capacidad
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
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
ON
-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
STMT_COST
EVT_FREQ
STMT_DET
CUR_STMT_IDX
Informe relacional de
(configuracin actual)
instrucciones
ndices
REC_STMT_IDX
ndices
REC_IDX_USAGE
CUR_IDX_DET
REC_IDX_DET
Informe de detalles
recomendada)
VIW_TAB
WKLD_ANL
DB_ACCESS
de
ndices
(configuracin
TAB_ACCESS
COL_ACCESS
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
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.
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:
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;
Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 4
Reporting Services
2007
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
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
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.
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.
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.
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
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
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
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
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.
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.
Programa 5 Estrellas
SQL Server 2005
Estrella 3
Unidad 5
BI Development Studio
2007
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
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
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.
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.
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.
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.