35
BASES DE DATOS DISTRIBUIDAS CON SQL SERVER 2012 (2014) Antonio Ortiz Ramírez www.aortiz.net www.qsoluciones.net

Bases de Datos Distribuidas con Sql Server 2012

Embed Size (px)

DESCRIPTION

Avance del curso multimedia "Base de datos distribuidas con SQL Server 2012"

Citation preview

Page 1: Bases de Datos Distribuidas con Sql Server 2012

BASES DE DATOS DISTRIBUIDAS CON

SQL SERVER 2012

(2014) Antonio Ortiz Ramírez www.aortiz.net

www.qsoluciones.net

Page 2: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

2

Dirigido a: Programadores, Analistas de Sistemas, Administradores de Sistemas, Estudiantes y

Profesores que deseen aprender a diseñar e implementar un modelo de base de datos

distribuida.

Deseable: Conocimientos de bases de datos, SQL.

Requisitos: Haber cursado alguna carrera relacionada a la informática o tener experiencia en

bases de datos.

Duración: 50 hrs.

Page 3: Bases de Datos Distribuidas con Sql Server 2012

3

www.qsoluciones.net

CONTENIDO:

I. Introducción al modelo relacional

De Sequel a SQL Server

Bases de Datos Relacionales

Manejadores de Bases de Datos Relacionales

SQL

Arquitectura Cliente-Servidor

II. Instalación y Configuración de SQL Server

Instalación Manual

Configuración de Instancias

Administrador de Configuración (Configuration Manager)

III. Administración de SQL Server

SQL Server Management Studio

Separar y Adjuntar bases de datos

Respaldos

Compactar

Importar Datos

IV. Diseño de Bases de Datos

Diseño Conceptual

Diseño Lógico

Diseño Físico

Modelo relacional

Modelos E-R

Normalización

Page 4: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

4

V. Arquitectura de SQL Server

Archivos de datos

Archivo de transacciones

Grupos de archivos

Páginas de Datos

Índices Clustered

Índices Non clustered

VI. Transact SQL

Diagramas

DDL

Consultas

SubConsultas

VII. Vistas

Vistas

Vistas Indexadas

VIII Bases de Datos Distribuidas

Descripción

Características de una base de datos distribuidas

Ventajas

Desventajas

Creando un modelo de base de datos distribuidas

IX. Consultas Distribuidas

Servidores vinculados

Consultas distribuidas

Page 5: Bases de Datos Distribuidas con Sql Server 2012

5

www.qsoluciones.net

Transacciones Distribuidas

X. Procedimientos Almacenados (Stored Procedures) y Funciones

Procedimientos del Sistema

Procedimientos del Usuario

Funciones del Sistema

Funciones del Usuario

SQL Dinámico vs Procedimientos Almacenados

XI. Desencadenadores (Triggers)

XII. Replicación

Publicador

Suscriptor

Réplica de instantáneas

Réplica transaccional

Replicación de Mezcla

Page 6: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

6

I. INTRODUCCIÓN AL MODELO RELACIONAL

Objetivo de este capítulo: En este capítulo se hace un repaso, de la historia de Sequel a SQL

Server, de los conceptos básicos del modelo relacional, en específico de temas como bases de

datos relacionales, tablas, llave primaria y secundaria, relaciones, manejador de base de datos,

SQL, arquitectura cliente-servidor, normalización.

Duración aproximada: 5 horas

De Sequel a SQL Server: Sequel (Structured English Query Language ) es el primer lenguaje

para acceso a datos relacionales, creado por IBM en la década de 1970, el cual pasaría a ser

el antecesor del estándar SQL.

Microsoft SQL Server, la implementación del manejador de base de datos reconoce los

orígenes del lenguaje estándar de consulta y por esto adopta la pronunciación ‘sequel’ para el

producto de Microsoft. La implementación (variante o dialecto) de SQL incluida en Microsoft

SQL Server es llamada Transact SQL.

Page 7: Bases de Datos Distribuidas con Sql Server 2012

7

www.qsoluciones.net

Bases de Datos Relacionales: Son bases de datos cuyo diseño está basado en el modelo

relacional, las cuales contienen Tablas que representan ‘entidades’ y relaciones entre estas

tablas.

Modelo relacional

El modelo relacional permite representar datos de manera fácil y está basado en la teoría de

conjuntos y lógica de predicados.

