SQL Server
Short Description
Análisis del motor de Base de datos SQL SERVER...
Description
UNIVERSIDAD NACIONAL DE INGENIERÍA FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS
SQL SERVER SISTEMA DE GESTIÓN DE BASE DE DATOS CURSO: ADMINISTRACIÓN DE BASE DE DATOS PROFESOR: ING. MANUEL VELARDE CARPIO INTEGRANTES: GOYCOCHEA SANTISTEBAN, JARED HUISA PALACIOS, CARLOS ZUTTA TUESTA, JHEYMY
2015
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER ÍNDICE INTRODUCCIÓN...........................................................................................4 1.
OBJETIVOS............................................................................................5
2.
MARCO TEORICO...................................................................................5 2.1. BASE DE DATOS................................................................................................. 5 2.2. SISTEMA DE GESTIÓN DE BASE DE DATOS........................................................6 2.3. ADMINISTRACIÓN DE BASE DE DATOS...............................................................8 2.4. BASE DE DATOS RELACIONAL............................................................................9 2.4.1. Tablas......................................................................................................... 9 2.4.2. Terminología Relacional.............................................................................9 2.4.3. Claves...................................................................................................... 10
3.
SQL SERVER........................................................................................10 3.1. DEFINICIÓN..................................................................................................... 10 3.2. HISTORIA......................................................................................................... 11 3.3. CARACTERÍSTICAS........................................................................................... 11 3.3.1. Características Básicas............................................................................11 3.3.2. Características del servidor SQL SERVER 2014........................................12 3.3.3. Tamaño máximo de una base de datos....................................................13 3.4. TRANSACT- SQL (MOTOR DE BASE DE DATOS)................................................14 3.4.1. Consulta MULTITABLA...............................................................................14 3.4.2. Subconsultas............................................................................................15 3.4.3. Programación en TRANSACT SQL.............................................................15 3.4.4. Procedimientos almacenados STORE PROCEDURE...................................16 3.5. ADMINISTRACIÓN............................................................................................ 17 3.5.1. Instalación................................................................................................17 3.5.2. Administración de la Seguridad................................................................18 3.5.3. Organización de archivos.........................................................................20 3.5.4. Organización de Tablas............................................................................21 3.5.5. Copias de Seguridad................................................................................23 3.5.6. Replicación............................................................................................... 27 3.6. SQL SERVER INTEGRATION SERVICES..............................................................27 3.6.1. Características y tareas de Integration Services......................................28 3.7. SQL SERVER DATA TOOLS (SSDT).........................................................................28
4.
VENTAJAS............................................................................................ 28
5.
DIFERENCIAS.......................................................................................31
6.
COSTOS.............................................................................................. 33
7.
USO DEL SOFTWARE EN LAS EMPRESAS................................................34
8.
APLICACIÓN........................................................................................38 8.1. INFORMACIÓN ACERCA DEL NEGOCIO DE LA COMPAÑÍA ADVENTURE WORKS:...................38 8.2. SENTENCIAS DDL (LENGUAJE DE DEFINICIÓN DE DATOS):............................................38 8.2.1. Creación la Base de datos:.......................................................................38 8.2.2. Creación de esquemas XML:....................................................................39
ADMINISTRACIÓN DE BASE DE DATOS
Página 2 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER 8.2.3. Creación de las tablas:.............................................................................41 8.2.4. Modelo Relacional:...................................................................................44 8.2.5. Creación de Triggers:...............................................................................46 8.2.6. Creación de Funciones:............................................................................48 8.2.7. Creación de Procedimientos:....................................................................50 8.2.8. Creación de vistas:...................................................................................51 8.3. SENTENCIAS DML (LENGUAJE DE MANIPULACIÓN DE DATOS).........................................53 8.3.1. Insertando Datos:.....................................................................................53 8.3.2. Actualizar Datos:......................................................................................54 8.3.3. Eliminar datos:......................................................................................... 55 8.3.4. Reportes................................................................................................... 55 8.4. EXPORTAR DATOS A EXCEL.....................................................................................60 CONCLUSIONES.........................................................................................62 BIBLIOGRAFÍA........................................................................................... 63
ADMINISTRACIÓN DE BASE DE DATOS
Página 3 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
INTRODUCCIÓN En la actualidad, existen muchas organizaciones que necesitan tomar decisiones importantes en tiempo real, y que el resultado de las mismas depende de la existencia de dichas organizaciones. La finalidad de estas decisiones en las empresas es el de obtener mayores beneficios, pero si no se tiene la información necesaria, es imposible tomar buenas decisiones que lleven a las organizaciones a seguir creciendo. Esta información tiene como características ser oportuna, exacta y de buen costo. Oportuna porque debe darse en el momento indicado, en el tiempo correcto; exacta porque debe ser precisa y concreta, debe mostrar la situación real de la organización y de buen costo, debido a su relevancia. Por tanto, para que las organizaciones puedan reducir la incertidumbre en la toma de una determinada decisión, es necesario que cuenten con un sistema de procesamiento de datos (SPD) que es el conjunto de procedimientos manuales y/o automáticos que cumplen con las funciones de recolectar datos, procesarlos y distribuir la información. Pero además, debido al volumen de datos que una organización maneja, es necesario contar además con un Sistema de Gestión de Base de Datos (SGBD) que permitan el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar, modificar y analizar los datos. Los usuarios pueden acceder a la información usando herramientas específicas de interrogación y de generación de informes, o bien mediante aplicaciones al efecto. Existen muchos SGBD que dan soporte a los datos que son generados por el propio negocio de las organizaciones, y es por ello que en el presente trabajo se estudiará a un sistema de gestión de base de datos específico y que ha tenido muchos años en el mercado, SQL Server. Este sistema de gestor de base de datos, es pues, ampliamente conocido por sus funciones avanzadas y su seguridad. Ofrece varias ediciones con diferentes opciones en cada una de ellas, las cuales cuentan con un conjunto de características que buscan satisfacer una variedad de necesidades de los usuarios. Esto, sumado a su confiabilidad, otorga beneficios considerables al momento de su uso. En el presente informe, en primer lugar, se tratará de dar a conocer algunos conceptos teóricos básicos necesarios para una mayor comprensión de SQL Server. Luego se tratará a detalle del SGBD SQL Server, empezando por su definición, historia, características importantes, las herramientas que posee, el tipo modelo de datos y la organización de archivos que usa, y la administración de la base de datos. Se estudiarán las ventajas que ésta posee, así como las diferencias con otros SGBD que existen en el mercado. También se dará a conocer los precios por cada edición que presenta la última versión de SQL ADMINISTRACIÓN DE BASE DE DATOS
Página 4 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Server, las empresas que actualmente tienen implementado este sistema de gestor de base de datos, y por último una aplicación basado en dicho gestor, usando las herramientas que nos proporciona.
ADMINISTRACIÓN DE BASE DE DATOS
Página 5 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
1. OBJETIVOS Conocer las bondades del manejador de base de datos Microsoft SQL Server. Identificar su organización de archivos y organización de tablas de SQL Server. Identificar los clientes que lo utilizan. Hacer una evaluación costo-beneficio del uso de Microsoft SQL Server en una empresa. Realizar una aplicación pequeña utilizando SQL Server y base de datos relacional.
2. MARCO TEORICO 2.1.
BASE DE DATOS
Las aplicaciones informáticas de los años sesenta acostumbraban a darse totalmente por lotes (batch) y estaban pensadas para una tarea muy específica relacionada con muy pocas entidades tipo. Cada aplicación (una o varias cadenas de programas) utilizaba ficheros de movimientos para actualizar y/o para consultar uno o dos ficheros maestros o, excepcionalmente, más de dos. Cada programa trataba como máximo un fichero maestro, que solía estar sobre cinta magnética y, en consecuencia, se trabajaba con acceso secuencial. Cada vez que se le quería añadir una aplicación que requería el uso de algunos de los datos que ya existían y de otros nuevos, se diseñaba un fichero nuevo con todos los datos necesarios (algo que provocaba redundancia) para evitar que los programas tuviesen que leer muchos ficheros. A medida que se fueron introduciendo las líneas de comunicación, los terminales y los discos, se fueron escribiendo programas que permitían a varios usuarios consultar los mismos ficheros de forma simultánea. Más adelante fue surgiendo la necesidad de hacer las actualizaciones también on-line. A medida que se integraban las aplicaciones, se tuvieron que interrelacionar sus ficheros y fue necesario eliminar la redundancia. El nuevo conjunto de ficheros se debía diseñar de modo que estuviesen interrelacionados; al mismo tiempo, las informaciones redundantes (como por ejemplo, el nombre y la dirección de los clientes o el nombre y el precio de los productos), que figuraban en los ficheros de más de una de las aplicaciones, debían estar ahora en un solo lugar.
ADMINISTRACIÓN DE BASE DE DATOS
Página 6 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER El acceso on-line y la utilización eficiente de las interrelaciones exigían estructuras físicas que diesen un acceso rápido, como por ejemplo los índices, las multilistas, las técnicas de hashing, etc. Estos conjuntos de ficheros interrelacionados, con estructuras complejas y compartidos por varios procesos de forma simultánea (unos on-line y otros por lotes), recibieron al principio el nombre de Data Banks, y después, a inicios de los años setenta, el de Data Bases, es decir, Bases de Datos. Es así pues que, una base de datos es un conjunto estructurado de datos que representa entidades y sus interrelaciones. La representación será única e integrada, a pesar de que debe permitir utilizaciones varias y simultáneas.
2.2.
SISTEMA DE GESTIÓN DE BASE DE DATOS
Un Sistema de Gestión de Bases de Datos (SGBD) consiste en una colección de datos interrelacionados y un conjunto de programas para acceder a los mismos. Vale decir, un conjunto de programas que gestionan la Base de Datos, el cual está compuesto por: DDL (Data Definition Language): Lenguaje de Definición de Datos. DML (Data Manipulation Language): Lenguaje de Manipulación de Datos. SQL (Structured Query Language): Lenguaje de Consulta Estructurado Ahora bien, para entender mejor qué son los SGBD, haremos un repaso de su evolución desde los años sesenta hasta nuestros días. Los primeros SGBD–en los años sesenta todavía no se les denominaba así– estaban orientados a facilitar la utilización de grandes conjuntos de datos en los que las interrelaciones eran complejas. El arquetipo de aplicación era el Bill of materials o Parts explosion, típica en las industrias del automóvil, en la construcción de naves espaciales y en campos similares. Estos sistemas trabajaban exclusivamente por lotes (batch). Al aparecer los terminales de teclado, conectados al ordenador central mediante una línea telefónica, se empiezan a construir grandes aplicaciones on-line transaccionales (OLTP). Los SGBD estaban íntimamente ligados al software de comunicaciones y de gestión de transacciones. Aunque para escribir los programas de aplicación se utilizaban lenguajes de alto nivel como Cobol o PL/I, se disponía también de instrucciones y de
ADMINISTRACIÓN DE BASE DE DATOS
Página 7 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER subrutinas especializadas para tratar las BD que requerían que el programador conociese muchos detalles del diseño físico, y que hacían que la programación fuese muy compleja. Puesto que los programas estaban relacionados con el nivel físico, se debían modificar continuamente cuando se hacían cambios en el diseño y la organización de la BD. La preocupación básica era maximizar el rendimiento: el tiempo de respuesta y las transacciones por segundo. Durante los años ochenta, el mejoramiento de los ordenadores (en reducción del tamaño y aumento de la eficiencia), extendió el uso de la informática a prácticamente todas las empresas e instituciones, lo cual exigía que el desarrollo de aplicaciones fuese más sencillo. Los SGBD de los años setenta eran demasiado complejos e inflexibles, y sólo los podía utilizar un personal muy calificado. Es así pues que, la aparición de los SGBD relacionales supuso un avance importante para facilitar la programación de aplicaciones con BD y para conseguir que los programas sean independientes de los aspectos físicos de la BD. La estandarización, en el año 1986, del lenguaje SQL produjo una auténtica explosión de los SGBD relacionales. Al acabar la década de los ochenta, los SGBD relacionales ya se utilizaban prácticamente en todas las empresas; sin embargo, aún a mediados de los noventa, por un factor de rendimiento, se prefería usar otro tipo de SGBD. La necesidad de tener una visión global de la empresa y de interrelacionar diferentes aplicaciones que utilizan BD diferentes, junto con la facilidad que dan las redes para la intercomunicación entre ordenadores, ha conducido a los SGBD actuales, que permiten que un programa pueda trabajar con diferentes BD como si se tratase de una sola. Es lo que se conoce como base de datos distribuida. Los tipos de datos que se pueden definir en los SGBD relacionales de los años ochenta y noventa son muy limitados. La incorporación de tecnologías multimedia–imagen y sonido– en los Sistemas de Información (SI) hace necesario que los SGBD relacionales acepten atributos de estos tipos. Esto nos lleva a la orientación a objetos (OO). El éxito de la OO al final de años ochenta, en el desarrollo de software básico, en las aplicaciones ingeniería industrial y en la construcción de interfaces gráficas con usuarios, hizo que durante la década de los noventa se extendiese prácticamente todos los campos de la informática.
ADMINISTRACIÓN DE BASE DE DATOS
los de los en
Página 8 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER La rápida adopción de la web a los SI hace que los SGBD incorporen recursos para ser servidores de páginas web, como por ejemplo la inclusión de SQL en guiones HTML, SQL incorporado en Java, etc. Es importante notar que en el mundo de la web son habituales los datos multimedia y la OO. Por lo tanto, se trata de mantener una gran BD con información proveniente de toda clase de aplicaciones de la empresa (e, incluso, de fuera). Los datos de este gran almacén, el Data Warehouse , se obtienen por una replicación más o menos elaborada de las que hay en las BD que se utilizan en el trabajo cotidiano de la empresa. Estos almacenes de datos se utilizan exclusivamente para hacer consultas, de forma especial para que lleven a cabo estudios los analistas financieros, los analistas de mercado, etc. Actualmente, los SGBD se adaptan a este tipo de aplicación, incorporando, por ejemplo, herramientas como las siguientes: a) La creación y el mantenimiento de réplicas, con una cierta elaboración de los datos. b) La consolidación de datos de orígenes diferentes. c) La creación de estructuras físicas que soporten eficientemente el análisis multidimensional. Los SGBD que actualmente están en el mercado pretenden satisfacer un conjunto de objetivos directamente deducibles de lo que hemos explicado hasta ahora. A continuación los mencionaremos, pero sin entrar en detalles: Consultas no predefinidas y complejas Flexibilidad e independencia Problemas de la redundancia Integridad de los datos Concurrencia de usuarios Seguridad Servir eficientemente los Data Warehouse. Adaptarse al desarrollo orientado a objetos Incorporar el tiempo como un elemento de caracterización de la información Adaptarse al mundo del Internet.
2.3.
ADMINISTRACIÓN DE BASE DE DATOS
Hay un tipo de usuario especial: el que realiza tareas de administración y control de la BD. Una empresa o institución que tenga SI construidos en torno a BD necesita que alguien lleve a cabo una serie de funciones centralizadas de ADMINISTRACIÓN DE BASE DE DATOS
Página 9 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER gestión y administración, para asegurar que la explotación de la BD es la correcta. Este conjunto de funciones se conoce con el nombre de administración de BD (ABD), y los usuarios que hacen este tipo especial de trabajo se denominan administradores de BD. Los administradores de BD son los responsables del correcto funcionamiento de la BD y velan para que siempre se mantenga útil. Intervienen en situaciones problemáticas o de emergencia, pero su responsabilidad fundamental es velar para que no se produzcan incidentes. Se procede a mencionar, en una lista, las tareas típicas de la Administración de Base de Datos: Mantenimiento, administración y control de los esquemas Asegurar la máxima disponibilidad de los datos Resolución de emergencias Vigilancia de la integridad y de la calidad de los datos Diseño físico, estrategia de caminos de acceso y restructuraciones Control del rendimiento y decisiones relativas a las modificaciones en los esquemas y/o parámetros del SGBD y del SO, para mejorarlo Normativa y asesoramiento a los programadores y a los usuarios finales sobre la utilización de la BD Control y administración de la seguridad: autorizaciones, restricciones, etc.
2.4.
BASE DE DATOS RELACIONAL
Edgar Frank Codd a finales definió las bases del modelo relacional a finales de los 60. Trabajaba para IBM empresa que tardó un poco en implementar sus bases. Pocos años después el modelo se empezó a implementar cada vez más, hasta ser el modelo de bases de datos más popular. En las bases de Codd se definían los objetivos de este modelo: Independencia física. La forma de almacenar los datos, no debe influir en su manipulación lógica. Independencia lógica. Las aplicaciones que utilizan la base de datos no deben ser modificadas por que se modifiquen elementos de la base de datos. Flexibilidad. La base de datos ofrece fácilmente distintas vistas en función de los usuarios y aplicaciones. Uniformidad. Las estructuras lógicas siempre tienen una única forma conceptual (las tablas). Sencillez.
ADMINISTRACIÓN DE BASE DE DATOS
Página 10 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
2.4.1.
Tablas
Las bases de datos relacionales se basan en el uso de tablas (también se las llama relaciones). Las tablas se representan gráficamente como una estructura rectangular formada por filas y columnas. Cada columna almacena información sobre una propiedad determinada de la tabla (se le llama también atributo), nombre, DNI, apellidos, edad, etc. Cada fila posee una ocurrencia o ejemplar de la instancia o relación representada por la tabla (a las filas se las llama también tuplas).
2.4.2.
Terminología Relacional
Tupla. Cada fila de la tabla (cada ejemplar que la tabla representa) Atributo. Cada columna de la tabla Grado. Número de atributos de la tabla Cardinalidad. Número de tuplas de una tabla Dominio. Conjunto válido de valores representables por un atributo.
2.4.3.
Claves
Clave candidata: Conjunto de atributos de una tabla que identifican unívocamente cada tupla de la tabla. Clave primaria: Clave candidata que se escoge como identificador de las tuplas. Clave alternativa: Cualquier clave candidata que no sea primaria Clave externa o secundaria: Atributo de una tabla relacionado con una clave de otra tabla.
Representación de una tabla en el modelo relacional
3. SQL SERVER 3.1.
DEFINICIÓN
SQL Server es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado a sistemas medianos y grandes. SQL Server
ADMINISTRACIÓN DE BASE DE DATOS
Página 11 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Management Studio (SSMS) es la herramienta de SQL Server que permite definir y gestionar todas las bases de datos almacenadas en el servidor SQL Server. Microsoft SQL Server 2014 se basa en las funciones críticas ofrecidas en la versión anterior, proporcionando un rendimiento, una disponibilidad y una facilidad de uso innovadores para las aplicaciones más importantes. Microsoft SQL Server 2014 ofrece nuevas capacidades en memoria en la base de datos principal para el procesamiento de transacciones en línea (OLTP) y el almacenamiento de datos, que complementan sus capacidades de almacenamiento de datos en memoria y BI existentes para lograr la solución de base de datos en memoria más completa del mercado. SQL Server 2014 también proporciona nuevas soluciones de copia de seguridad y de recuperación ante desastres, así como de arquitectura híbrida con Windows Azure, lo que permite a los clientes utilizar sus actuales conocimientos con características locales que aprovechan los centros de datos globales de Microsoft. Además, SQL Server 2014 aprovecha las nuevas capacidades de Windows Server 2012 y Windows Server 2012 R2 para ofrecer una escalabilidad sin parangón a las aplicaciones de base de datos en un entorno físico o virtual.
3.2.
HISTORIA
La historia de SQL empieza en 1974 con la definición, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigación de IBM, de un lenguaje para la especificación de las características de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implementó en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisión del lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre por motivos legales, convirtiéndose en SQL. El prototipo (System R), basado en este lenguaje, se adoptó y utilizó internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al éxito de este sistema, que no estaba todavía comercializado, también otras compañías empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenzó a entregar sus productos relacionales y en 1983 empezó a vender DB2. En el curso de los años ochenta, numerosas compañías (por ejemplo Oracle y Sybase, sólo por citar algunos) comercializaron productos basados en SQL, que se convierte en el estándar industrial de hecho por lo que respecta a las bases de datos relacionales.
ADMINISTRACIÓN DE BASE DE DATOS
Página 12 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
3.3.
CARACTERÍSTICAS
3.3.1.
Características Básicas
Seguridad: Protección de datos, Control de acceso. Integridad de datos: SQL Server proporciona los siguientes mecanismos para exigir la integridad de datos en una columna Restricciones PRIMARY KEY Restricciones FOREIGN KEY Restricciones UNIQUE Restricciones CHECK Restricciones Default Permitir o denegar valores NULL Así como también admite distintos tipos de datos Concurrencia: Permite que varios usuarios usen la misma base de datos al mismo tiempo controlando el acceso simultáneo mediante 2 modos de control de concurrencia. Recuperación: SQL Server cuenta con 3 formas diferentes de respaldo y recuperación de base de datos SQL Server Management Studio: Herramienta gráfica de administración para SQL Server 2005 PowerShell: Interfaz avanzada de consola disponible para Microsoft, Windows con posibilidad de interactuar con SQL Server TRANSACT-SQL: lenguaje propio de SQL Server. Diccionario de datos: Contiene palabras reservadas como cualquier otro SGBD que permiten acceder a la información dela estructura de una BD. Para crear una Base de Datos solo basta con crear un script que obtenga dicha información. Almacenamiento y servicios en la nube
3.3.2.
Características del servidor SQL SERVER 2014
OLTP en memoria Proporciona funciones de OLTP en memoria integradas en la base de datos central de SQL Server para mejorar en forma significativa la velocidad y el rendimiento de las transacciones en su aplicación de base de datos. OLTP en memoria se instala con el motor de SQL Server 2014 y no requiere de acciones adicionales. Además, entrega los beneficios del rendimiento en memoria sin necesidad de reescribir la aplicación de base de datos ni de actualizar el
ADMINISTRACIÓN DE BASE DE DATOS
Página 13 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER hardware. OLTP en memoria le permite acceder a las demás características sofisticadas de SQL Server, mientras saca ventaja del rendimiento en memoria. Almacén de columnas actualizable en memoria Proporciona una compresión mayor, consultas más sofisticadas y la capacidad de actualizar el almacén de columnas existente para las cargas de trabajo de almacenamiento de datos, lo que mejora aún más la velocidad de carga, el rendimiento de las consultas, la concurrencia e incluso reduce el precio por terabyte. Extensión de la memoria a SSD Integra en forma transparente y sin fisuras el almacenamiento en estado sólido en SQL Server al utilizar las unidades SSD como una extensión del grupo de búfer de la base de datos, lo que permite aumentar el procesamiento en memoria y reduce la E/S en disco. Alta disponibilidad mejorada Nuevas funciones AlwaysOn: los grupos de disponibilidad ahora permiten hasta ocho réplicas secundarias que permanecen disponibles para lecturas en todo momento, incluso en el caso de errores de red. Las instancias de los clústeres de conmutación por error ahora son compatibles con los volúmenes compartidos de clúster de Microsoft, lo que aumenta el uso del almacenamiento compartido y mejora la resistencia ante la conmutación por error. Operaciones en línea mejoradas de la base de datos: incluye la reconstrucción en línea del índice de una sola partición y la administración de prioridad de bloqueo para el conmutador de partición de tablas, lo que reduce el impacto por tiempos de inactividad debido a mantenimiento. Copias de seguridad cifradas: permite cifrar las copias de seguridad en las instalaciones locales y en Microsoft Azure. Gobierno de recursos de E/S: los grupos de recursos ahora permiten configurar IOPS mínimas y máximas en cada volumen, lo que ofrece controles más completos para aislar los recursos. Escenarios híbridos Copias de seguridad de SQL Server en Azure: proporciona una administración y automatización de las copias de seguridad de SQL Server (desde las instalaciones locales y Microsoft Azure) al almacenamiento de Microsoft Azure. AlwaysOn mediante réplicas secundarias de Azure: agregue fácilmente réplicas en Microsoft Azure a los grupos de disponibilidad locales.
ADMINISTRACIÓN DE BASE DE DATOS
Página 14 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER SQL XI (integración con XStore): compatibilidad con los archivos de base de datos de SQL Server (desde las instalaciones locales y Microsoft Azure) en los blobs de almacenamiento de Microsoft Azure. Asistente de implementación: implemente fácilmente las bases de datos locales de SQL Server en Microsoft Azure.
3.3.3.
Tamaño máximo de una base de datos
En la siguiente tabla se especifican el tamaño y la cantidad máxima de diversos objetos definidos en las bases de datos de SQL Server o a los que se hace referencia en las instrucciones Transact-SQL. Objeto SQL Server Motor de base de datos Tamaño de archivo (datos) Tamaño de archivo (registro) Tamaño de la base de datos Bases de datos por instancia de SQL Server Niveles de procedimientos almacenados anidados Subconsultas anidadas Niveles de desencadenadores anidados Índices no clúster por tabla Parámetros por procedimiento almacenado REFERENCES por tabla Columnas por instrucción UPDATE (tablas anchas)
3.4.
Tamaños máximo SQL Server (32 bits) 16 terabytes
Tamaños máximo SQL Server (64 bits) 16 terabytes
2 terabytes
2 terabytes
524.272 terabytes
524.272 terabytes
32.767
32.767
32
32
32 32
32 32
999
999
2,100
2,100
253 4096
253 4096
TRANSACT- SQL (MOTOR DE BASE DE DATOS)
TRANSACT-SQL es fundamental para trabajar con SQL Server. Todas las aplicaciones que se comunican con SQL Server lo hacen enviando instrucciones TRANSACT-SQL al servidor, independientemente de la interfaz de usuario de la aplicación.
ADMINISTRACIÓN DE BASE DE DATOS
Página 15 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER TRANSACT-SQL es un lenguaje muy potente que nos permite definir casi cualquier tarea que queramos efectuar sobre la base de datos. TRANSACT-SQL va más allá de un lenguaje SQL cualquiera ya que incluye características propias de cualquier lenguaje de programación, características que nos permiten definir la lógica necesaria para el tratamiento de la información:
Tipos de datos. Definición de variables. Estructuras de control de flujo. Gestión de excepciones. Funciones predefinidas. Sin embargo no permite: Crear interfaces de usuario. Crear aplicaciones ejecutables, sino elementos que en algún momento llegarán al servidor de datos y serán ejecutados.
Debido a estas restricciones se emplea generalmente procedimientos almacenados, triggers y funciones de usuario.
para
crear
Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas en otros lenguajes de programación como Visual Basic, C, Java, etc. Y por supuesto los lenguajes incluidos en la plataforma .NET. También lo podremos ejecutar directamente de manera interactiva, por ejemplo desde el editor de consultas de SSMS (SQL Server Management Studio) el entorno de gestión que ya conocemos. Esta es la forma en que lo utilizaremos nosotros.
3.4.1.
Consulta MULTITABLA
Para obtener datos de varias tablas tenemos que combinar estas tablas mediante alguna operación basada en el álgebra relacional. El álgebra relacional define una serie de operaciones cuyos operandos son tablas y cuyo resultado es también una tabla. Las operaciones de álgebra relacional implementadas en TRANSACT-SQL son:
La unión UNION La diferencia EXCEPT La intersección INTERSECT El producto cartesiano CROSS JOIN La composición interna INNER JOIN La composición externa LEFT JOIN, RIGHT JOIN Y FULL JOIN
ADMINISTRACIÓN DE BASE DE DATOS
Página 16 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
3.4.2.
Subconsultas
Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en la lista de selección o en la cláusula WHERE o HAVING, originalmente no se podían incluir en la lista de selección. Una subconsulta se denomina también consulta o selección interna, mientras que la instrucción que contiene la subconsulta es conocida como consulta o selección externa. Aparece siempre encerrada entre paréntesis y tiene la misma sintaxis que una sentencia SELECT normal con alguna limitación: No puede incluir una cláusula COMPUTE o FOR BROWSE y sólo puede incluir una cláusula ORDER BY cuando se especifica también una cláusula TOP. Una subconsulta puede anidarse en la cláusula WHERE o HAVING de una instrucción externa SELECT, INSERT, UPDATE o DELETE, o bien en otra subconsulta. Se puede disponer de hasta 32 niveles de anidamiento, aunque el límite varía dependiendo de la memoria disponible y de la complejidad del resto de las expresiones de la consulta. Hay que tener en cuenta que para cada fila de la consulta externa, se calcula la subconsulta, si anidamos varias consultas, el número de veces que se ejecutarán las subconsultas ¡puede dispararse! Cuando la subconsulta aparece en la lista de selección de otra consulta, deberá devolver un solo valor, de lo contrario provocará un error.
3.4.3.
Programación en TRANSACT SQL
Ahora veremos que TRANSACT-SQL va más allá de un lenguaje SQL cualquiera ya que aunque no permita: Crear interfaces de usuario. Crear aplicaciones ejecutables, sino elementos que en algún momento llegarán al servidor de datos y serán ejecutados. Incluye características propias de cualquier lenguaje de programación, características que nos permiten definir la lógica necesaria para el tratamiento de la información: Tipos de datos. Definición de variables. Estructuras de control de flujo.
ADMINISTRACIÓN DE BASE DE DATOS
Página 17 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Gestión de excepciones. Funciones predefinidas. Elementos para la visualización, que permiten mostrar mensajes definidos por el usuario gracias a la cláusula PRINT. Estas características permiten crear bloques de código orientados a realizar operaciones más complejas. Estos bloques no son programas sino procedimientos o funciones que podrán ser llamados en cualquier momento. En SQL Server podemos definir tres tipos de bloques de código, los procedimientos almacenados, los desencadenadores (o triggers) y funciones definidas por el usuario.
3.4.4.
Procedimientos almacenados STORE PROCEDURE
Un procedimiento almacenado (STORE PROCEDURE) está formado por un conjunto de instrucciones Transact-SQL que definen un determinado proceso, puede aceptar parámetros de entrada y devolver un valor o conjunto de resultados. Este procedimiento se guarda en el servidor y puede ser ejecutado en cualquier momento. Los procedimientos almacenados se diferencian de las instrucciones SQL ordinarias y de los lotes de instrucciones SQL en que están precompilados. La primera vez que se ejecuta un procedimiento, el procesador de consultas de SQL Server lo analiza y prepara un plan de ejecución que se almacena en una tabla del sistema. Posteriormente, el procedimiento se ejecuta según el plan almacenado. Puesto que ya se ha realizado la mayor parte del trabajo de procesamiento de consultas, los procedimientos almacenados se ejecutan casi de forma instantánea por lo que el uso de procedimientos almacenados mejora notablemente la potencia y eficacia del SQL. SQL Server incorpora procedimientos almacenados del sistema, se encuentran en la base de datos master y se reconocen por su nombre, todos tienen un nombre que empieza por sp_. Permiten recuperar información de las tablas del sistema y pueden ejecutarse en cualquier base de datos del servidor. También están los procedimientos de usuario, los crea cualquier usuario que tenga los permisos oportunos. Se pueden crear también procedimiento temporales locales y globales. Un procedimiento temporal local se crea por un usuario en una conexión determinada y sólo se puede utilizar en esa sesión, un procedimiento temporal global lo pueden utilizar todos los usuarios, cualquier conexión puede ejecutar un procedimiento almacenado temporal global. Éste existe hasta que se cierra
ADMINISTRACIÓN DE BASE DE DATOS
Página 18 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER la conexión que el usuario utilizó para crearlo, y hasta que se completan todas las versiones del procedimiento que se estuvieran ejecutando mediante otras conexiones. Una vez cerrada la conexión que se utilizó para crear el procedimiento, éste ya no se puede volver a ejecutar, sólo podrán finalizar las conexiones que hayan empezado a ejecutar el procedimiento. Tanto los procedimientos temporales como los no temporales se crean y ejecutan de la misma forma, el nombre que le pongamos indicará de qué tipo es el procedimiento. Los procedimientos almacenados se crean mediante la sentencia CREATE PROCEDURE y se ejecutan con EXEC (o EXECUTE). Para ejecutarlo también se puede utilizar el nombre del procedimiento almacenado sólo, siempre que sea la primera palabra del lote. Para eliminar un procedimiento almacenado utilizamos la sentencia DROP PROCEDURE.
3.5.
ADMINISTRACIÓN
3.5.1.
Instalación
La instalación de SQL Server no representa mayores problemas, ya que muchas distribuciones incluyen paquetes con los que realizar la instalación y configuración básica. A continuación Requisitos software y hardware para SQL Server 2014: Compone nte .NET Framewor k
Windows PowerShe ll
Software de red
Requisito .NET 3.5 SP1 es un requisito para SQL Server 2014 cuando se selecciona Motor de base de datos, Reporting Services, Master Data Services, Data Quality Services, Replicación o SQL Server Management Studio, y no lo instala ya el programa de instalación de SQL Server. .NET 4.0 es un requisito para SQL Server 2014. SQL Server instala .NET 4.0 durante el paso de instalación de características. SQL Server 2014 no instala ni habilita Windows PowerShell 2.0; sin embargo, Windows PowerShell 2.0 es un requisito previo de instalación para los componentes del Motor de base de datos y SQL Server Management Studio. Los sistemas operativos admitidos para SQL Server 2014 tienen software de red integrado. Las instancias con nombre y predeterminadas de una instalación
ADMINISTRACIÓN DE BASE DE DATOS
Página 19 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Virtualiza ción
Disco duro
Unidad Monitor Internet
independiente admiten los siguientes protocolos de red: Memoria compartida, Canalizaciones con nombre, TCP/IP y VIA. SQL Server 2014 se admite en entornos de máquina virtual que se ejecutan en el rol Hyper-V de: Windows Server 2008 SP2 Standard, Enterprise y Datacenter Ediciones Windows Server 2008 R2 SP1 Standard, Enterprise y Datacenter. Windows Server 2012 Datacenter y Standard. SQL Server 2014 requiere un mínimo de 6 GB de espacio disponible en disco. Las necesidades de espacio en disco variarán según los componentes de SQL Server 2014 que instale. Para la instalación desde disco se necesita una unidad de DVD. SQL Server 2014 requiere Super VGA (800x600) o un monitor de una resolución mayor. La funcionalidad de Internet necesita acceso a Internet (no necesariamente de carácter gratuito).
Requisitos de procesador, memoria y sistema operativo Componente Memoria
Velocidad del procesador Tipo de procesador
3.5.2.
Requisito Mínimo: Ediciones Express: 512 MB Todas las demás ediciones: 1 GB Se recomienda: Ediciones Express: 1 GB Todas las demás ediciones: al menos 4 GB y debe aumentar a medida que el tamaño de la base de datos aumente para asegurar un rendimiento óptimo. Mínimo: Procesador x86: 1,0 GHz Procesador x64: 1,4 GHz Recomendado: 2 GHz o más Procesador x64: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T Intel Pentium IV compatible con EM64T Procesador x86: compatible con Pentium III o superior
Administración de la Seguridad
ADMINISTRACIÓN DE BASE DE DATOS
Página 20 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Un usuario es una entidad de seguridad de la base de datos. Los inicios de sesión deben estar asignados a un usuario de base de datos para poder conectarse a una base de datos. En SQL server se puede crear inicios de sesión con autenticación en Windows y autenticación en SQL Server con sus respectivos permisos. SQL Server usa permisos para controlar el acceso a los protegibles por parte de las entidades de seguridad. Autenticación de Windows: En este modo de autenticación, los usuarios obtienen acceso al servidor SQL Server mediante un inicio de sesión asignado a sus cuentas de Windows. Ventajas: Permite agregar grupos de usuarios a SQL Server mediante la agregación de una cuenta de inicio de sesión única. Permite a los usuarios un rápido acceso a SQL Server sin tener que recordar otra cuenta de inicio de sesión y contraseña. Autenticación SQL: En este modo de autenticación, los usuarios obtienen acceso a SQL Server mediante un inicio de sesión asignado a sus cuentas de SQL Server. Modificar inicios de sesión: Se puede modificar un inicio de sesión con la instrucción ALTER LOGIN o con el explorador de objetos, que puede ser para cambiar su contraseña. Eliminar inicios de sesión: Se puede eliminar inicios de sesión con la instrucción DROP LOGIN o con el explorador de objetos. Tipos de usuarios: Se puede tener dos tipos de usuario: Usuario dbo: Son usuarios especiales con la función sysadmin, por ejemplo el inicio de sesión “a” se encuentra en todas las base de datos. El usuario dbo es una cuenta predeterminada y no puede eliminarse. Usuario invitado: Permite inicios de sesión sin cuentas de usuario para tener acceso a una base de datos. Permisos: Asignar los permisos a los usuarios es muy importante, ya que de ello va a depender la seguridad de la base de datos; por ejemplo: no se puede conceder las opciones de eliminar, agregar o cambiar a un usuario que su rol en una empresa solo sea de consultar datos; entre las funciones que nos brinda SQL server son:
ADMINISTRACIÓN DE BASE DE DATOS
Página 21 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER FUNCION db_accessadmin db_backupoperator db_datareader db_datawriter db_ddladmin db_denydatareader db_denydatawriter db_owner public
3.5.3.
DESCRIPCIÓN Agregar o quitar usuarios, grupos y funciones de la base de datos. Realizar una copia de seguridad de la base de datos Leer datos de cualquier tabla. Agregar, cambiar o eliminar datos de cualquier tabla Agregar, eliminar o modificar objetos de la base de datos No poder leer datos de ninguna tabla No poder cambiar datos de ninguna tabla. Realizar cualquier actividad de función de la base de datos Mantener los permisos predeterminados
Organización de archivos
La organización de archivos de SQL Server es de forma indexada utilizando dos archivos, uno de datos que contiene la información de la base de datos (tablas) que permite que las consultas realizadas sean más rápidas, se puede acceder a los registros de forma secuencial y también de forma aleatoria(usando el índice). En SQL Server, los índices se organizan como árboles b. Las páginas de un árbol b de índice se llaman nodos del índice. El nodo superior del árbol b se llama nodo raíz. El nivel inferior de los nodos del índice se denomina nodos hoja. Los niveles del índice entre el nodo raíz y los nodos hoja se conocen en conjunto como niveles intermedios. En un índice agrupado, los nodos hoja contienen las páginas de datos de la tabla subyacente. El nodo raíz y los nodos intermedios incluyen páginas de índice que contienen filas de índice. Cada fila de índice contiene un valor clave y un puntero a una página de nivel intermedio en el árbol b, o bien a una fila de datos del nivel hoja del índice. Las páginas de cada nivel del índice se vinculan en una lista con vínculos dobles. Los índices agrupados tienen una fila en sys.partitions, con index_id = 1 para cada partición utilizada por el índice. De forma predeterminada, un índice agrupado tiene una sola partición. Cuando un índice agrupado tiene múltiples particiones, cada partición tiene una estructura de árbol b que contiene los datos de esa partición específica. Por ejemplo, si un índice agrupado tiene cuatro particiones, hay cuatro estructuras de árbol b, una en cada partición.
ADMINISTRACIÓN DE BASE DE DATOS
Página 22 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER En función de los tipos de datos del índice agrupado, cada estructura de índice agrupado tendrá una o más unidades de asignación en las que almacenar y administrar los datos de una partición específica. Como mínimo, cada índice agrupado tendrá una unidad de asignación IN_ROW_DATA por partición. El índice agrupado también tendrá una unidad de asignación LOB_DATA por partición si contiene columnas de objetos grandes (LOB). También tendrá una unidad de asignación ROW_OVERFLOW_DATA por partición si contiene columnas de longitud variable que superen el límite de tamaño de fila de 8.060 bytes. Las páginas de la cadena de datos y las filas que contienen se ordenan según el valor de la clave de índice agrupado. Todas las inserciones se hacen en el punto en el que el valor de clave de la fila insertada quede dentro de la secuencia de orden entre las filas existentes. Las colecciones de páginas del árbol b están delimitadas por punteros de página en la vista del sistema sys.system_internals_allocation_units. En un índice agrupado, lancolumna root_page de sys.system_internals_allocation _units apunta al nivel superior del índice agrupado para una partición específica. SQL Server baja en el índice para buscar la fila correspondiente a una clave de índice agrupado. Para buscar un intervalo de claves, SQL Server se desplaza por el índice hasta encontrar el valor de clave inicial del intervalo y después recorre las páginas de datos mediante los punteros anterior y siguiente. Para buscar la primera página de la cadena de páginas de datos, SQL Server sigue los punteros situados más a la izquierda desde el nodo raíz del índice. En esta ilustración se muestra la estructura de un índice agrupado en una sola partición.
ADMINISTRACIÓN DE BASE DE DATOS
Página 23 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
3.5.4.
Organización de Tablas
Las tablas y los índices se almacenan como una colección de páginas de 8 KB. En este tema se describe el modo en el que se organizan las páginas de tablas e índices. En la siguiente ilustración se muestra la organización de una tabla. Una tabla está incluida en una o varias particiones y cada partición incluyen filas de datos con una estructura de índice clúster o de montón. Las páginas del índice clúster o de montón se administran en una o varias unidades de asignación, según los tipos de columna de las filas de datos.
ADMINISTRACIÓN DE BASE DE DATOS
Página 24 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Particiones Las páginas de tablas e índices están incluidas en una o varias particiones. Una partición es una unidad de organización de datos definida por el usuario. De forma predeterminada, una tabla o un índice solo incluyen una partición que contiene todas las páginas de tablas o índices. La partición se encuentra en un solo grupo de archivos. Una tabla o un índice con una sola partición es equivalente a la estructura organizativa de tablas e índices de versiones anteriores de SQL Server. Cuando una tabla o un índice utilizan varias particiones, se crean particiones horizontales de los datos para que se asignen los grupos de filas a particiones individuales, en función de la columna especificada. Las particiones se pueden colocar en uno o varios grupos de archivos de la base de datos. La tabla o el índice se tratarán como una sola entidad lógica cuando se realicen consultas o actualizaciones en los datos. Para ver las particiones utilizadas por una tabla o un índice, utilice la vista de catálogo sys.partitions (Transact-SQL). Tablas, montones e índices clúster Las tablas de SQL Server utilizan uno de estos dos métodos para organizar sus páginas de datos en una partición: Las tablas agrupadas son tablas que tienen un índice clúster. Las filas de datos están almacenadas en un orden basado en la clave del índice clúster. El índice clúster se implementa como una estructura de árbol b que admite la recuperación rápida de las filas a partir de los valores de las claves del índice clúster. Las páginas de cada nivel del
ADMINISTRACIÓN DE BASE DE DATOS
Página 25 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER índice, incluidas las páginas de datos del nivel hoja, se vinculan en una lista con vínculos dobles. Sin embargo, la navegación de un nivel a otro.
3.5.5.
Copias de Seguridad
Una copia de seguridad completa de la base de datos crea una copia seguridad de toda la base de datos, que incluye parte del registro transacciones para que se pueda recuperar la copia de seguridad completa la base de datos. Las copias de seguridad completas representan la base datos en el momento en que finalizó la copia de seguridad.
de de de de
Las copias de seguridad de bases de datos son fáciles de utilizar. Una copia de seguridad completa de una base de datos contiene todos los datos de la base de datos. Para las bases de datos pequeñas, de las que se puede hacer una copia de seguridad con rapidez, la práctica recomendada es utilizar copias de seguridad completas de la base de datos. Sin embargo, a media que la base de datos aumenta de tamaño, las copias de seguridad completas requieren una mayor cantidad de tiempo y espacio de almacenamiento. Por ello, para una base de datos grande, puede que desee complementar las copias de seguridad completas con copias de seguridad diferenciales. Usar copias de seguridad de la base de datos en el modelo de recuperación simple Con el modelo de recuperación simple, después de cada copia de seguridad, la base de datos queda expuesta a la pérdida potencial del trabajo en caso de desastre. El riesgo de pérdida del trabajo se incrementa con cada actualización hasta la siguiente copia de seguridad completa, cuando el riesgo de pérdida vuelve a cero y empieza un nuevo ciclo de riesgo. Con el modelo de recuperación simple, el riesgo de pérdida del trabajo se incrementa a lo largo del tiempo que transcurre entre las copias de seguridad. La siguiente ilustración muestra el riesgo de pérdida del trabajo en una estrategia de copia de seguridad que solo utiliza copias de seguridad completas de la base de datos.
ADMINISTRACIÓN DE BASE DE DATOS
Página 26 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Usar copias de seguridad de la base de datos en el modelo de recuperación completa Las bases de datos que usan el modelo de recuperación completa y el modelo de recuperación optimizado para cargas masivas de registros, requieren copias de seguridad del registro de transacciones. La siguiente ilustración muestra la estrategia de copia de seguridad menos compleja en un modelo de recuperación completa.
Copias de seguridad diferenciales de bases de datos
ADMINISTRACIÓN DE BASE DE DATOS
Página 27 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Una copia de seguridad diferencial de la base de datos registra sólo los datos que han cambiado desde la última copia de seguridad completa de la base de datos. Esta copia de seguridad completa se llama base diferencial. Las copias de seguridad diferenciales de base de datos son más pequeñas y rápidas que las copias de seguridad completas de base de datos. Esto ahorra tiempo de copia de seguridad pero aumenta la complejidad. Para bases de datos grandes, las copias de seguridad diferenciales pueden producirse en intervalos menores que las copias de seguridad de base de datos. Esto disminuye el riesgo de pérdida del trabajo. Las copias de seguridad diferenciales de bases de datos son particularmente útiles si un subconjunto de una base de datos se modifica con más frecuencia que el resto de la base de datos. En tales casos, las copias de seguridad diferenciales de bases de datos le permiten hacer una copia de seguridad con frecuencia sin la sobrecarga que generan las copias de seguridad completas de bases de datos. Estrategia de las copias de seguridad diferenciales de bases de datos (modelo de recuperación simple) Con el modelo de recuperación simple, el riesgo de pérdida de trabajo entre copias de seguridad aumenta con el tiempo. La siguiente ilustración muestra una estrategia de copia de seguridad que reduce el riesgo de pérdida del trabajo mediante la utilización de copias de seguridad de bases de datos complementadas con copias de seguridad diferenciales de bases de datos. Tras la primera copia de seguridad de la base de datos, se realizan tres copias de seguridad diferenciales. La tercera copia de seguridad diferencial tiene el tamaño suficiente como para que la próxima copia de seguridad sea una copia de seguridad de base de datos. Esta copia de seguridad de base de datos establece una nueva base diferencial.
ADMINISTRACIÓN DE BASE DE DATOS
Página 28 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Estrategia de las copias de seguridad diferenciales de bases de datos (modelo de recuperación completa) Con el modelo de recuperación completa y el de recuperación optimizada para cargas masivas de registros, las copias de seguridad diferenciales de la base de datos reducen el tiempo necesario para poner al día las copias de seguridad del registro de transacciones cuando se restaura una base de datos. Una copia de seguridad diferencial de la base de datos restaura la base de datos hasta el punto en el que terminó la copia de seguridad diferencial. La siguiente figura muestra una estrategia de copia de seguridad que complementa las copias de seguridad completas de la base de datos con las copias de seguridad diferenciales, así como una serie de copias de seguridad de registros rutinarias. La presencia de copias de seguridad del registro de transacciones reduce el posible riesgo de pérdida de trabajo al momento después de la copia de seguridad de registros más reciente. Tras la primera copia de seguridad de la base de datos, se realizan tres copias de seguridad diferenciales. La tercera copia de seguridad diferencial tiene el tamaño suficiente como para que la próxima copia de seguridad sea una copia de seguridad de base de datos completa. Esta copia de seguridad de base de datos completa establece una nueva base diferencial.
ADMINISTRACIÓN DE BASE DE DATOS
Página 29 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Antes de la primera copia de seguridad de la base de datos en esta ilustración, la base de datos está expuesta a una posible pérdida de trabajo (de la hora t0 a la hora t1). Por tanto, las copias de seguridad de registros rutinarias reducen el riesgo de pérdida de trabajo a la posibilidad de perder los cambios realizados después de la última copia de seguridad de registros (realizada a la hora t14). Si se produce un error de disco, el administrador de la base de datos debe intentar realizar inmediatamente una copia de seguridad del registro activo (el final del registro). Si esta copia del final del registro se realiza correctamente, la base de datos se puede restaurar hasta el momento del error.
3.5.6.
Replicación
La replicación es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su coherencia. La replicación permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos o móviles mediante redes locales y de área extensa, conexiones de acceso telefónico, conexiones inalámbricas e Internet. La replicación transaccional se usa normalmente en escenarios servidor a servidor que requieren un alto rendimiento, como por ejemplo, la mejora de la escalabilidad y la disponibilidad, el almacenamiento de datos y la creación de
ADMINISTRACIÓN DE BASE DE DATOS
Página 30 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER informes, la integración de datos procedentes de varios sitios, la integración de datos heterogéneos, y la descarga del procesamiento por lotes. La replicación de mezcla se ha diseñado principalmente para las aplicaciones móviles o de servidores distribuidos que pueden encontrarse con conflictos de datos. Los escenarios más frecuentes son: el intercambio de datos con usuarios móviles, las aplicaciones de punto de venta (POS) a consumidores, y la integración de datos de varios sitios. La replicación de instantáneas se usa para proporcionar el conjunto de datos inicial para la replicación transaccional y de mezcla; también se puede usar cuando está indicada una actualización completa de los datos. Con estos tres tipos de replicación, SQL Server proporciona un sistema eficaz y flexible para la sincronización de datos en toda la organización. La replicación en SQLCE 3.5 y SQLCE 4.0 se admite tanto en Windows Server 2012 como en Windows 8.
3.6.
SQL SERVER INTEGRATION SERVICES
Microsoft Integration Services es una plataforma para la creación de soluciones empresariales de transformaciones de datos e integración de datos. Integration Services sirve para resolver complejos problemas empresariales mediante la copia o descarga de archivos, el envío de mensajes de correo electrónico como respuesta a eventos, la actualización de almacenamientos de datos, la limpieza y minería de datos, y la administración de objetos y datos de SQL Server. Los paquetes pueden funcionar en solitario o junto con otros paquetes para hacer frente a las complejas necesidades de la empresa. Integration Services puede extraer y transformar datos de diversos orígenes como archivos de datos XML, archivos planos y orígenes de datos relacionales y, después, cargar los datos en uno o varios destinos. Integration Services contiene un variado conjunto de tareas y transformaciones integradas, herramientas para la creación de paquetes y el servicio Integration Services para ejecutar y administrar los paquetes. Las herramientas gráficas de Integration Services se pueden usar para crear soluciones sin escribir una sola línea de código. También se puede programar el amplio modelo de objetos de Integration Services para crear paquetes mediante programación y codificar tareas personalizadas y otros objetos de paquete.
3.6.1.
Características y tareas de Integration Services
Entornos IDE e Integration Services (SSIS) SQL Server 2012 Integration Services incluye dos IDEs para trabajar con Integration Services: SQL Server Data Tools (SSDT) para desarrollar los paquetes Integration Services que una solución empresarial requiere. SQL Server Data Tools
ADMINISTRACIÓN DE BASE DE DATOS
Página 31 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER (SSDT) proporciona el proyecto de Integration Services en el que se crean paquetes. SQL Server Management Studio para administrar paquetes en un entorno de producción.
3.7.
SQL Server Data Tools (SSDT)
Al trabajar en SQL Server Data Tools (SSDT), se pueden realizar las siguientes tareas: Ejecutar el Asistente para importación y exportación de SQL Server para crear paquetes básicos que copian datos de un origen en un destino. Crear paquetes que incluyan flujo de control complejo, flujo de datos, lógica controlada por eventos y registro. Probar y depurar paquetes mediante las características de solución de problemas y supervisión en el Diseñador SSIS, y las características de depuración en SQL Server Data Tools (SSDT). Crear configuraciones que actualizan las propiedades de los paquetes y los objetos de paquete en el tiempo de ejecución. Crear una utilidad de implementación que pueda instalar paquetes y sus dependencias en otros equipos. Guardar copias de paquetes en la base de datos msdb de SQL Server, el Almacén de paquetes de SSIS y el sistema de archivos.
4. VENTAJAS Dado que las aplicaciones de red y web cada vez se vuelven más significantes, la importancia de sistemas de administración de bases de datos relacionales también se incrementa. Seleccionar la adecuada de acuerdo a las necesidades es esencial para asegurar la calidad y el desempeño adecuado de las aplicaciones. Microsoft SQL Server presenta las siguientes cualidades:
ADMINISTRACIÓN DE BASE DE DATOS
Página 32 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Software de Administración de Nivel Empresarial Microsoft SQL Server incluye software de administración de base de datos de nivel profesional y empresarial. Pocos competidores, como MySQL, han desarrollado software similar en años recientes, pero Microsoft SQL Server se diferencia por ser más fácil de usar, además de tener más funcionalidades. Soporte completo para disparadores (triggers), por ejemplo, son compatibles con los productos de Microsoft. MySQL Server ha incluido esta característica, sin embargo, sin el completo soporte necesario. El software ofrecido por Microsoft también ofrece una estrecha integración con .NET framework, el cual no es el caso de sus competidores. Excelente Soporte de Recuperación de Datos Los datos corruptos son siempre una preocupación cuando se producen pérdidas de energía o paradas incorrectas. Microsoft SQL Server posee una serie de características que facilitan la recuperación y restauración de datos. Aunque tablas individuales no pueden ser recuperadas o restauradas, están disponibles opciones de recuperación de bases de datos completas. Mediante el uso de archivos de registro, almacenamiento en caché, y copias de seguridad, Microsoft SQL Server previene futuras complicaciones debido perdidas de datos, ofreciendo múltiples opciones de recuperación. Seguridad y Estabilidad Muchos servidores SQL están diseñados para el uso de grandes conjuntos de datos y el manejo de muchos usuarios. Cuando se enfrenta esta situación, es decir, múltiples usuarios y enromes cantidades de datos, se necesita un sistema fiable (lo que significa que no se “congela” a menudo) y seguro (lo cual se traduce en difícil acceso no autorizado). Microsoft SQL Server tiene herramientas como Administración Basada en Políticas (Poilicy-Based Managment) que permite a los administradores de la base de datos el poder definir políticas para los datos y el recibir alertas cuando estas políticas son violadas. Otra característica adicional, es que Microsoft SQL Server puede cifrar toda la base de datos, incluyendo los datos y archivos de registro, haciendo de este modo que el servidor sea más seguro frente a eventuales ataques. Existen también características de Administración de Claves Externas (External Key Managment) que permiten soportar certificados de terceros e información encriptada en una sección separada, por lo que se puede, por ejemplo, manejar el procesamiento de tarjetas de crédito y permanecer en el cumplimiento de las leyes actuales de la industria de tarjetas de créditos. Instalación Simplificada Microsoft SQL Server puede ser instalado usando asistentes de configuración (setup-wizards); el instalador también detecta, descarga e instala cualquier
ADMINISTRACIÓN DE BASE DE DATOS
Página 33 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER actualización pre-requisito requerida. Estas características reducen la complejidad de instalar el software. Componentes individuales como Servicios de Base de Datos, Servicios de Análisis e Integración de Servicios pueden ser instalados de forma separada. Microsoft SQL Server actualiza automáticamente los parches de seguridad para reducir los costes de mantenimiento. Menores costos de propiedad Microsoft SQL Server incluye características adicionales sin costo adicional, como: Compresión Avanzada, herramientas de gestión de datos, particionamiento de discos, herramientas de minería de datos, Reportes Empresariales (Enterprise Reporting) y Seguridad Avanzada. Además, pese a ligeras variaciones, las versiones más recientes de Microsft SQL Server poseen compatibilidad con versiones anteriores, por lo que no hay necesidad de actualizar todos los equipos.
5. DIFERENCIAS A continuación se presenta cuadros comparativos, donde se muestran las diferencias que existen entre los distintos motores de base de datos en la actualidad.
Cuadro comparativo sobre Tablas y Vistas que son soportados nativamente
Cuadro comparativo sobre Índices que son soportados nativamente
ADMINISTRACIÓN DE BASE DE DATOS
Página 34 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
ADMINISTRACIÓN DE BASE DE DATOS
Página 35 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Cuadro comparativo sobre Otros Objetos más comunes en los motores de BD
Cuadro comparativo sobre Particionamiento que son soportados nativamente
6. COSTOS SQL Server, la amplia plataforma de base datos de Microsoft, ofrece un rendimiento fiable gracias a la integración de tecnologías en memoria, una rápida obtención de información útil a partir de cualquier tipo de datos, con herramientas que todos conocemos, como Excel, y una plataforma para compilar, implementar y administrar soluciones tanto locales como en nube. SQL Server Propósito 2014 editions Enterpri Enterprise - SQL Server se 2014 Enterprise pone a su disposición rendimiento fiable y completo para satisfacer los requisitos de base de datos y
Canal de Modelo de Distribució Licencias n Por núcleo**
ADMINISTRACIÓN DE BASE DE DATOS
Licencias por volumen, hosting de terceros
Precio Open NL (US$) $14,256***
Página 36 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Business Intelligence más exigentes La edición Enterprise proporciona los niveles de servicio y rendimiento más altos para las cargas de trabajo de nivel 1. Busines Business Intelligence s SQL Server 2014 intellige Business Intelligence nce ofrece una plataforma amplia que permite a las organizaciones compilar e implementar soluciones BI seguras, escalables y administrables. Standar Standard - SQL Server d 2014 Standard proporciona funcionalidad de Business Intelligence y administración de datos básica para cargas de trabajo que no son críticas, con recursos de TI mínimos.
Servidor + CAL****
Licencias por volumen, hosting de terceros
$8,908***
Por núcleo**
Licencias por volumen, hosting de terceros
$3,717***
Servidor + CAL****
Licencias por volumen, hosting de terceros, minorista (FPP) Licencias por volumen, hosting de terceros, minorista (FPP)
$931***
Develop Developer - SQL Server Por usuario er 2014 Developer es una versión completamente funcional de SQL Server que permite a los desarrolladores compilar, probar y demostrar aplicaciones con software de SQL Server de una manera rentable.
ADMINISTRACIÓN DE BASE DE DATOS
$38***
Página 37 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Web
Web - SQL Server 2014 Web facilita una plataforma de datos segura, rentable y altamente escalable para sitios web públicos. La edición Web está disponible solo para proveedores de servicios de software de terceros. Express Express - SQL Server 2014 Express es una base de datos básica gratuita, ideal para aprender y para compilar aplicaciones de escritorio y pequeñas aplicaciones de servidor controladas por datos. Novedad en SQL Server 2014: SQL Server Express LocalDB.
Sólo hosting de terceros
Descarga gratuita
Según sea el precio establecido por el proveedor de hosting
Gratuito
* Los clientes que requieran un almacén de datos MPP ahora tienen acceso a Parallel Data Warehouse (PDW) a través de sus licencias básicas Enterprise Edition con Software Assurance. PDW es parte Analytics Platform System (APS) **Ediciones vendidas bajo el modelo de licencia por núcleo se venden como paquetes de dos núcleos. ***Los precios corresponden a Open No Level (NL) ERP. Para precios más específicos, es necesario contactarse con un proveedor de Microsoft. ****Se requieren licencias CAL para cada usuario o dispositivo que acceda a un servidor, bajo el modelo de licencia Servidor+CAL
7. USO DEL SOFTWARE EN LAS EMPRESAS SQL Server 2014 ofrece un innovador rendimiento confiable gracias a funcionalidades integradas en memoria y respaldadas por comparativas líderes en el sector, partners y clientes. En la siguiente tabla, se muestra las empresas INTERNACIONALES que usan SQL SERVER, mostrando el tipo de aplicación en el que se ha usado, junto con los resultados que se obtuvieron: Tipo de Aplicación
EMPRESAS/Aplica ciones
ADMINISTRACIÓN DE BASE DE DATOS
Resultado
Página 38 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Servicios de juego en línea
bwin.party
Aceleración del almacenamie nto flash PCIe
LSI
Aceleración
Fusion-io
ADMINISTRACIÓN DE BASE DE DATOS
Mejora del rendimiento transaccional que multiplica por 16 el actual, de 15.000 transacciones por segundo a 250.000 con SQL Server con OLTP en memoria La compañía de entretenimiento digital en línea bwin.party ofrece servicios de juego en línea y otros productos a casi dos millones de usuarios. Dado que la empresa necesitaba más capacidad para el rápido crecimiento del negocio y mejorar el rendimiento del sitio web, implementó una solución de procesamiento de transacciones en línea (OLTP) en memoria en Microsoft SQL Server 2014. Ahora, la compañía puede administrar 250.000 solicitudes por segundo y ofrecer a los jugadores una experiencia de juego más ágil y fluido. bwin.party también espera ahorrar hasta 100.000 USD en costes de hardware, y está aumentando sus ingresos. Mejora del rendimiento transaccional que multiplica por 24 el actual, de 6.500 transacciones por segundo a 158.000 con SQL Server con OLTP en memoria Esta comparativa de LSI muestra una mejora radical del rendimiento con la nueva característica SQL Server 2014 con OLTP en memoria. Además, se solicitó al equipo de rendimiento de Microsoft SQL Server que cree un entorno de pruebas interno que fuera flexible y estable, y que eliminara el almacenamiento como cuello de botella del rendimiento. Para realizar esta tarea, se utilizó SQL Server 2014 y las tarjetas LSI Nytro WarpDrive. Mejora radical del rendimiento
Página 39 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER del almacenamie nto flash PCIe
Administració n de pólizas de seguros
Sistema de administración de pólizas de seguros de Accenture Duck Creek
Software empresarial
Conjunto aplicaciones de OpenText
de ECM
ADMINISTRACIÓN DE BASE DE DATOS
mediante SQL Server 2014 con OLTP en memoria Fusion-io ha realizado varias comparativas con SQL Server 2014 con OLTP en memoria en las que se muestran mejoras radicales del rendimiento. Un rendimiento transaccional un 9 % mayor con respecto a SQL Server 2008 Con más de 37.000 transacciones por hora, esta comparativa de Accenture y HP modeló una mezcla compleja de actividades de administración de pólizas que una aseguradora experimentaría durante un día activo de procesamiento empresarial. Basándose en datos recopilados de tres aseguradoras diferentes de nivel 1, se demostró que Microsoft SQL Server 2012 ofrece un aumento significativo en el rendimiento. Procesamiento de 14,8 millones de mensajes de correo electrónico en 24 horas OpenText, líder global de administración de contenido empresarial (ECM), ayuda a las organizaciones a administrar y a obtener el verdadero valor de su contenido empresarial. Durante el estudio comparativo, la solución OpenText Email Monitoring ejecutándose en SQL Server 2012 procesó 14,8 millones de mensajes en 24 horas. Esta cantidad sobrepasa cualquier resultado comparativo publicado para soluciones de supervisión de correo electrónico y es aproximadamente 15 veces superior al volumen típico de ingesta de mensajes de organizaciones de gran tamaño que procesan entre 1 y 1,5 millones de mensajes al día.
Página 40 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Facturación de telecomunica ciones
Turnkey Converged Billing (TCB) de Redknee
Administració n del ciclo de vida del producto
Teamcenter Siemens
Servicios financieros
Temenos T24
de
ADMINISTRACIÓN DE BASE DE DATOS
Escalado a 250 millones de suscriptores En estudios comparativos, la solución de facturación convergente (Turnkey Converged Billing), integrada en SQL Server 2012, ha evidenciado ser capaz de admitir a 250 millones de suscriptores. La prueba de los 250 millones de suscriptores excedió los objetivos de rendimiento tanto en la facturación como en la mediación, con la generación de 26 millones de facturas en un ciclo de facturación de seis horas y la mediación de 4.900 millones registros de detalles de llamadas en 12 horas. Esto mostró una escalabilidad casi lineal a medida que aumentaba el número de suscriptores. Número de usuarios simultáneos duplicado a 10.000 y con un gran rendimiento Las pruebas comparativas de rendimiento realizadas por Siemens PLM validaron el rendimiento y la escalabilidad de Microsoft SQL Server 2012 como un sistema de administración de bases de datos empresariales para Teamcenter. Las pruebas confirman que, cuando se ejecuta en SQL Server 2012, Teamcenter puede escalar fácilmente a 10.000 usuarios simultáneos y mantener un rendimiento excelente. Escalado lineal de un 95 % Microsoft SQL Server 2012, junto con HP y XIO, batió el récord de rendimiento de Temenos T24. En un momento de máximo rendimiento, el sistema procesó 11.500 transacciones por segundo en pruebas empresariales en línea y, de media, más de 10.000 capitalizaciones y devengos de intereses por segundo durante las pruebas de cierre de empresa, lo que
Página 41 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER se traduce en un procesamiento de 25 millones de capitalizaciones y devengos de cuentas en menos de 42 minutos. En la siguiente tabla, se muestra las empresas NACIONALES que usan SQL SERVER, junto con las aplicaciones en el que se ha usado el manejador de base de datos: EMPRESA S Neptunia s.a.
AFP Integra
Depsa
Hersil s.a.
Corporaci ón Miyasato
Arquitectura
Aplicaciones
Sistemas Fuente: Sistemas Propios. ETL: DTS de MS SQL Base de Datos: MS SQL Server Plataforma BI: MicroStrategy Desktop Designer, Architect, Intelligence Server SE, Web Reporter. Sistemas Fuente: Sistemas Propios ETL: MS DTS Base de Datos: MS SQL Plataforma BI: MicroStrategy Architect, Desktop Designer, Intelligence Server SE y Web Professional Sistemas Fuente: Desarrollos propios y pirámides Base de Datos: MS SQL Plataforma BI: MicroStrategy
Extranet para Clientes Externos Track & Trace de Envíos
Sistemas Fuente: AS 400 e IMS ETL: BI Tool y procesos de AS400 Base de Datos: MS SQL Plataforma de BI: MicroStrategy Sistemas Fuente: OfiSmart ERP. ETL: Desarrollos propios (Stored Procedures) Base de Datos: MS SQL 2005 Plataforma de BI: MicroStrategy
ADMINISTRACIÓN DE BASE DE DATOS
Finanzas
Contabilidad Almacén Ventas Existencias Clientes Finanzas Comercial Prescripciones médicas
Ventas Logística Cuentas por Cobrar
Página 42 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Yichang
Sistemas Fuente: SAP ETL: DTS Base de Datos: MS SQL Plataforma BI: MicroStrategy
Ventas Rentabilidad Finanzas Logística Operaciones
8. APLICACIÓN La aplicación se realizará en la base de datos AdventureWorks (una BD de la compañía ficticia Adventure Works ), el cual será implementada utilizando Microsoft SQL Server Managment Studio 2014:
8.1. Información acerca Adventure Works:
del
negocio
de
la
compañía
Adventure Works Cycles, la empresa ficticia en la que se basan las bases de datos de ejemplo AdventureWorks, es una gran empresa de fabricación multinacional. La empresa fabrica y vende bicicletas de metal y de metal compuesto en los mercados de Norteamérica, Europa y Asia. Si bien su sede central de operaciones se encuentra en Bothell, Washington, con 290 empleados, en toda su base de mercado tiene distribuidos varios equipos regionales de ventas. En el año 2000, Adventure Works Cycles compró una pequeña planta de fabricación, Importadores Neptuno, situada en México. Importadores Neptuno fabrica varios subcomponentes muy importantes para la línea de productos de Adventure Works Cycles. Estos subcomponentes se envían a la sede de Bothell para el ensamblado final del producto. En el año 2001, Importadores Neptuno pasó a ser el único fabricante y distribuidor del grupo de productos de bicicletas de paseo. Tras un año fiscal con muy buenos resultados, Adventure Works Cycles está intentando ampliar su cuota de mercado dirigiendo sus ventas a sus mejores clientes, ampliando la disponibilidad de sus productos en un sitio web externo, y reduciendo los costos de venta a través de costos de producción más bajos. Los empleados de la compañía realizan actividades de negocio habituales tales como: Ventas Establecimiento de objetivos de ventas y otros objetivos de negocio Entregas
ADMINISTRACIÓN DE BASE DE DATOS
Página 43 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Administración de inventario Administración de ferias comerciales Administración de personal Definición de presupuestos
8.2.
Sentencias DDL (Lenguaje de definición de datos):
8.2.1.
Creación la Base de datos:
Se crea la base de datos llamada AdventureWorks, especificando la dirección del archivo principal AdventureWorks2014_Data.mdf' (El cuál tiene extensión .mdf y contiene todas las tablas), y el archivo de transacciones AdventureWorks2014_Log.ldf (con extensión ldf. y que almacena los detalles de todas las modificaciones sobre la base de datos) :setvar SqlSamplesDatabasePath "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\" :setvar SqlSamplesSourceDataPath "C:\Program Files\Microsoft SQL Server\120\Tools\Samples\Adventure Works 2014 OLTP Script\" IF '$(SqlSamplesSourceDataPath)' IS NULL OR '$(SqlSamplesSourceDataPath)' = '' BEGIN RAISERROR(N'The variable SqlSamplesSourceDataPath must be defined.', 16, 127) WITH NOWAIT RETURN END; IF '$(SqlSamplesDatabasePath)' IS NULL OR '$(SqlSamplesDatabasePath)' = '' BEGIN RAISERROR(N'The variable SqlSamplesDatabasePath must be defined.', 16, 127) WITH NOWAIT RETURN END; SET NOCOUNT OFF; GO CREATE DATABASE [AdventureWorks2014] ON (NAME = 'AdventureWorks2014_Data', FILENAME = N'$ (SqlSamplesDatabasePath)AdventureWorks2014_Data.mdf', SIZE = 170, FILEGROWTH = 8)
ADMINISTRACIÓN DE BASE DE DATOS
Página 44 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER LOG ON (NAME = 'AdventureWorks2014_Log', FILENAME = N'$ (SqlSamplesDatabasePath)AdventureWorks2014_Log.ldf' , SIZE = 2, FILEGROWTH = 96); GO
8.2.2.
Creación de esquemas XML:
Se pueden crear colecciones de esquemas XML en la base de datos y asociarlas a variables y columnas de tipo xml. Para administrar las colecciones de esquemas de la base de datos, SQL Server proporciona las siguientes instrucciones DDL: CREATE XML SCHEMA COLLECTION (Transact-SQL) Importa los
componentes del esquema a una base de datos. ALTER
XML SCHEMA COLLECTION (Transact-SQL) Modifica los componentes de esquema en una colección de esquemas XML existente.
DROP XML SCHEMA COLLECTION (Transact-SQL) Elimina toda la
colección de esquemas XML y todos sus componentes. En nuestra aplicación vamos a crear algunas colecciones de esquemas XML para nuestra base de datos; en el siguiente script lo haremos para la entidad Persona creando un esquema y luego modificandola: CREATE XML SCHEMA COLLECTION [Person]. [AdditionalContactInfoSchemaCollection] AS ' ADMINISTRACIÓN DE BASE DE DATOS
Página 45 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER '; GO ALTER XML SCHEMA COLLECTION [Person]. [AdditionalContactInfoSchemaCollection] ADD ' '; GO
En la tabla siguiente se describen los esquemas que se utilizan en nuestra base de datos de AdventureWorks y se enumeran las tablas representativas de cada esquema:
Esquema
Contiene objetos relacionados con
Ejemplos
HumanReso
Empleados de Adventure Works Cycles.
Tabla Employee
ADMINISTRACIÓN DE BASE DE DATOS
Página 46 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER urces Tabla Department Tabla Contact Person
Nombres y direcciones de clientes Tabla Address individuales, proveedores y empleados. Tabla StateProvince Tabla BillOfMaterials
Production
Productos fabricados y vendidos por Adventure Works Cycles.
Tabla Product Tabla WorkOrder Tabla PurchaseOrderDetail
Purchasing
Proveedores a los que se compran las piezas y los productos.
Tabla PurchaseOrderHeade r Tabla Vendor Tabla Customer
Sales
Tabla Datos relacionados con los clientes y las SalesOrderDetail ventas. Tabla SalesOrderHeader
8.2.3.
Creación de las tablas:
Se creará una tabla Producto para el área de Producción (esquema Production en la BD), estableciendo su Clave Primaria (Primary Key), sus respectivos CONSTRAINTS y con algunos CHECKS para sus restricciones: CREATE TABLE [Production].[Product]( [ProductID] [int] IDENTITY (1, 1) NOT NULL, [Name] [Name] NOT NULL, [ProductNumber] [nvarchar](25) NOT NULL,
ADMINISTRACIÓN DE BASE DE DATOS
Página 47 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER [MakeFlag] [Flag] NOT NULL CONSTRAINT [DF_Product_MakeFlag] DEFAULT (1), [FinishedGoodsFlag] [Flag] NOT NULL CONSTRAINT [DF_Product_FinishedGoodsFlag] DEFAULT (1), [Color] [nvarchar](15) NULL, [SafetyStockLevel] [smallint] NOT NULL, [ReorderPoint] [smallint] NOT NULL, [StandardCost] [money] NOT NULL, [ListPrice] [money] NOT NULL, [Size] [nvarchar](5) NULL, [SizeUnitMeasureCode] [nchar](3) NULL, [WeightUnitMeasureCode] [nchar](3) NULL, [Weight] [decimal](8, 2) NULL, [DaysToManufacture] [int] NOT NULL, [ProductLine] [nchar](2) NULL, [Class] [nchar](2) NULL, [Style] [nchar](2) NULL, [ProductSubcategoryID] [int] NULL, [ProductModelID] [int] NULL, [SellStartDate] [datetime] NOT NULL, [SellEndDate] [datetime] NULL, [DiscontinuedDate] [datetime] NULL, [rowguid] uniqueidentifier ROWGUIDCOL NOT NULL CONSTRAINT [DF_Product_rowguid] DEFAULT (NEWID()), [ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Product_ModifiedDate] DEFAULT (GETDATE()), CONSTRAINT [CK_Product_SafetyStockLevel] CHECK ([SafetyStockLevel] > 0), CONSTRAINT [CK_Product_ReorderPoint] CHECK ([ReorderPoint] > 0), CONSTRAINT [CK_Product_StandardCost] CHECK ([StandardCost] >= 0.00), CONSTRAINT [CK_Product_ListPrice] CHECK ([ListPrice] >= 0.00), CONSTRAINT [CK_Product_Weight] CHECK ([Weight] > 0.00), CONSTRAINT [CK_Product_DaysToManufacture] CHECK ([DaysToManufacture] >= 0), CONSTRAINT [CK_Product_ProductLine] CHECK (UPPER([ProductLine]) IN ('S', 'T', 'M', 'R') OR [ProductLine] IS NULL), CONSTRAINT [CK_Product_Class] CHECK (UPPER([Class]) IN ('L', 'M', 'H') OR [Class] IS NULL), CONSTRAINT [CK_Product_Style] CHECK (UPPER([Style]) IN ('W', 'M', 'U') OR [Style] IS NULL), CONSTRAINT [CK_Product_SellEndDate] CHECK (([SellEndDate] >= [SellStartDate]) OR ([SellEndDate] IS NULL)), ) ON [PRIMARY]; GO ALTER TABLE [Production].[Product] WITH CHECK ADD CONSTRAINT [PK_Product_ProductID] PRIMARY KEY CLUSTERED ( [ProductID]
ADMINISTRACIÓN DE BASE DE DATOS
Página 48 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER ) ON [PRIMARY]; GO También se le crea un índice para acelerar y hacer más eficiente las consultas sobre la tabla producto, este índice también se puede realizar en XML para cada columna XML: CREATE UNIQUE INDEX [AK_Product_ProductNumber] ON [Production].[Product] ([ProductNumber]) ON [PRIMARY]; CREATE UNIQUE INDEX [AK_Product_Name] ON [Production].[Product]([Name]) ON [PRIMARY]; CREATE UNIQUE INDEX [AK_Product_rowguid] ON [Production].[Product] ([rowguid]) ON [PRIMARY]; GO CREATE PRIMARY XML INDEX [PXML_ProductModel_CatalogDescription] ON [Production].[ProductModel]([CatalogDescription]); GO CREATE PRIMARY XML INDEX [PXML_ProductModel_Instructions] ON [Production].[ProductModel]([Instructions]); GO
ADMINISTRACIÓN DE BASE DE DATOS
Página 49 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Creación de Foreign Keys para la tabla producto: ALTER TABLE [Production].[Product] ADD CONSTRAINT [FK_Product_UnitMeasure_SizeUnitMeasureCode] FOREIGN KEY ( [SizeUnitMeasureCode] ) REFERENCES [Production].[UnitMeasure]( [UnitMeasureCode] ), CONSTRAINT [FK_Product_UnitMeasure_WeightUnitMeasureCode] FOREIGN KEY ( [WeightUnitMeasureCode] ) REFERENCES [Production].[UnitMeasure]( [UnitMeasureCode] ), CONSTRAINT [FK_Product_ProductModel_ProductModelID] FOREIGN KEY ( [ProductModelID] ) REFERENCES [Production].[ProductModel]( [ProductModelID] ), CONSTRAINT [FK_Product_ProductSubcategory_ProductSubcategoryID] FOREIGN KEY ( [ProductSubcategoryID] ) REFERENCES [Production].[ProductSubcategory]( [ProductSubcategoryID] ); GO
8.2.4.
Modelo Relacional:
Debido a la enorme cantidad de tablas distribuidas en los diferentes esquemas en la base de datos AdventureWorks, presentar un modelo relacional entre todas las tablas de la base de datos sería demasiado incomprensible y extenso, por lo que presentaremos solamente el modelo relacional del esquema más importante del negocio: Esquema de producción. Este esquema contiene la información completa de los productos que la empresa fabrica, y su relación con las diferentes tablas existentes en el esquema. Estas tablas contienen la información de: los componentes que se utilizan para fabricar las biciletas, lista de ubicaciones en las que los productos y las piezas de almacenan como inventario, clasificación general de los productos, costos, descripción, modelos del producto, orden de trabajo, etc.
ADMINISTRACIÓN DE BASE DE DATOS
Página 50 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Modelo relacional sencillo del esquema Production
ADMINISTRACIÓN DE BASE DE DATOS
Página 51 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
ADMINISTRACIÓN DE BASE DE DATOS
Página 52 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
8.2.5.
Creación de Triggers:
Para el área de producción se crearon los siguientes triggers, estos triggers se relacionan con la orden de trabajo y el historial de transacciones del producto en particular, cada vez que se crea una nueva orden de trabajo de un producto o si se edita una orden se deberá registrar la información de esa orden en el historial de transacciones del producto. CREATE TRIGGER [Production].[iWorkOrder] ON [Production].[WorkOrder] AFTER INSERT AS BEGIN DECLARE @Count int; SET @Count = @@ROWCOUNT; IF @Count = 0 RETURN; SET NOCOUNT ON; BEGIN TRY INSERT INTO [Production].[TransactionHistory]( [ProductID] ,[ReferenceOrderID] ,[TransactionType] ,[TransactionDate] ,[Quantity] ,[ActualCost]) SELECT inserted.[ProductID] ,inserted.[WorkOrderID] ,'W' ,GETDATE() ,inserted.[OrderQty] ,0 FROM inserted; END TRY BEGIN CATCH EXECUTE [dbo].[uspPrintError]; -- Rollback any active or uncommittable transactions before -- inserting information in the ErrorLog IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END EXECUTE [dbo].[uspLogError]; END CATCH; END;
ADMINISTRACIÓN DE BASE DE DATOS
Página 53 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER GO CREATE TRIGGER [Production].[uWorkOrder] ON [Production].[WorkOrder] AFTER UPDATE AS BEGIN DECLARE @Count int; SET @Count = @@ROWCOUNT; IF @Count = 0 RETURN; SET NOCOUNT ON; BEGIN TRY IF UPDATE([ProductID]) OR UPDATE([OrderQty]) BEGIN INSERT INTO [Production].[TransactionHistory]( [ProductID] ,[ReferenceOrderID] ,[TransactionType] ,[TransactionDate] ,[Quantity]) SELECT inserted.[ProductID] ,inserted.[WorkOrderID] ,'W' ,GETDATE() ,inserted.[OrderQty] FROM inserted; END; END TRY BEGIN CATCH EXECUTE [dbo].[uspPrintError]; -- Rollback any active or uncommittable transactions before -- inserting information in the ErrorLog IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END EXECUTE [dbo].[uspLogError]; END CATCH; END; GO
ADMINISTRACIÓN DE BASE DE DATOS
Página 54 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
8.2.6.
Creación de Funciones:
Primeramente se creará una función para saber el nivel de stock de un producto en su respectivo almacén, donde el parámetro de entrada será el código del producto. Código de la función: CREATE FUNCTION [dbo].[ufnGetStock](@ProductID [int]) RETURNS [int] AS -- Returns the stock level for the product. This function is used internally only BEGIN DECLARE @ret int; SELECT @ret = SUM(p.[Quantity]) FROM [Production].[ProductInventory] p WHERE p.[ProductID] = @ProductID AND p.[LocationID] = '6'; -- Only look at inventory in the misc storage IF (@ret IS NULL) SET @ret = 0 RETURN @ret END; GO Al ejecutar la función para un parámetro ‘1’ y al consultarlo se obtiene su stock respectivo:
ADMINISTRACIÓN DE BASE DE DATOS
Página 55 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER Luego crearemos una función para obtener el precio de un producto según su código y una fecha en específico, esta información se obtendrá del historial de costos del producto. Código de la función: CREATE FUNCTION [dbo].[ufnGetProductStandardCost](@ProductID [int], @OrderDate [datetime]) RETURNS [money] AS -- Returns the standard cost for the product on a specific date. BEGIN DECLARE @StandardCost money; SELECT @StandardCost = pch.[StandardCost] FROM [Production].[Product] p INNER JOIN [Production].[ProductCostHistory] pch ON p.[ProductID] = pch.[ProductID] AND p.[ProductID] = @ProductID AND @OrderDate BETWEEN pch.[StartDate] AND COALESCE(pch. [EndDate], CONVERT(datetime, '99991231', 112)); -- Make sure we get all the prices! RETURN @StandardCost; END; GO El resultado que obtendremos al consultar la función con los parámetros respectivos del producto con código 770 y la fecha del 20-06-2011 será:
ADMINISTRACIÓN DE BASE DE DATOS
Página 56 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
8.2.7.
Creación de Procedimientos:
Este procedure permite obtener los datos de los diferentes componentes de un producto en sus diferentes niveles de estructura, además se mostrará la descripción del componente, su cantidad, su costo total, y su nivel de jerarquía en la construcción del producto. Código del procedure: CREATE PROCEDURE [dbo].[uspGetWhereUsedProductID] @StartProductID [int], @CheckDate [datetime] AS BEGIN SET NOCOUNT ON; --Use recursive query to generate a multi-level Bill of Material (i.e. all level 1 components of a level 0 assembly, all level 2 components of a level 1 assembly) WITH [BOM_cte]([ProductAssemblyID], [ComponentID], [ComponentDesc], [PerAssemblyQty], [StandardCost], [ListPrice], [BOMLevel], [RecursionLevel]) -CTE name and columns AS ( SELECT b.[ProductAssemblyID], b.[ComponentID], p.[Name], b. [PerAssemblyQty], p.[StandardCost], p.[ListPrice], b.[BOMLevel], 0 -- Get the initial list of components for the bike assembly FROM [Production].[BillOfMaterials] b INNER JOIN [Production].[Product] p ON b.[ProductAssemblyID] = p.[ProductID] WHERE b.[ComponentID] = @StartProductID AND @CheckDate >= b.[StartDate] AND @CheckDate = b.[StartDate] AND @CheckDate 200;
ADMINISTRACIÓN DE BASE DE DATOS
Página 62 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Reporte de las ordenes de venta de un producto: el n° de orden, su fecha y su importe total: SELECT H.SalesOrderID AS 'N° Orden', H.OrderDate AS Fecha, SUM(D.OrderQty*D.UnitPrice) AS [Importe Vendido] FROM Sales.SalesOrderHeader H INNER JOIN Sales.SalesOrderDetail D ON H.SalesOrderID = D.SalesOrderID GROUP BY H.SalesOrderID, H.OrderDate;
ADMINISTRACIÓN DE BASE DE DATOS
Página 63 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Reporte de las ordenes de venta, con el nombre y apellido del cliente, su correo y cuyo importe de venta total sea mayor 2’000 dólares: SELECT H.SalesOrderID AS 'N° Orden', H.OrderDate AS Fecha, SUM(D.OrderQty*D.UnitPrice) AS [Importe Vendido], C.FirstName+' '+C.MiddleName+' '+C.LastName AS Cliente, A.EmailAddress AS Email FROM Sales.SalesOrderHeader H INNER JOIN Sales.SalesOrderDetail D ON H.SalesOrderID = D.SalesOrderID INNER JOIN Person.Person C ON H.CustomerID = C.BusinessEntityID INNER JOIN Person.EmailAddress A ON C.BusinessEntityID = A.BusinessEntityID GROUP BY H.SalesOrderID, H.OrderDate, C.FirstName+' '+C.MiddleName+' '+C.LastName,A.EmailAddress HAVING SUM(D.OrderQty*D.UnitPrice)>2000;
ADMINISTRACIÓN DE BASE DE DATOS
Página 64 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Reporte de los vendedores que tiene la empresa AdventureWorks, con sus datos del vendedor y sus ventas de este año y del año pasado: SELECT s.[BusinessEntityID] AS CODIGO ,p.[FirstName] AS NOMBRE ,p.[LastName] AS APELLIDO ,e.[JobTitle] AS TÍTULO ,pp.[PhoneNumber] AS NÚMERO ,ea.[EmailAddress] AS CORREO ,a.[AddressLine1] AS DIRRECIÓN ,a.[City] AS CIUDAD ,s.[SalesQuota] AS VENTAS ,s.[SalesLastYear] AS Ventas_Año_Pasado FROM [Sales].[SalesPerson] s INNER JOIN [HumanResources].[Employee] e ON e.[BusinessEntityID] = s.[BusinessEntityID] INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = s.[BusinessEntityID] INNER JOIN [Person].[BusinessEntityAddress] bea ON bea.[BusinessEntityID] = s.[BusinessEntityID] INNER JOIN [Person].[Address] a ON a.[AddressID] = bea.[AddressID] INNER JOIN [Person].[CountryRegion] cr ON cr.[CountryRegionCode] = sp.[CountryRegionCode] LEFT OUTER JOIN [Sales].[SalesTerritory] st ON st.[TerritoryID] = s.[TerritoryID] LEFT OUTER JOIN [Person].[EmailAddress] ea
ADMINISTRACIÓN DE BASE DE DATOS
Página 65 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER ON ea.[BusinessEntityID] = p.[BusinessEntityID] LEFT OUTER JOIN [Person].[PersonPhone] pp ON pp.[BusinessEntityID] = p.[BusinessEntityID]
Reporte de los datos de los productos con su código, nombre, color, nivel de stock, costo , precio, su número componentes estructurales (Bills of Materials) totales, además se muestra la cantidad de ordenes totales que se ha realizado de un producto y con una condición de que su stock actual sea mayor que 200: SELECT P.ProductID as Código, P.Name as Nombre, P.Color, P.SafetyStockLevel as 'Nivel de Stock', P.StandardCost as Costo, P.ListPrice as Precio, SUM(B.PerAssemblyQty) as 'Cantidad de Materiales', SUM(W.OrderQty) as 'Orden Total' FROM Production.Product P INNER JOIN Production.BillOfMaterials B ON P.ProductID = B.ComponentID INNER JOIN Production.WorkOrder W ON W.ProductID = P.ProductID WHERE P.SafetyStockLevel > 200 GROUP BY P.SafetyStockLevel, P.Name, P.StandardCost, P.ListPrice, P.ProductID, P.Color
ADMINISTRACIÓN DE BASE DE DATOS
Página 66 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
8.4.
Exportar datos a Excel
Desde el mismo Excel se puede importar las tablas de nuestras diferentes bases de datos a través de las pestañas Datos > De otras fuentes > Desde Sql Server. Seleccionamos nuestro servidor, luego seleccionamos la base de datos que queremos importar ( AdventureWorks ),y por último la tabla o vista que deseamos excelizar.
ADMINISTRACIÓN DE BASE DE DATOS
Página 67 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
Al importar los datos obtendremos la siguiente tabla en excel con la información de la tabla “Empleados” de base de datos utilizada en nuestra aplicación:
ADMINISTRACIÓN DE BASE DE DATOS
Página 68 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
CONCLUSIONES Microsoft SQL Server es un manejador de base de datos que implementa el modelo relacional, teniendo como ventaja manejar la relación de muchos a muchos. Además de tener la considerable ventaja de que es más fácil de entender y de utilizar por un usuario no experto. La organización de archivos de SQL Server se hace de forma indexada utilizando dos archivos, uno de datos que contiene la información de la base de datos permitiendo que las consultas realizadas sean más rápidas, accediéndose a los registros de forma secuencial y también de forma aleatoria, usando el índice. SQL Server presenta opciones para la administración de los datos y su seguridad respectiva. Esto mediante las copias de seguridad y sus diversas formas de realizarlo, así como los permisos que se otorgan a los usuarios para la lectura y escritura de los datos. Microsoft SQL Server compensa su precio al ser usado en empresas que posean bases de datos de gran volumen, sobre todo si se requiere de encriptación, debido a que este manejador de base de datos apuesta por la seguridad. Las empresas grandes tanto del Perú como del Mundo, tienen implementados este gestor de base de datos que almacenan las grandes cantidades de datos que son originados por el propio negocio. Esto debido a su seguridad y escalabilidad. Microsoft SQL Server ofrece garantías, así como un rendimiento confiable, mayor rapidez en la obtención de la información privilegiada que subyace en datos de cualquier tipo, y una plataforma para la nube híbrida, que facilitan más la creación de soluciones de recuperación ante desastres y copias de seguridad con Microsoft Azure. Por lo tanto, SQL Server hace más sencilla y rentable la creación de aplicaciones esenciales y de alto rendimiento, ayudando a los empleados y de la alta dirección, a tomar decisiones más inteligentes y rápidas.
ADMINISTRACIÓN DE BASE DE DATOS
Página 69 de 70
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL SERVER
BIBLIOGRAFÍA https://msdn.microsoft.com/es-es/library/bb545450.aspx https://www.microsoft.com/es-es/server-cloud/products/sql-serverbenchmarks/partner.aspx http://www.spperu.com/pdf/microstrategy/Neptunia.pdf http://www.spperu.com/pdf/microstrategy/AFPIntegra.pdf http://www.spperu.com/pdf/microstrategy/Depsa.pdf http://www.spperu.com/pdf/microstrategy/Laboratorios_Hersil.pdf http://www.spperu.com/pdf/microstrategy/Miyasato.pdf http://www.spperu.com/pdf/microstrategy/Yichang.pdf https://www.microsoft.com/en-us/server-cloud/products/sqlserver/purchasing.aspx
ADMINISTRACIÓN DE BASE DE DATOS
Página 70 de 70
View more...
Comments