Tunning de Base de Datos 2 Copias de seguridad en una Base de Datos 2 Definicin de Backup 2 Introduccin a las estrategias de seguridad y restauracion en sql server 3 Impacto del modelo de recuperacin de Copia de Seguridad y Restauracin 4 Diseo de la Estrategia de Copia de Seguridad 4 Copia de Seguridad en SQL Server 5 Backup (Transact-SQL) 6 Planes de Mantenimiento 7 Caractersticas 7 Funcionabilidad 7 Crear planes de mantenimiento usando sql server management studio 8 Particin de tablas SEMANA 9 : Modelo relacional. Normalizacin 97 SEMANA 10 : Normalizacin 111 SEMANA 11 : Normalizacin 129 SEMANA 12 : Normalizacin 137 Unidad de Aprendizaje 5 SEMANA 13 : Obtencin del modelo lgico-global de los datos a partir del 143
1
ADMINISTRACIN DE BASE DE DATOS
La administracin de bases de datos se realiza con un sistema llamado DBMS (Database management system [Sistema de administracin de bases de datos]). El DBMS es un conjunto de servicios (aplicaciones de software) para administrar bases de datos, que permite: Un fcil acceso a los datos El acceso a la informacin por parte de mltiples usuarios La manipulacin de los datos encontrados en la base de datos (insertar, eliminar, editar)
TUNNING DE BASE DE DATOS
El objetivo de Tunning es la optimizacin tanto de las sentencias SQL como de mejoras en la configuracin del servidor de Bases de Datos, desde el punto de vista del tiempo de ejecucin y consumo de recursos
COPIAS DE SEGURIDAD EN UNA BASE DE DATOS
DEFINICIN DE BACKUP Es una copia de los datos originales que se realiza con el fin de disponer de un medio de recuperarlos en caso de su prdida. Las copias de seguridad son tiles ante distintos eventos y usos: Recuperar los sistemas informticos y los datos de una catstrofe informtica, natural o ataque. Restaurar una pequea cantidad de archivos que pueden haberse eliminado accidentalmente, corrompido, infectado por un virus informtico u otras causas.
2 o Guardar informacin histrica de forma ms econmica que los discos duros y adems permitiendo el traslado a ubicaciones distintas de la de los datos originales.
El proceso de copia de seguridad se complementa con otro conocido como restauracin de los datos (en ingls restore), que es la accin de leer y grabar en la ubicacin original u otra alternativa los datos requeridos.
Se han desarrollado muchas tcnicas diferentes para optimizar el procedimiento de efectuar los backups. Estos procedimientos incluyen entre otros optimizaciones para trabajar con archivos abiertos y fuentes de datos en uso y tambin incluyen procesos de compresin, cifrado, y procesos de deduplicacion, entendindose por esto ltimo a una forma especfica de compresin donde los datos superfluos son eliminados. Muchas organizaciones e individuos tratan de asegurarse que el proceso de backup se efecte de la manera esperada y trabajan en la evaluacin y la validacin de las tcnicas utilizadas. Tambin es importante reconocer las limitaciones y los factores humanos que estn involucrados en cualquier esquema de backup que se utilice. Las copias de seguridad garantizan dos objetivos: integridad y disponibilidad
INTRODUCCIN A LAS ESTRATEGIAS DE SEGURIDAD Y RESTAURACION EN SQL SERVER
El propsito de crear copias de seguridad de SQL Server es para que usted pueda recuperar una base de datos daada. Sin embargo, copias de seguridad y restauracin de los datos debe ser personalizado para un ambiente particular y debe trabajar con los recursos disponibles. Por lo tanto, un uso fiable de copia
3 de seguridad y restauracin para la recuperacin exige una copia de seguridad y restauracin de la estrategia. Una copia de seguridad bien diseado y restaurar la estrategia maximiza la disponibilidad de datos y minimiza la prdida de datos, teniendo en cuenta sus necesidades de negocio en particular. Una estrategia de copia de seguridad y restauracin de copia de seguridad contiene una porcin de seguridad y una porcin de restauracin. La parte de seguridad de la estrategia define el tipo y frecuencia de las copias de seguridad, la naturaleza y la velocidad del hardware que se requiere para que, como copias de seguridad deben ser probados, y dnde y cmo los medios de comunicacin copia de seguridad se van a almacenar (incluyendo las consideraciones de seguridad).
IMPACTO DEL MODELO DE RECUPERACIN DE COPIA DE SEGURIDAD Y RESTAURACIN
Copia de seguridad y restauracin de las operaciones se producen en el contexto de un modelo de recuperacin. Un modelo de recuperacin es una propiedad de base de datos que controla el registro de transacciones que se gestiona. Adems, el modelo de recuperacin de una base de datos determina qu tipos de copias de seguridad y restauracin son compatibles con la base de datos. Normalmente, una base de datos utiliza ya sea el modelo de recuperacin simple o el modelo de recuperacin completa.
DISEO DE LA ESTRATEGIA DE COPIA DE SEGURIDAD
La estrategia de copia de seguridad ptima depende de una variedad de factores, de los cuales los siguientes son especialmente importantes: Cuntas horas al da no tiene aplicaciones para acceder a la base de datos? Si hay una predecible temporada baja perodo, le recomendamos que programe copias de seguridad completas de bases de datos para ese perodo. Con qu frecuencia se producen cambios y actualizaciones probables que ocurra?
4 Si los cambios son frecuentes, considere lo siguiente: Bajo el modelo de recuperacin simple, considere la programacin de copias de seguridad diferenciales entre copias de seguridad de base de datos completa. Bajo el modelo de recuperacin completa, debe programar copias de seguridad frecuentes de registro. Programacin de copias de seguridad diferenciales entre copias de seguridad completas puede reducir el tiempo de restauracin mediante la reduccin del nmero de copias de seguridad de registros que se deben restaurar despus de restaurar los datos. Son los cambios probables de ocurrir en tan slo una pequea parte de la base de datos o en una gran parte de la base de datos?
Para una gran base de datos en la que los cambios se concentran en una parte de los archivos o grupos de archivos, copias de seguridad parciales o copias de seguridad de archivos y puede ser til. Cunto espacio en disco una copia de seguridad completa requiere?
COPIA DE SEGURIDAD EN SQL SERVER
El alcance de una copia de seguridad de los datos puede ser una base de datos completa, una base de datos parciales, o un conjunto de archivos o grupos de archivos. Para cada uno de estos, SQL Server admite copias de seguridad completas y diferenciales:
o Copia de seguridad completa Contiene todos los datos en una base de datos especfica o un conjunto de grupos de archivos o archivos, y tambin suficiente registro para permitir la recuperacin de los datos.
o Copia de seguridad diferencial Una copia diferencial es una copia de seguridad completa de lectura / escritura de datos. Una copia de seguridad diferencial incluye slo los datos que ha cambiado desde la base diferencial. Por lo general, los respaldos diferenciales que se toman poco despus de la copia de seguridad de base son ms pequeos y ms rpidos de crear que la base de una copia de seguridad completa. Por lo tanto, utilizar los respaldos diferenciales puede acelerar el proceso de hacer copias de seguridad frecuentes para disminuir el riesgo de prdida de datos
5
o Copia de seguridad del registro de transacciones Bajo el modelo de recuperacin optimizado para cargas masivas de registros de modelo de recuperacin, copias de seguridad del registro de transacciones (o copias de seguridad de registro) son obligatorias. Cada copia de seguridad de registro cubre la parte del registro de transacciones que estaba activa cuando la copia de seguridad fue creada, e incluye todos los registros que no fueron respaldados en una copia de seguridad de registros anterior.
Antes de crear la copia de seguridad de registro en primer lugar, debe crear una copia de seguridad completa, como una copia de seguridad de bases de datos. A partir de entonces, la copia de seguridad del registro de transacciones con regularidad es necesaria, no slo para minimizar la prdida de trabajo sino tambin para permitir el truncamiento del registro de transacciones. . BACKUP (TRANSACT-SQL)
Comando TRANSACT-SQL que realiza copias de seguridad de una base de datos completa, o uno o ms archivos o grupos de archivos (BASE DE DATOS DE SEGURIDAD). Adems, bajo el modelo de recuperacin optimizado para cargas masivas de registros de modelo de recuperacin, copias de seguridad del registro de transacciones (BACKUP LOG). La sintaxis para realizar un BACK UP a la base de datos es la siguiente: BACKUP DATABASE { nombre_base_datos | @var_nombre_base_datos } TO <dispositivo_backup> [ ,...n ] [ <MIRROR TO clause> ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ] [;]
La sintaxis para realizar un BACK UP a los Filegroup de la base de datos BACKUP DATABASE { nombre_base_datos | @var_nombre_base_datos } <file_or_filegroup> [ ,...n ] TO <dispositivo_backup> [ ,...n ] [ <MIRROR TO clause> ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ] [;]
6 La sintaxis para realizar un BACK UP al registro de transacciones o LOG de la base de datos BACKUP LOG { nombre_base_datos | @var_nombre_base_datos } TO <dispositivo_backup> [ ,...n ] [ <MIRROR TO clause> ] [ next-mirror-to ] [ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ] [;]
PLANES DE MANTENIMIENTO
Los planes de mantenimiento crean un flujo de trabajo de las tareas necesarias para asegurarse de que la base de datos est optimizada, se realizan copias de seguridad de la misma con regularidad y no tiene incoherencias. El Asistente para planes de mantenimiento tambin crea planes de mantenimiento principales, pero la creacin manual de planes le da mucha ms flexibilidad.
CARACTERSTICAS Los planes de mantenimiento de SQL Server 2012 proporcionan las caractersticas siguientes: o Creacin de flujos de trabajo con diferentes tareas de mantenimiento tpicas. o Jerarquas conceptuales. Cada plan le permite crear o editar flujos de trabajo de tareas. o Compatibilidad con planes multiservidor que se pueden utilizar en entornos de servidor maestro o servidor de destino. o Compatibilidad con el historial de planes de registro en los servidores remotos. o Compatibilidad con la autenticacin de Windows y la autenticacin de SQL Server. Siempre que sea posible, utilice la autenticacin de Windows.
FUNCIONABILIDAD Los planes de mantenimiento se pueden crear para realizar las tareas siguientes: o Reorganizar los datos de las pginas de datos y de ndices mediante una nueva generacin de los ndices con un nuevo factor de relleno. Comprimir archivos de datos mediante la eliminacin de las pginas de base de datos que estn vacas. o Actualizar las estadsticas de los ndices para asegurarse de que el optimizador de consultas dispone de informacin actualizada acerca de la distribucin de los valores de los datos en las tablas.
7 o Realizar comprobaciones de coherencia interna de los datos y de las pginas de datos de la base de datos para asegurarse de que no se han daado debido a un problema de software o del sistema. o Realizar copias de seguridad de la base de datos y de los archivos de registro de transacciones. Las copias de seguridad de la base de datos y del registro pueden mantenerse durante un perodo especificado. Esto le permite crear un historial de copias de seguridad para utilizarlo si tiene que restaurar la base de datos a una fecha anterior a la de la ltima copia de seguridad de la base de datos. o Ejecutar trabajos del Agente SQL Server. Se puede usar para crear trabajos que realicen diversas acciones y los planes de mantenimiento para ejecutar esos trabajos.
CREAR PLANES DE MANTENIMIENTO USANDO SQL SERVER MANAGEMENT STUDIO SQL Server nos permite crear un plan de mantenimiento de nuestras bases de datos de forma muy sencilla sin embargo es poco comn que existan en la mayora de los entornos sencillamente por desconocimiento tcnicos de los administradores de sistemas o por no saber cmo nuestras bases de datos se ven afectadas a medida que se realizan operaciones sobre ella lo cual reduce el rendimiento y a su vez los tiempo de respuesta en operaciones CRUD y especialmente en las consultas. Una vez ms, ms all de que el usuario tenga que esperar un segundo ms en una consulta se trata de como la disminucin del rendimiento de nuestras aplicaciones afecta de forma global el desempeo de nuestra aplicacin, cuanto tiempo (horas o minutos laborables) nos hace perder y los costos econmicos asociados a ello, cuanto espacio estamos ocupando de manera innecesaria en nuestros servidores y cul sera el costo econmico de perder parte de nuestros datos en caso de un fallo grave en nuestros discos. Con un poco de anlisis de nuestras necesidades podemos llevar a cabo un plan de mantenimiento en pocos minutos. Veamos cmo hacerlo en SSMS. En SQL Server Managment Studio podremos ver la carpeta Managment y dentro de ella Maintenance Plans, para usar el ayudante seleccionamos Maintenance Plans Wizard
8
Hacemos clic en Next
Le damos un nombre a nuestro plan de mantenimiento ya que podremos crear tantos como queramos para distintas base de datos o conjunto de ellas.
Escogemos las tareas de mantenimiento que queremos realizar.
9 o Shrink Database: reduce espacio de la base de datos y los archivos de log. o Update Statistic: asegura que el optimizador de consultas tiene la informacin actualizada acerca de la distribucin de los datos en la base de datos, esto permite que el optimizador realice mejores clculos acerca de cmo realizar alguna consulta. o Reorganized Index: desfragmenta y comprime los ndices fsicos (Clustered Index) y no fsicos. o Rebuild Index: reconstruye las paginas ndices permitiendo la reorganizacin de los datos y bsquedas ms rpidas. o Check Database Integrity: confirma la integridad de los datos y ndices de la base de datos. o History Cleanup: elimina informacin histrica sobre copias de respaldos y restauraciones. o Maintenance Cleanup: elimina archivos dejados por la ejecucin de los planes de mantenimiento.
Escogemos el orden en que se ejecutan las tareas.
10
Para cada tarea se nos pedira que escojamos la base de datos, podemos escoger una, varias o todas.
Para cada tarea sera necesario escoger las opciones que correspondan.
11
Despus de configurar todas las tareas se creara el plan de ejecucion.
12 Podremos ver en el diseador el plan de mantenimiento que hemos creado.
En la parte superior del diseador en el icono con forma de calendario podemos configurar la programacin de un nuestro plan de mantenimiento.
13
Finalmente lo mismo que hemos realizado con el SSMS lo podemos realizar con SQL Server Integration Services y el SQL Server Business Intelligence Development Studio.
Cuando creemos un proyecto podremos ver que en las herramientas tenemos una seccin dedicada a tareas del plan de mantenimiento. Solo es necesario arrastrar las tareas que queremos ejecutar.
14
Si hace clic derecho> Editar sobre cualquier tarea la podemos configura exactamente igual como lo hacamos con SSMS.
15
Con esto generaremos un paquete de SSIS que podremos ejecutar cada vez que queramos. Como hemos visto crear un plan de mantenimiento es relativamente sencillo, obviamente cada escenario necesitara de realizar una anlisis de cules son nuestras necesidades y como puede impactar el plan de mantenimiento a nuestra aplicacin sobre todo si estamos hablamos de producto out of the box. PARTICIN DE TABLAS
DEFINICIN La particin facilita el uso de tablas e ndices grandes, ya que permite administrar y tener acceso a subconjuntos de datos de forma rpida y eficaz, a la vez que mantiene la integridad de la recopilacin de datos. Si se utilizan las particiones, una operacin como la carga de datos desde un sistema OLTP a un sistema OLAP tarda solo unos segundos, en lugar de los minutos y las horas que tardaba en versiones anteriores de SQL Server. Las operaciones de mantenimiento que se realizan en los subconjuntos de datos tambin se realizan de forma ms eficaz porque estas operaciones solo afectan a los datos necesarios, en lugar de a toda la tabla.
16
CUNDO DEBEMOS PARTICIONAR La decisin acerca del uso de las particiones depende bsicamente del tamao actual o futuro de la tabla, la forma en que se utiliza y el rendimiento que presenta en las consultas de usuario y las operaciones de mantenimiento. Por regla general, puede resultar adecuado crear particiones de una tabla grande si se cumplen las dos condiciones siguientes: La tabla contiene, o se espera que contenga, muchos datos que se utilizan de formas diferentes. Las consultas o las actualizaciones en la tabla no presentan el rendimiento que se esperaba o los costos de mantenimiento superan los perodos de mantenimiento predefinidos.
ARQUITECTURA DE LAS PARTICIONES En SQL Server, se considera que todas las tablas e ndices de una base de datos disponen de particiones, incluso si se componen de una sola particin. Bsicamente, las particiones conforman la unidad bsica de organizacin en la arquitectura fsica de tablas e ndices. Esto significa que la arquitectura lgica y fsica de las tablas y los ndices compuestos por varias particiones es igual a la de tablas e ndices con una nica particin.
CREAR UNA FUNCIN DE PARTICIN Una funcin de particin especifica cmo se divide la tabla o el ndice. La funcin asigna el dominio a un conjunto de particiones. Para crear una funcin de particin debe especificar el nmero de particiones, la columna de particin y el intervalo de valores de columnas de particin para cada particin. Tenga en cuenta que al especificar la columna de particin solamente puede especificar una columna.
CREAR UN ESQUEMA DE PARTICIONES Un esquema de particiones asigna las particiones creadas por una funcin de particin a un conjunto de grupos de archivos que el usuario ha definido. Al crear un esquema de particiones se definen los grupos de archivos en los que se asignan las particiones de tabla basndose en los parmetros de la funcin de particin. Debe especificar suficientes grupos de archivos para albergar todas las particiones. Puede especificar que todas las particiones se asignen a un grupo de archivos diferente, que algunas particiones se asignen a un solo grupo de archivos o que todas las particiones se asignen a un nico grupo de archivos. Un esquema de particiones slo puede utilizar una funcin de particin. Sin embargo, una funcin de particin puede participar en ms de un esquema de particiones.
17
GENERACIN DE NDICES
DEFINICIN:
Los ndices son objetos de base de datos diseados para mejorar el rendimiento de las consultas
ARQUITECTURA DE NDICES
Los ndices estn estructurados para facilitar una respuesta rpida de conjuntos de resultados Los tipos de ndices que SQL soporta son: Agrupados No Agrupados Las caractersticas de un ndice afecta el uso de los recursos del sistema y performance general. El Query Optimizer usar un ndice si este mejorar la performance de la consulta.
IMPORTANCIA DEL USO DE NDICES: Un ndice en SQL Server asiste al motor de base de datos en la ubicacin de los registros, tal como un ndice en un libro ayuda a ubicar informacin rpidamente. Sin ndices, una consulta deber buscar en todos los registros de la tabla en orden a encontrar coincidencias. TIPOS o Indices agrupados: Los ndices no se limitan a las restricciones. Se pueden crear ndices sobre cualquier columna o combinacin de columnas en una tabla o vista. ndices agrupados aseguran la unicidad internamente. Para evitar el trabajo adicional requerido para mantener valores nicos sobre columnas duplicadas, generalmente se generan ndices agrupados sobre columnas con la restriccin PRIMARY KEY.
o Indices no agrupados
18 Sobre una tabla o vista se pueden crear 250 ndice no agrupados o 249 ndices no agrupados y un ndice agrupado. Se debe primero crear un ndice nico agrupado sobre una vista previo a crear los ndices no agrupados. Esta restriccin no se aplica a las tablas. Un ndice no agrupado es anlogo a un ndice al final de un libro. Se puede usar el ndice del libro para ubicar las pginas que contienen una tema del ndice del libro. La base de datos usa los ndices no agrupados para encontrar registros segn una clave. Si no existe un ndices agrupado para la tabla, los datos de la tabla se encontrarn desordenados fsicamente y se dice que la tabla tendr la estructura de montn (heap). Un ndice no agrupado sobre una tabla montn contiene punteros a las filas de la tabla. Cada entrada en las pginas de ndice contiene un identificador de fila (RID, row ID). El RID es un puntero a una fila en un montn, y este consiste de un nmero de pgina, un nmero de archivo y un nmero de ranura. Si existe un ndice agrupado, las pginas de un ndice no agrupado contienen las claves del ndice agrupado en vez del RID.
TABLAS DE AUDITORA
CONCEPTO DE AUDITORA
Es el seguimiento de las operaciones realizadas por cada usuario, bsicamente llevar un control de "que se hace", "quien lo hace (el Usuario)", "en donde se hace", y "cuando se hace".
ESTRUCTURA DE UNA TABLA DE AUDITORA EN SQL SERVER o La primera forma: Aadir campos a una tabla
El modo ms simple de auditar una tabla es registrando cada cambio fila por fila, sin embargo tambin es la menos recomendable. Se basa en aadir uno o dos campos testigos que registren la fecha en que se realizen cambios y el usuario que los efecte, sin embargo cambios en cada columna no son registrados ni auditados, slo se registra el ltimo usuario que haya hecho un cambio. Por ejemplo si Pilar hace un cambio en la columna "Precio" y luego
19 Juan cambia el valor de la columna "Cantidad" slo quedar registrado que Juan hizo un cambio. Este tipo de auditora es algo ingenua pero que puede servir en algunos casos.
o Una segunda forma: Triggers y Tablas Espejo
Sql Server tiene en los triggers (desencadenadores o disparadores) una ayuda para llevar a cabo registros de auditora. Esta forma tiene el siguiente procedimiento:
1. Crear una tabla espejo con los mismo campos que la tabla auditada pero con campos adicionales, como el usuario que haya hecho el cambio, la fecha y la operacin realizada que puede ser fila agregada, fila modificada o fila eliminada.
2. Aadir triggers INSERT, UPDATE y DELETE a la tabla origen, de modo que al efectuarse cualquiera de las operaciones indicadas, grabe el mismo registro en la tabla de auditora, incluyendo los campos de auditora (usuario,fecha,tipo de operacion).
Esta forma de auditora, si bien es mejor que la anterior ya que registra cada cambio realizado y almacena un historial completo para cada fila, impone una sobrecarga de operaciones por cada fila, ya que se vuelve a registrar la misma fila con datos adicionales en caso sea insertada, actualizada o eliminada. Y a la vez aumenta el espacio a ocupar.
20
COMPACTACIN DE BASE DE DATOS
Si borras, modificas y crear tablas a menudo, la base de datos puede fragmentarse, lo que provoca un uso deficiente del espacio en disco. Al compactar la base de datos, se hace una copia de la misma y se reorganiza el espacio que ocupa en el disco.
PARA COMPACTAR UNA BASE DE DATOS 1. Cree un objeto Engine y pase la cadena de conexin a la base de datos existente que desee compactar. 2. SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf"); 3. Llame al mtodo Compact. Cuando llame al mtodo Compact, tambin puede especificar las propiedades de la nueva base de datos, incluida la proteccin con contrasea o el cifrado.
Las funciones se utilizan para realizar clculos que le pueden devolver a una aplicacin de llamada o estar integrada en un conjunto de resultados. TIPOS DE FUNCIONES SQL Server nos proporciona los siguientes tipos de funciones: o Funciones integradas: SQL Server proporciona las funciones integradas para ayudar a realizar diversas operaciones. No se pueden modicar o Funciones definidas por el usuario: Se crean con la instruccin CREATE FUNCTION, se modifican con la instruccin ALTER FUNCTION y se quitan con la instruccin DROP FUNCTION.
21
FUNCIONES INTEGRADAS
o Funciones de agregacin: Estas funciones devuelven un valor nico como resultado de un clculo estadstico sobre una seleccin de registros. Las funciones agregadas son deterministas, es decir, aplicada a un mismo conjunto de datos, la funcin siempre devolver el mismo resultado. Con excepcin de la funcin COUNT, las funciones agregadas no tienen en cuenta los valores NULL. COUNT(*) Cuenta los registros seleccionados. COUNT([ALL|DISTINCT] expr) Cuenta todas las expresiones no nulas (ALL) o las expresiones no nulas nicas (DISTINCT). COUNT_BIG Su funcionamiento es idntico a la funcin COUNT, pero el resultado devuelto est en formato bigint, en lugar de int como sucede con la funcin COUNT. SUM([ALL|DISTINCT] exprn) Suma todas las expresiones no nulas (ALL) o las expresiones no nulas nicas (DISTINCT). AVG([ALL|DISTINCT] exprn) Media de todas las expresiones no nulas (ALL) o de las expresiones no nulas nicas (DISTINCT). MIN(exp) o MAX(exp) Valor mnimo o mximo de todas las expresiones. STDEV ([ALL|DISTINCT] exprn) Desviacin tpica de todos los valores de la expresin dada, no nulos (ALL) o de las expresiones no nulas nicas (DISTINCT).
22 STDEVP ([ALL|DISTINCT] exprn) Desviacin tpica de la poblacin para todos los valores de la expresin dada, no nulos (ALL) o de las expresiones no nulas nicas (DISTINCT). GROUPING Se usa junto con ROLLUP y CUBE. Indica el valor 1 cuando el registro se genera con una instruccin ROLLUP o CUBE. En caso contrario indica el valor 0. o Funciones matemticas: Estas funciones devuelven un valor como resultado de clculos matemticos clsicos (lgebra, trigonometra, logaritmos, etc.). ABS(expn) Valor absoluto de expn. CEILING(expn) Entero ms pequeo igual o superior a expn. FLOOR(expn) Entero ms grande inferior o igual a expn. SIGN(expn) Devuelve 1 si expn es positiva, -1 si es negativa y 0 si es cero.
o Funciones diversas: RAND([expn]) Nmero aleatorio comprendido entre 0 y 1. expn representa al valor de inicio. ROUND(expn,n[,f]) Redondea expn con precisin n. Si n es positivo, representa el nmero de decimales.
o Funciones de tipo fecha
23 Las funciones de tipo fecha manipulan expresiones de tipo fecha y usan los formatos que representan la parte de la fecha que se debe administrar.
FUNCIONES DEFINIDAS POR EL USUARIO:
Las funciones definidas por el usuario, en tiempo de ejecucin de lenguaje TRANSACT-SQL o comn (CLR), acepta parmetros, realiza una accin, como un clculo complejo, y devuelve el resultado de esa accin como un valor. El valor de retorno puede ser un escalar (nico) valor o una tabla.
Las funciones de usuario son definidas para crear una rutina reutilizables que se pueden utilizar en las siguientes maneras: 1. En TRANSACT-SQL como SELECT 2. En las aplicaciones de llamar a la funcin 3. En la definicin de otra funcin definida por el usuario 4. Para parametrizar una vista o mejorar la funcionalidad de una vista indizada 5. Para definir una columna en una tabla 6. Para definir una restriccin CHECK en una columna Formato Abreviatura Significado year yy, yyyy Ao (de 1.753 a 9.999) quarter qq, q Trimestre (de 1 a 4) month mm, m Mes (de 1 a 12) day of year dy, y Da del ao (de 1 a 366) day dd, d Da del mes (de 1 a 31) weekday dw, ww Da de la semana (de 1 Lunes a 7 Domingo) hour hh Hora (de 0 a 23) minute mi, n Minuto (de 0 a 59) seconds ss, s Segundo (de 0 a 59) millisecond ms Milisegundo (de 0 a 999)
24 7. Para reemplazar a un procedimiento almacenado
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 BEGINEND, 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. Ejemplo: 1 2 3 4 5 6 7 8 9 Create Function Suma(@N1 int, @N2 int) RETURNS Int AS BEGIN Return (@N1 + @N2) END
--Ejecutar Print dbo.Suma(5,8) 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.
o FUNCIONES DEFINIDAS POR EL USUARIO EN LINEA. Ejemplo: Funcin que devuelve una tabla con la lista de productos suspendidos; el argumento ingresado puede ser 1-Suspendido o 0-Activo. 1 2 3 4 5 6 7 Create Function ProdSuspendido(@Sus int) Returns Table AS Return(Select * From Productos Where Suspendido=@Sus)
--Ejecutar Select * From dbo.ProdSuspendido(1) o FUNCIONES DEFINIDAS POR EL USUARIO CON VALORES DE TABLA.
25 Ejemplo: Crear una funcin que devuelva en formato de tabla el nombre completo de cada uno de los clientes que pertenecen a una determinada zona 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CREATE FUNCTION Nombre_Cliente_F ( @Zona int ) RETURNS @NombreCliente Table ( NombreCompleto Varchar(50) ) AS BEGIN Declare @Nombre Varchar(50) Insert Into @NombreCliente Select (Apellidos + ', ' + Nombre) From Cliente Where IdZona=@Zona RETURN END
--Ejecutar SELECT * From Nombre_Cliente_F(2)
PROCEDIMIENTOS ALMACENADOS
Los procedimientos almacenados son grupos formados por instrucciones SQL y el lenguaje de control de flujo. Cuando se ejecuta un procedimiento, se prepara un plan de ejecucin para que la subsiguiente ejecucin sea muy rpida. Los procedimientos almacenados pueden: Incluir parmetros Llamar a otros procedimientos Devolver un valor de estado a un procedimiento de llamada o lote para indicar el xito o el fracaso del mismo y la razn de dicho fallo. Devolver valores de parmetros a un procedimiento de llamada o lote
VENTAJAS DEL USO DE PROCEDIMIENTOS ALMACENADOS:
o Mejora notablemente la potencia, eficacia y flexibilidad de SQL. o Mejoran la ejecucin de las instrucciones y lotes de SQL de forma dramtica.
26 o Pueden ejecutarse en otro SQL Server si el servidor del usuario y el remoto estn configurados para permitir logins remotos.
PROCEDIMIENTOS ALMACENADOS EN SQL SERVER Los procedimientos almacenados se crean con CREATE PROCEDURE. Para ejecutar un procedimiento almacenado, ya sea un procedimiento del sistema o uno definido por el usuario, use el comando EXECUTE. Tambin, puede utilizar el nombre del procedimiento almacenado solo, siempre que sea la primera palabra de una instruccin o lote.
Sintaxis para crear un procedimiento almacenado: CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> -- Aadir parmetros al procedimiento almacenado <@Param1> <Datatype_For_Param1> = <Default_Value_For_Param1>, <@Param2> <Datatype_For_Param2> = <Default_Value_For_Param2> AS BEGIN -- Insertar la sentencia para el procedimiento Sentencia SQL END
Sintaxis para modificar un procedimiento almacenado: ALTER PROCEDURE NOMBRE_PROCEDIMIENTO <@Param1> <Datatype_For_Param1> = <Default_Value_For_Param1>, <@Param2> <Datatype_For_Param2> = <Default_Value_For_Param2> AS CONSULTA_SQL
Sintaxis para eliminar un procedimiento almacenado: DROP PROCEDURE NOMBRE_PROCEDIMIENTO
27
BIBLIOGRAFA Desarrollo de bases de datos en Microsoft SQL Server desde el principio, Pearson, 2002 SQL Server 2008 Administracin de una base de datos con SQL Server Management Studio, Ediciones ENI, 2010 SQL Server 2012: Diseo y creacin de una base de datos, Ediciones ENI, 2013 http://technet.microsoft.com/es-es/library/ms130214.aspx consultado el 27/04/2014 http://msdn.microsoft.com/es-es/library/ consultado el 28/04/2014