El modelo relacional permite realizar el modelo conceptual de una base de datos. Así, una base

de datos relacional se compone de un conjunto de tablas que se relacionan entre sí por un

campo en común.

Algunas características del modelo relacional:

Los nombres de tablas deben ser en singular

Los nombres tablas son únicos

Cada tabla es un conjunto de filas (registros) y columnas (campos)

Las tablas se relacionan por medio de las llaves primarias y foráneas

La Llave primaria es un valor único que define a los demás atributos (columnas) de la

tabla

*Clave Nombre Telefono Ciudad

1 Juan Lopez (55) 1234-5678 Mexico, DF

2 Pedro Zapata (33) 2345-6789 Guadalajara

3 Luis Rodriguez (81) 9876-5432 Monterrey

Tabla: Persona

Columna

(Campo)

Fila (Registro)

Compra Producto Cliente 1 *

1:N

Page 8: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

8

Manejadores de Bases de Datos Relacionales: Los ‘Sistemas Manejadores de Bases de

Datos’ o DBMS por sus siglas en inglés; permiten almacenar y posteriormente acceder a los

datos de forma rápida y estructurada. Entre los manejadores más populares están Microsoft

SQL Server, Oracle, DB2, MySQL, Interbase, etc.

SQL: el lenguaje estructurado de consulta (Structured Query Language) permite que las

aplicaciones realicen consultas, actualizaciones y eliminación a los datos de una base de datos

relacional mediante sentencias definidas por este lenguaje estandarizado. SQL contiene 2

grupos principales de sentencias que se agrupan en:

DDL (Data Definition Language) por medio de la cual se puede crear o modificar la

estructura de los datos (tablas, índices, relaciones); ejemplos de estos en Transact SQL

son: CREATE, ALTER, DROP y TRUNCATE.

DML (Data Manipulation Language) o Lenguaje de manipulación de datos, que permite

consultar, insertar, eliminar o actualizar los datos. Los más conocidos son: SELECT,

INSERT, DELETE, UPDATE

Page 9: Bases de Datos Distribuidas con Sql Server 2012

9

www.qsoluciones.net

Arquitectura Cliente-Servidor: Es un modelo de aplicación donde las tareas se dividen entre

la aplicación Cliente que consume los servicios y recursos del Servidor. Ejemplo de este tipo de

arquitectura son los servidores FTP y clientes FTP, Servidores Web y navegadores. La

separación del cliente y servidor es de tipo lógica, lo cual implica que ambos pueden estar

contenidos en el mismo hardware o en equipos separados, incluso cada uno de ellos puede

estar instalado en un clúster o grupo de computadoras.

Page 10: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

10

II. INSTALACIÓN Y CONFIGURACIÓN DE SQL SERVER

Instalación Manual: Para esta instalación se utilizara el paquete de instalación de SQL Server

2012 express el cual está disponible de manera gratuita desde el sitio oficial de Microsoft.

http://msdn.microsoft.com/es-mx/evalcenter/hh230763.aspx

De clic al botón “Empiece hoy mismo y en la siguiente pantalla seleccione la edición que

requiera: https://www.microsoft.com/betaexperience/pd/SQL2012EvalNOCTA/esxl/

Voy a utilizar la edición de 64 bits, que además ya incluye la herramienta “Management Studio”

(edición With Tools, distintivo de la terminación WT en el nombre del archivo) , doy doble clic al

ejecutable y espero a que aparezca la siguiente pantalla:

Page 11: Bases de Datos Distribuidas con Sql Server 2012

11

www.qsoluciones.net

Hacemos clic en la opción “New SQL Server stand-alone installation”, enseguida aparece la

pantalla con los términos de licencia, a lo cual aceptamos y hacemos clic en el botón Siguiente

(Next).

En esta ocasión me indica que ya existen actualizaciones para el producto se instalaran

automáticamente (SP1).

Page 12: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

12

Aceptamos y continuamos haciendo clic en el botón Siguiente (Next).

Page 13: Bases de Datos Distribuidas con Sql Server 2012

13

www.qsoluciones.net

En esta pantalla aceptamos las características por defecto y continuamos. En la siguiente

pantalla seleccionamos cambiar el nombre de instancia, en este ejemplo utilizo: SQL2012.

Page 14: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

14

En la sección inferior de la pantalla me indica que ya se encuentra una instancia instalada,

llamada SQL2008, verificamos que todo está bien y damos clic a Siguiente.

Page 15: Bases de Datos Distribuidas con Sql Server 2012

15

www.qsoluciones.net

En esta pantalla se configura las cuentas que utilizan los servicios a instalar, dejamos la

configuración por defecto y hacemos clic en Siguiente.

Page 16: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

16

Aquí seleccionamos el tipo de seguridad a utilizar para SQL Server, en esta ocasión utilizo

Autenticacion Mixta (o de SQL Server) por no encontrarme en una red con dominio,

administrada por Windows Server, en caso de administrar acceso y privilegios con Windows

Server, sería aconsejable usar el modo de Autenticación Windows.

Page 17: Bases de Datos Distribuidas con Sql Server 2012

17

www.qsoluciones.net

La siguiente pantalla que aparece permite indicar si desea enviar un reporte sobre la instalación

a Microsoft. Seleccione la opción deseada y de clic en Siguiente.

Page 18: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

18

Si todo finaliza correctamente, la pantalla final sería esta:

Page 19: Bases de Datos Distribuidas con Sql Server 2012

19

www.qsoluciones.net

Administrador de Configuración (SQL Server Configuration Manager)

Despues de haber instalado SQL Server, vamos al menú de inicio, en la carpeta Microsoft SQL

Server 2012, abrimos la subcarpeta Configuration Tools y hacemos clic en SQL Server

Configuration Manager.

Abrimos la opción SQL Server Network Configuration y hacemos doble clic en TCP/IP

Page 20: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

20

En esta ventana revisamos que se encuentre seleccionado Sí para la opción Activo, de esta

manera comprobamos que el protocolo TCP/IP se encuentra disponible para comunicarnos con

esta Instancia de SQL Server.

Page 21: Bases de Datos Distribuidas con Sql Server 2012

21

www.qsoluciones.net

Hacemos clic en la pestaña Direcciones IP (IP Addresses)

Page 22: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

22

Aquí se configura el puerto a utilizar por esta instancia, recomendamos por ahora usar el puerto

estándar de SQL Server que es el 1433.

Para ello, revisamos cada sección donde encontremos TCP Dynamics Ports y eliminamos el 0,

enseguida colocamos el valor del puerto hasta el final en IP ALL, opción TCP Port. Después de

aceptar, deberemos reiniciar el servicio para que escuche en el puerto seleccionado.

¿Porque definir un puerto fijo en lugar de dinámico? Cada vez que inicia el servicio podría

obtener el primer puerto disponible en el equipo, el cual es muy probable que sea diferente y

podríamos tener problemas de conexión desde las aplicaciones cliente.

NOTA: Si ya se encuentra una instancia funcionando con este puerto, la instancia de SQL 2012

que instalamos recientemente no podrá iniciar y deberemos cambiar el puerto.

Page 23: Bases de Datos Distribuidas con Sql Server 2012

23

www.qsoluciones.net

III. ADMINISTRACIÓN DE SQL SERVER

SQL Server Management Studio. Mediante la herramienta Management Studio es posible

visualizar, crear y modificar los objetos contenidos en una instancia de SQL Server; mediante su

interfaz gráfica facilita las tareas que normalmente requieren de escribir código DDL o DML

En la carpeta de SQL Server 2012 del menú de inicio podemos abrir SQL Server Management

Studio, a partir de la cual aparece la siguiente ventana:

Indique el nombre de instancia a la cual desea conectarse, a continuación seleccione el tipo de

autenticación Windows si eligió esta durante la instalación o se encuentra en el equipo que

contiene la instancia de SQL Server; seleccione autenticación SQL Server si eligió esta durante

la instalación.

Page 24: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

24

Crear una base de datos

Hacemos clic en el botón Nueva consulta (New Query) y en la ventana de edición que aparece

tecleamos lo siguiente:

CREATE DATABASE EjemploBD

Hacemos clic en el botón Ejecutar ( Execute ). A continuación indicamos que deseamos poner

en uso la nueva base de datos EjemploBD. Para eso tecleamos la siguiente sentencia:

USE EjemploBD

* NOTA: Para ejecutar solo este comando y no el anterior, podemos escribir en un renglón

debajo de la sentencia anterior, enseguida seleccionar la línea que contiene la sentencia USE

EjemploBD y hacer clic al botón Ejecutar. O si lo prefieres podrias eliminar el contenido de la

ventana y enseguida teclear la nueva sentencia.

Page 25: Bases de Datos Distribuidas con Sql Server 2012

25

www.qsoluciones.net

Crear Tablas

CREATE TABLE Persona(ID int IDENTITY PRIMARY KEY, Nombre varchar(50), Edad int DEFAULT 0, Peso float

DEFAULT 0)

En el árbol de la izquierda deberá aparecer la tabla Persona, dentro del objeto EjemploBD,

Tables. En caso de no aparecer podrá refrescar la vista haciendo clic con botón derecho en

Tables y luego en Actualizar (Refresh).

Si hacemos clic con botón derecho en la tabla Persona y enseguida en Diseño (Design)

veremos la tabla, las columnas y tipos de datos de cada una.

Crear índices

Ahora creamos un índice para el nombre de la persona

Create Index ind_Persona_Nombre ON Persona(Nombre)

Page 26: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

26

Aquí observamos que la columna ID es de tipo Identity, con un valor inicial de 1 y un incremento

de 1, esto asegura que sea un valor único incremental, por otro lado se agregó la propiedad de

Llave primaria y por defecto se creó el índice como Clustered; esto lo podemos confirmar en la

ventana de índices.

Page 27: Bases de Datos Distribuidas con Sql Server 2012

27

www.qsoluciones.net

Sólo podemos tener un índice clustered por tabla; y esto es debido a que la propiedad clustered

determina el orden físico de los registros dentro de las páginas de datos, permitiendo que los

datos sean ordenados e indexados mientras son almacenados tomando en cuenta esta

columna (o columnas).

El índice clustered es por su naturaleza el más rápido, ya que una vez encontrado el dato a

través de ese índice, se pueden obtener todas las demás columnas sin hacer un salto a los

datos. En cualquier otro tipo de índice, se crea un objeto en la base de datos que contiene una

estructura para la columna indexada y por cada registro en el índice existe un apuntador a la

ubicación física de los datos del registro.

Page 28: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

28

Separar y Adjuntar bases de datos

El proceso de Conectar o indicar a SQL Server que use y ponga activa una base de datos para

los usuarios se le llama ‘Adjuntar’; el proceso contrario se conoce como ‘desconectar’ o separar

una base de datos, de tal manera que SQL Server deje de administrarla e imposibilite cualquier

actualización.

La ubicación de los archivos de la base de datos pueden ser cualquier carpeta local en la cual

se tengan permisos, para este ejemplo usamos la carpeta por defecto de SQL Server, llamada

DATA y localizada dentro de la carpeta de instalación de Microsoft SQL Server.

Adjuntar base de datos

En el administrador de SQL Server ejecutamos el comando:

Declare @Path varchar(1024), @ArchivoDatos varchar(1024), @ArchivoLog varchar(1024)

Select @Path = (SELECT Top 1 SUBSTRING(physical_name, 1, CHARINDEX('master.mdf',

LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE name='master')

set @ArchivoDatos=@Path + 'EjemploBD.mdf'

set @ArchivoLog=@Path + 'EjemploBD_log.ldf'

EXEC sp_attach_db 'EjemploBD', @ArchivoDatos, @ArchivoLog

Separar base de datos

En el administrador de SQL Server ejecutamos el comando:

sp_detach_db EjemploBD

Esto desconectará la base de datos EjemploBD y dejará de estar disponible para cualquier

aplicación cliente que se conecte a esta instancia del servidor.

Page 29: Bases de Datos Distribuidas con Sql Server 2012

29

www.qsoluciones.net

Respaldos

Es importante contar con una estrategia de respaldos que garantice contar con una copia de los

datos en caso de perdida por cualquier falla o imprevisto. Los respaldos de la base de datos

entera se conocen como Full o Completos, mientras que las copias de seguridad que solo

guardan los cambios realizados desde el respaldo anterior se les conoce como Diferenciales.

En la versión 2012 de SQL Server se incorpora la posibilidad de hacer un respaldo en la nube

de Microsoft conocida como Azure.

Respaldo Completo

BACKUP DATABASE EjemploBD TO DISK=’D:\ EjemploBD.bak’, NAME=’Respaldo completo de EjemploBd’

Respaldo Diferencial

BACKUP DATABASE EjemploBD TO DISK=’D:\ EjemploBD.bak’ WITH DIFFERENTIAL, NAME=’Respaldo No. 1

diferencial de EjemploBD’

Si contamos con la versión Estandar, BI o Entreprise podremos realizar respaldos comprimidos

agregando la opción COMPRESSION:

BACKUP DATABASE EjemploBD TO DISK=’D:\ EjemploBD.bak’ WITH COMPRESSION

BACKUP DATABASE EjemploBD TO DISK=’D:\ EjemploBD.bak’ WITH DIFFERENTIAL, COMPRESSION

NOTAS

. Si el nombre de archivo destino para el respaldo ya existe, no se sobrescribe o se pierde el

respaldo anterior, la sentencia BACKUP agrega los datos del nuevo respaldo al final del

archivo.

. Para realizar un respaldo diferencial es necesario que anteriormente exista un respaldo

Completo o de lo contrario se producirá un error.

. Podrá realizar un respaldo en cualquier momento, incluso si existen usuarios consultando o

realizando cambios en la base de datos.

Page 30: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

30

Restaurar base de datos

RESTORE DATABASE EjemploBD FROM DISK=’D:\ EjemploBD.bak’ WITH RECOVERY

. La opción RECOVERY indica que la base de datos quedara en operación inmediatamente

después de recuperar los datos del respaldo.

. Si el respaldo más reciente es diferencial, se deberá restaurar primero el ultimo respaldo

Completo y a continuación todos los diferenciales en el mismo orden en que se crearon.

Page 31: Bases de Datos Distribuidas con Sql Server 2012

31

www.qsoluciones.net

IV. Diseño de Bases de Datos

El diseño de una base de datos se realiza en 3 etapas, la primera es el diseño conceptual, que

consiste en plasmar las ideas sobre el proyecto de base de datos que tiene el usuario final

sobre los requerimientos o el problema a resolver. El diseño lógico es una representación que

muestra las entidades y relaciones involucradas en la solución de base de datos, mientras que

el diseño lógico especifica los requerimientos de almacenamiento, tipos de datos, y validaciones

necesarias y especificas al manejador de base de datos.

Diseño Conceptual:

El diseño conceptual consiste en dibujos, planos y diagramas simples que representan una idea

o ideas sobre la solución de bases de datos a construir. El diseño conceptual se basa

exclusivamente en los requerimientos de información de la empresa o usuario del sistema, sin

tomar en cuenta los requisitos o limitaciones del hardware. El modelo relacional permite

documentar de manera formal el diseño conceptual utilizando una notación estándar.

Cliente Compra

Código Saldo

Nombre Producto

Descripciٕón Código

Precio

Page 32: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

32

Diseño Lógico:

El diseño lógico se acerca más al manejador de base de datos relacional, ya que representa

entidades y relaciones. En este diseño se ven las relaciones y el tipo de relación entre

entidades.

En este modelo los datos se representan en tablas que a su vez se estructuran en filas

(registros) y columnas (campos), lo cual no representa como se almacenan físicamente los

datos. El modelo relacional se llama así porque hace un gran énfasis en las tablas y las

relaciones existentes entre ellas.

El diseño lógico no precisa el tipo de datos como se almacenan físicamente ni el espacio que

ocuparan en el manejador a utilizar. Aquí se determinan las entidades que existen y las

relaciones entre estas sin especificar de qué manera se almacenan.

Cliente

* IDCliente

Nombre

Saldo

Domicilio

Edad

Page 33: Bases de Datos Distribuidas con Sql Server 2012

33

www.qsoluciones.net

Diseño Físico:

En esta etapa se precisan los atributos y tipos de datos específicos del manejador de base de

datos. Aquí se traduce el diseño lógico en estructuras y relaciones que representan la manera

en que se almacén y validan los datos representados. Por ejemplo, en el diseño físico se

especifica el tipo de datos IDCliente, el rango de valores que acepta y si acepta Nulos o se

rechazan.

Cliente Tipo de dato

* IDCliente Entero largo,

incremental(1,1)

Nombre Varchar(50)

Saldo Float

Domicilio Varchar(200)

Edad tinyint

Page 34: Bases de Datos Distribuidas con Sql Server 2012

www.qsoluciones.net

34

Modelos E-R

Page 35: Bases de Datos Distribuidas con Sql Server 2012

35

www.qsoluciones.net

Normalización