Sunteți pe pagina 1din 80

BASE DE DATOS DISTRIBUIDAS

ING. GUSTAVO A. VILLARROEL LAURA


UNIDAD 01

BASE DE DATOS DISTRIBUIDAS


¿ QUE ES UNA BASE DE DATOS DISTRIBUIDAS ?

• Una Base de Datos Distribuida (BDD) es un conjunto de múltiples


bases de datos lógicamente relacionadas las cuales se encuentran
distribuidas entre diferentes sitios interconectados por una red de
comunicaciones, los cuales tienen la capacidad de procesamiento
autónomo lo cual indica que puede realizar operaciones locales o
distribuidas.
¿Por qué son necesarias las bases de datos
distribuidas?

Para administrar datos distribuidos


geográfica o administrativamente. En
general las empresas están ya
distribuidas de manera lógica por lo que
se deduce que los datos también estén
distribuidos.
Una base de datos distribuida permite
reflejar la estructura lógica de la
empresa.
BASE DE DATOS DISTRIBUIDAS

En un sistema distribuido de bases de datos


se almacenan en varias computadoras. Los
principales factores que distinguen un SBDD
de un sistema centralizado son los siguientes:

• Hay múltiples computadores, llamados sitios o


nodos.
• Estos sitios deben de estar comunicados por
medio de algún tipo de red de comunicaciones
para transmitir datos y órdenes entre los sitios.
BASE DE DATOS DISTRIBUIDAS

Centralizado Distribuido
Control centralizado: un solo DBA Control jerárquico:DBA global y DBA local

Independencia de Datos: Transparencia en la Distribución:


Organización de los datos es transparente Localización de los datos es un aspecto
para el programador adicional de independencia de datos
Reducción de redundancia: Replicación de Datos:
Una sola copia de datos que se comparta Copias múltiples de datos que incrementa
la localidad y la disponibilidad de datos
Estructuras físicas complejas para accesos No hay estructuras intersitios. Uso de
eficientes optimización global para reducir
transferencia de datos
Seguridad Problemas de seguridad intrínsecos
BASE DE DATOS CENTRALIZADA

Una base de datos centralizada es una


base de datos almacenada en su totalidad
en un solo lugar físico, es decir, es una
base de datos almacenada en una sola
maquina y en una sola CPU, en donde los
usuarios trabajan en terminales "tontas"
que solo muestran resultados.
CARACTERÍSTICAS DE LAS BASES DE DATOS
CENTRALIZADAS.

Entre las características más resaltantes de las bases de datos centralizadas se encuentran las
siguientes:

- Se almacena completamente en una localidad central, es decir, todos


los componentes del sistema residen en un solo computador o sitio.

- No posee múltiples elementos de procesamiento ni mecanismos de intercomunicación


como las bases de datos distribuidas.

- Los componentes de las bases de datos centralizadas son: los datos, el software de
gestión de bases de datos y los dispositivos de almacenamiento secundario asociados.

- El problema de seguridad es inherentemente fácil en estos sistemas de bases de datos.


BASE DE DATOS CENTRALIZADAS
Por qué las bases de datos distribuidas son
populares

Aquí están las razones básicas por las cuales muchas organizaciones están dejando el modelo
centralizado a favor de la distribución de bases de datos:

 Fiabilidad  Crecimiento
 Seguridad  Velocidad y eficiencia de los recursos
 Rentable  Responsabilidad y contención
 Acceso local
AMBIENTES DE BASES DE DATOS
DISTRIBUIDAS

Homogéneas: Todos los sitios tienen el mismo SGBD, son


conscientes de la existencia de los demás sitios y cooperan en
el procesamiento de las solicitudes. Los sitios locales
mantienen un mismo esquema y SGBD.

Heterogéneas: Cada sitio puede tener un SGBD distinto así


como esquemas diferentes. Puede que algunos sitios no
conozcan a otros. Puede que solo ofrezcan facilidades limitadas
para la cooperación en el procesamiento de transacciones.
Sistema de Gestión de Base de Datos Distribuida
Distribución de los datos

Una de las decisiones más importantes que el diseñador de bases de datos distribuidas debe tomar es
el posicionamiento de la data en el sistema y el esquema bajo el cual lo desea hacer. Para esto existen
cuatro alternativas principales: centralizada, replicada, fragmentada, e híbrida.

CENTRALIZADA

Es muy similar al modelo de Cliente/Servidor en el sentido que la BDD está centralizada en un lugar
y los usuarios están distribuidos. Este modelo solo brinda la ventaja de tener el procesamiento
distribuido ya que en sentido de disponibilidad y fiabilidad de los datos no se gana nada.
Distribución de los datos

REPLICADAS
El esquema de BDD de replicación consiste en que
cada nodo debe tener su copia completa de la base de
datos. Es fácil ver que este esquema tiene un alto costo
en el almacenamiento de la información. Debido a que
la actualización de los datos debe ser realizada en
todas las copias, también tiene un alto costo de
escritura, pero todo esto vale la pena si tenemos un
sistema en el que se va a escribir pocas veces y leer
muchas, y dónde la disponibilidad y fiabilidad de los
datos sea de máxima importancia.
Distribución de los datos
PARTICIONADAS O FRAGMENTADAS
Este modelo consiste en que solo hay una copia de cada elemento, pero la información está distribuida
a través de los nodos. En cada nodo se aloja uno o más fragmentos disjuntos de la base de datos.
Como los fragmentos no se replican esto disminuye el costo de almacenamiento, pero también
sacrifica la disponibilidad y fiabilidad de los datos. Algo que se debe tomar en cuenta cuando se desea
implementar este modelo es la granularidad de la fragmentación. La fragmentación se puede realizar
también de tres formas:

 Horizontal: Los fragmentos son subconjuntos de una tabla


(análogo a un restringir)
 Vertical: Los fragmentos son subconjuntos de los atributos
con sus valores (análogo a un proyectar)
 Mixto: Se almacenan fragmentos producto de restringir y
proyectar una tabla.
Distribución de los datos

Híbrida
Este esquema simplemente representa la combinación del esquema de partición y replicación. Se
particiona la relación y a la vez los fragmentos están selectivamente replicados a través del sistema
de BDD.
UNIDAD 02

BASE DE DATOS TRANSACCIONALES


Bases de datos OLTP y OLAP

OLTP - ON-LINE TRANSACTIONAL PROCESSING


Los sistemas OLTP son bases de datos orientadas al procesamiento de
transacciones. Una transacción genera un proceso atómico (que debe ser validado
con un commit, o invalidado con un rollback), y que puede involucrar operaciones
de inserción, modificación y borrado de datos. El proceso transaccional es típico de
las bases de datos operacionales.
Bases de datos OLTP y OLAP

OLAP - ON-LINE ANALYTICAL PROCESSING


Los sistemas OLAP son bases de datos
orientadas al procesamiento analítico. Este
análisis suele implicar, generalmente, la
lectura de grandes cantidades de datos para
llegar a extraer algún tipo de información útil:
tendencias de ventas, patrones de
comportamiento de los consumidores,
elaboración de informes complejos… etc. Este
sistema es típico de los datamarts.
¿CUAL ES LA DIFERENCIA ENTRE UNA BASE
DE DATOS OLTP Y OLAP?
¿CUAL ES LA DIFERENCIA ENTRE UNA BASE
DE DATOS OLTP Y OLAP?
Base de datos para las
empresas
Base de datos para las empresas

El Transact-SQL permite:

 Definir bloques de instrucciones SQL que se tratan como


unidades de ejecución.
 Realizar ejecuciones condicionales.
 Realizar ejecuciones iterativas o repetitivas.
 Garantizar el tratamiento modular con la declaración de
variables locales y el uso de procedimientos almacenados.
FUNDAMENTOS DE PROGRAMACION TRANSACT-SQL

SQL es un lenguaje de consulta para los sistemas de bases de datos


relaciónales, pero que no posee la potencia de los lenguajes de
programación. No permite el uso de variables, estructuras de
control de flujo, bucles y demás elementos característicos de la
programación. No es de extrañar, SQL es un lenguaje de consulta,
no un lenguaje de programación.
Rol fijo de
Descripción
servidor
sysadmin Pueden realizar cualquier actividad en el servidor.
serveradmin Pueden cambiar las opciones de configuración de todo el servidor y apagar el

ROLES DE SERVIDOR securityadmin


servidor.
Gestionan los inicios de sesión y sus propiedades. Pueden conceder, negar y
rechazar los permisos a nivel de servidor. También pueden conceder permisos de
GRANT, DENY y REVOKE a nivel de base de datos si tienen acceso a una base de
datos. Además, pueden restablecer contraseñas para los inicios de sesión de SQL
Server.

Nota de seguridad: La posibilidad de conceder acceso al motor de base de datos y


configurar permisos de usuario permite al administrador de seguridad asignar la
mayor parte de permisos de servidor. El rol securityadmin debe ser tratado como
equivalente al rol sysadmin.
processadmin Pueden finalizar los procesos que se ejecutan en una instancia de SQL Server.
setupadmin Puede agregar y quitar servidores vinculados mediante instrucciones SQL. (La
pertenencia a sysadmin es necesaria cuando se utiliza Management Studio.)
bulkadmin Pueden ejecutar la instrucción BULK INSERT.
diskadmin Se utiliza para administrar archivos de disco.
dbcreator Pueden crear, alterar, eliminar y restaurar cualquier base de datos.
public Cada inicio de sesión de SQL Server pertenece al rol de servidor public. Cuando un
servidor principal no ha concedido o denegado permisos específicos en un objeto, el
usuario hereda los permisos concedidos al rol public en ese objeto. Sólo se deben
asignar permisos públicos a cualquier objeto cuando se desee que el objeto esté
disponible para todos los usuarios. No se puede cambiar la membresía de public.
BASE DE TOS DE SISTEMA DE SQL SERVER

La base de datos Master registra toda la información de nivel de sistema para el servidor SQL
Server. Esto incluye las cuentas de inicio de sesión, parámetros de configuración del servidor,
la existencia de otras bases de datos, etc. La base de datos Master es absolutamente crítica
MASTER
para los datos, por le que debería mantener siempre una copia de seguridad de la misma. La
mayor parte de los procedimientos almacenados del sistema también se guardan en esta base
de datos, junto a los mensajes de error.
Su uso principal es el almacenamiento de la información que emplea el agente SQL Server,
como programación de trabajos, definición de operadores y alertas. La información de la copia
MSBD
de seguridad también se almacena en esta base de datos, y se emplea en la restauración de
la base de datos.
Es una base de datos plantilla, que se emplea cada vez que se crea una nueva base de datos.
Los contenidos de la base Model se copian a la nueva base. Si se desea que determinados
MODEL
objetos, permisos, usuarios se creen automáticamente cada vez que se crea una base de
datos, pueden incluirse en esta base.
Algunas veces SQL Server necesita crear tablas temporales internas (o tablas de trabajo) para
determinadas operaciones. Entre dichas operaciones se incluye la ordenación, las
operaciones multitabla, el tratamento de cursores, etc. Estas tablas temporales se borran tan
TEMPDB pronto como el conjunto de resultados se devuelve a la aplicación cliente, o cuando se cierra
el cursor. Almacena todas las tablas y procedimientos almacenados temporales. Esta base de
crea de nuevo cada vez que se inicia SQL Server, por lo que no tiene sentido crear copias de
seguridad de esta.
Transact SQL
CREATE DATABASE TALLER
PERMITE CREAR CON DDL:
CREATE USER ALUMNO

• CREATE (CREAR)
• ALTER (MODIFICAR)
CREATE PROCEDURE LISTAR
• DROP (ELIMINAR)
CREATE TRIGGER ACTUALIZAR
Transact SQL BASE DE
DATOS

Crea una Tabla Alumno con los


campos ID Y NOMBRE
CREATE TABLE ALUMNO(
ID INT PRIMARY KEY IDENTITY,
NOMBRE VARCHAR(50)
) Modifica la Tabla agregando un
campo Apellido de tipo
Varchar(50)

ALTER TABLE ALUMNO


ADD APELLIDO VARCHAR(50)

Crea una Tabla Alumno con los


campos ID Y NOMBRE DROP TABLE ALUMNO
Transact SQL
AGREGANDO UN CAMPO ADICIONAL A LA TABLA
ALTER TABLE CLIENTE
ADD CELULAR CHAR(9) NULL
MODIFICAR UN CAMPO CREADO
ALTER TABLE CLIENTE
ALTER COLUMN CELULAR VARCHAR(10)
ELIMINAR CAMPOS DE LA TABLA
ALTER TABLE CLIENTE
DROP COLUMN DNI
Transact SQL
Lenguaje de manipulación de datos (DML)

Las sentencias de lenguaje de manipulación de datos (DML) son utilizadas para


gestionar datos dentro de los schemas. Algunos ejemplos:

•SELECT - para obtener datos de una base de datos.


•INSERT - para insertar datos a una tabla.
•UPDATE - para modificar datos existentes dentro de una tabla.
•DELETE - elimina todos los registros de la tabla; no borra los espacios asignados a
los registros.
Lenguaje de definición de datos data
definition language (DDL)

CREATE Query para Crear Base de Datos. En este caso esta creando la Base de
datos Universidad
USE master

IF EXISTS(SELECT NAME FROM SYS.DATABASES WHERE NAME =


‘Universidad')
BEGIN
DROP DATABASE Universidad
END
GO

CREATE DATABASE Universidad


GO
Query para crear una tabla que pertenece a la base de
CREATE
datos Universidad. La Tabla se llama Users
USE pruebas
Go

CREATE TABLE Users(


Id INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
Name VARCHAR(50) NOT NULL, Query para crear un procedimiento
Pass VARCHAR(32) NOT NULL, Almacenado.
Available BIT DEFAULT 1 NOT NULL CREATE PROCEDURE addUser(
) @pName VARCHAR(50),
GO @pPass VARCHAR(32)
)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Users
CREATE (Name, Pass, Available)
VALUES (@pName, @pPass, DEFAULT);
END
DML
SIDU
SELECT - INSERT - DELETE - UPDATE
LISTAR O BUSQUEDA
SELECT * FROM CLIENTE
WHERE CODIGO=1
INSERT -- INSERTAR REGISTROS DE UNA TABLA
INSERT INTO
CLIENTE(NOMBRE,APELLIDO,DIRECCION,CELULAR)
VALUES('JUAN','PEREZ','LOS OLIVOS
145','45781233')
DELETE -- ELIMINAR REGISTROS
DELETE FROM CLIENTE WHERE CODIGO=2
UPDATE --MODIFICAR
UPDATE CLIENTE SET NOMBRE='JOSE',DIRECCION='LOS
CLAVELES 124'
WHERE CODIGO=1
DML
LAS LAS 10 PRIMEROS REGISTROS DE LA FICHA INDIVIDUAL
SELECT TOP 100 Nro_Ficha,Supervisor,Tecnico
FROM Ficha_Catastral_Urbana_Individual

REALIZAR UNA CONSULTA QUE ME MUESTRE LA CANTIDAD DE REGISTROS DE


LA TABLA
SELECT COUNT(*) AS NUMERO_REGISTROS
FROM Ficha_Catastral_Urbana_Individual

LISTAR LAS FICHAS DE NUMERO 000299 Y 000130


SELECT * FROM Ficha_Catastral_Urbana_Individual
WHERE Nro_Ficha in('000299','000130')
DML
INNER JOIN

SELECT P.ID,P.NOMBRE AS PRODUCTO,M.DESCRIPCION


AS MARCA
FROM PRODUCTO P
INNER JOIN MARCA M
ON P.IDMARCA=M.IDMARCA
PROCEDIMIENTO ALMACENADO
Un procedimiento almacenado de SQL es un procedimiento almacenado en el que el
código fuente forma parte de la sentencia CREATE PROCEDURE. La parte de la sentencia
CREATE PROCEDURE que contiene el código se denomina cuerpo del procedimiento
almacenado.

•Las definiciones de procedimientos almacenados de SQL proporcionan la siguiente


información:El nombre del procedimiento almacenado
•Atributos de parámetros
•El lenguaje en que se ha escrito el procedimiento almacenado. Para un procedimiento
almacenado de SQL, el lenguaje es SQL
•Información acerca del procedimiento almacenado de SQL que se utiliza cuando se llama al
procedimiento almacenado. Esta información puede incluir opciones en tiempo de ejecución y
si el procedimiento almacenado devuelve conjuntos de resultados
PROCEDIMIENTO ALMACENADO

CREATE PROCEDURE LISTAR


AS EXECUTE LISTAR
SELECT NOMBRE,APELLIDO FROM CLIENTE

Procedimiento Almacenado que


me lista todos los registros de la
CREATE PROCEDURE INSERTAR
tabla Cliente
@NOMBRE VARCHAR(80),
@APELLIDO VARCHAR(100),
@DIRECCION VARCHAR(150), EXECUTE INSERTAR 'karen','sanchez','ilo','124578’
@CELULAR VARCHAR(10) EXECUTE INSERTAR 'sofia','sanchez','tacna','124578'
AS
INSERT INTO CLIENTE( NOMBRE,
APELLIDO,
DIRECCION,
CELULAR ) Procedimiento Almacenado que
VALUES(@NOMBRE,@APELLIDO, me Inserta los registros de la
@DIRECCION,@CELULAR) Tabla Cliente
CREATE PROCEDURE MODIFICAR
@NOMBRE VARCHAR(80),
@APELLIDO VARCHAR(100),
@DIRECCION VARCHAR(150), EXECUTE LISTAR
@CELULAR VARCHAR(10), EXECUTE MODIFICAR
@CODIGO INT 'PEDRO','VILLALBA','PROCERES','457812',1
AS
UPDATE CLIENTE SET NOMBRE=@NOMBRE, Procedimiento Almacenado que
APELLIDO=@APELLIDO, me permite modificar el registro
DIRECCION=@DIRECCION, de cliente
CELULAR=@CELULAR
WHERE CODIGO=@CODIGO
EXECUTE LISTAR
EXECUTE ELIMINAR 1
CREATE PROCEDURE ELIMINAR
@CODIGO INT
AS
Procedimiento Almacenado que
DELETE FROM CLIENTE
me permite eliminar el registro
WHERE CODIGO=@CODIGO
de Cliente
CONSTRUCCION DE PROGRAMACION TRANSACT-SQL

TRANSACT-SQL amplía el SQL estándar con la implementación de


estructuras de programación. Estas implementaciones le resultarán
familiares a los desarrolladores con experiencia en C++, Java, Visual
Basic .NET, C# y lenguajes similares. A continuación, vamos a definir
las estructuras de programación implementadas en SQL Server.
CONSTRUCCION DE PROGRAMACION TRANSACT-SQL

VARIABLES
Una variable es una entidad a la que se asigna un valor. Este valor
puede cambiar durante el proceso donde se utiliza la variable. SQL
Server tiene dos tipos de variables: locales y globales. Las variables
locales están definidas por el usuario, mientras que las variables
globales las suministra el sistema y están predefinidas.
CONSTRUCCION DE PROGRAMACION TRANSACT-SQL

Variables Locales
Las variables locales se declaran, nombran y escriben mediante la
palabra clave
declare, y reciben un valor inicial mediante una instrucción select o
set.
Los nombres de las variables locales deben empezar con el símbolo
“@”. A cada variable local se le debe asignar un tipo de dato definido
por el usuario o un tipo de dato suministrado por el sistema distinto
de text, image o sysname.
CONSTRUCCION DE PROGRAMACION TRANSACT-SQL

Variable Contenido
• Variables Públicas @@ERROR Contiene 0 si la última transacción se ejecutó
de forma
Las variables globales son
variables predefinidas correcta; en caso contrario, contiene el último
número de error generado por el sistema. La
suministradas por el variable global @@error se utiliza generalmente
sistema. Se distinguen de para verificar el estado de error de un proceso
las variables locales por ejecutado.

tener dos símbolos “@”. @@IDENTITY Contiene el último valor insertado en una
columna
Estas son algunas variables
IDENTITY mediante una instrucción insert
globales del servidor: @@VERSION Devuelve la Versión del SQL Server
@@SERVERNAME Devuelve el Nombre del Servidor
@@LANGUAGE Devuelve el nombre del idioma en uso
@@MAX_CONNECTIONS Retorna la cantidad máxima de conexiones
permitidas
HERRAMIENTAS PARA EL CONTROL DE FLUJOS
Palabra Clave Función
El lenguaje de control IF … ELSE Define una ejecución condicional, cuando la condición la

de flujo se puede CASE


condición es verdadera y la alternativa (else) cuando la condición es falsa
Es la forma más sencilla de realizar operaciones de tipo IF-
utilizar con
ELSE IF-ELSE IF-ELSE. La estructura CASE permite evaluar una expresión y devolver un valor
instrucciones alternativo
interactivas, en lotes WHILE Estructura repetitiva que ejecuta un bloque de instrucciones
y en procedimientos mientras la condición es verdadera
almacenados. El BEGIN … END Define un bloque de instrucciones. El uso del BEGIN…END
permite ejecutar un bloque o conjunto de instrucciones.
control de flujo y las DECLARE Declara variables locales
palabras clave BREAK Sale del final del siguiente bucle while más interno
…CONTINUE Reinicia del bucle while
relacionadas y sus RETURN [n] Sale de forma incondicional, suele utilizarse en
funciones son las procedimientos almacenados o desencadenantes. Opcionalmente, se puede definir un numero
siguientes: entero como estado devuelto, que puede asignarse al ejecutar el procedimiento almacenado
PRINT Imprime un mensaje definido por el usuario o una variable
local en la pantalla del usuario
/*COMENTARIO*/ Inserta un comentario en cualquier punto de una instrucción
SQL
--COMENTARIO Inserta una línea de comentario en cualquier punto de una
instrucción SQL
HERRAMIENTAS PARA EL CONTROL DE FLUJOS

Estructuras de control IF
La palabra clave IF se utiliza para definir una
condición que determina si se ejecutará la instrucción
siguiente. La instrucción SQL se ejecuta si la
condición se cumple, es decir, si devuelve TRUE
(verdadero). La palabra clave ELSE introduce una
instrucción SQL alternativa que se ejecuta cuando la
condición IF devuelva FALSE.
HERRAMIENTAS PARA EL CONTROL DE FLUJOS

Estructura condicional CASE


La estructura CASE evalúa una lista de condiciones y devuelve una de las varias expresiones de resultado
posibles. La expresión CASE tiene dos formatos:
• La expresión CASE sencilla compara una expresión con un conjunto de expresiones sencillas para
determinar el resultado.
• La expresión CASE buscada evalúa un conjunto de expresiones booleanas para determinar el resultado.
HERRAMIENTAS PARA EL CONTROL DE FLUJOS

Usar una instrucción SELECT


con una expresión CASE de
búsqueda
En una instrucción SELECT, la
expresión CASE de búsqueda
permite sustituir valores en el
conjunto de resultados
basándose en los valores de
comparación.
HERRAMIENTAS PARA EL CONTROL DE FLUJOS

Estructura de control WHILE


La estructura WHILE ejecuta en forma
repetitiva un conjunto o bloque de
instrucciones SQL siempre que la
condición especificada sea verdadera.
Se puede controlar la ejecución de
instrucciones en el bucle WHILE con las
palabras clave BREAK y CONTINUE.
CONTROL DE ERRORES EN TRANSACT-SQL

SQL Server proporciona el control de


errores a través de las instrucciones TRY y
CATCH. Estas nuevas instrucciones
suponen un gran paso adelante en el
control de errores en SQL Server. La
sintaxis de TRY CATCH es la siguiente:
CONTROL DE ERRORES EN TRANSACT-SQL

Funciones especiales de Error


Las funciones especiales de error, están disponibles únicamente en el bloque CATCH para la
obtención de información detallada del error. A continuación,
presentamos las funciones que se utilizan en el control de errores
CONTROL DE ERRORES EN TRANSACT-SQL

• Variable de sistema @@ERROR


• Devuelve el número de error de la última instrucción TRANSACT-SQL
ejecutada; si la variable devuelve 0, la TRANSACT-SQL anterior no encontró
errores.
CONTROL DE ERRORES EN TRANSACT-SQL

Generar un error RAISERROR


En ocasiones, es necesario provocar voluntariamente un error, por ejemplo nos
puede interesar que se genere un error cuando los datos incumplen una regla
de negocio. Podemos provocar un error en tiempo de ejecución a través de la
función RAISERROR.
La función RAISERROR recibe tres parámetros, el mensaje del error (o código
de error predefinido), la severidad y el estado.
La severidad indica el grado de criticidad del error. Admite valores de 0 al 25,
pero solo podemos asignar valores del 0 al 18. Los errores el 20 al 25 son
considerados fatales por el sistema, y cerraran la conexión que ejecuta el
comando RAISERROR. Para asignar valores del 19 al 25, necesitaremos ser
miembros de la función de SQL Server sysadmin.
CURSORES EN TRANSACT-SQL

Un cursor es una variable que nos permite recorres con un conjunto de


resultados obtenidos a través de una sentencia SELECT fila por fila.
El uso de los cursores es una técnica que permite tratar fila por fila el
resultado de una consulta, contrariamente al SELECT SQL que trata a un
conjunto de fila. Los cursores pueden ser implementador por instrucciones
TRANSACT-SQL (cursores ANSI-SQL) o por la API OLE-DB.
CURSORES EN TRANSACT-SQL

• Declare CURSOR
• Esta instrucción permite la declaración y la descripción del cursor ANSI.
Sintaxis:
CURSORES EN TRANSACT-SQL

Abrir un Cursor
Esta instrucción permite hacer operativo el cursor y crear eventualmente las tablas temporales
asociadas. La variable @@CURSOR_ROWS se asigna después de OPEN.
Leer un Registro: FETCH
Es la instrucción que permite extraer una fila del cursor y asignar valores a variables con su
contenido. Tras FETCH, la variable @@FETCH_STATUS está a 0 si FETCH no retorna errores.
Cerrar el cursor
Cierra el cursor y libera la memoria. Esta operación debe interponerse lo antes posible con el
fin de liberar los recursos cuanto antes.
Liberar los recursos
Es un comando de limpieza, no forma parte de la especificación ANSI. DEALLOCATE
PROGRAMACIÓN AVANZADA TRANSACT SQL
PROGRAMACIÓN AVANZADA TRANSACT SQL

Funciones definidas por el usuario


Las funciones son rutinas que permiten encapsular sentencias TRANSACT-SQL que se ejecutan
frecuentemente.
Las funciones definidas por el usuario, en tiempo de ejecución de lenguaje TRANSACT-SQL o
común (CLR), acepta parámetros, realiza una acción, como un cálculo complejo, y devuelve el
resultado de esa acción como un valor. El valor de retorno puede ser un escalar (único) valor o
una tabla.
Las funciones de usuario, según el tipo de retorno se clasifican en las siguientes:
1. Funciones Escalares
2. Funciones con valores de tabla de varias instrucciones
3. Funciones con valores de tabla en línea
PROGRAMACIÓN AVANZADA TRANSACT SQL
Funciones escalares
Son aquellas funciones donde retornan un valor único: tipo de datos como int,
Money, varchar, real, etc. Pueden ser utilizadas en cualquier lugar, incluso,
incorporada dentro de las sentencias SQL.
PROGRAMACIÓN AVANZADA TRANSACT SQL

Funciones de tabla en línea


Las funciones de tabla en línea son las funciones que devuelven la salida de una
simple declaración SELECT. La salida se puede utilizar adentro de JOINS o
querys como si fuera una tabla de estándar.
PROGRAMACIÓN AVANZADA TRANSACT SQL

Funciones de tabla de multisentencias


Son similares a los procedimientos almacenados excepto que vuelven una tabla. Este
tipo de función se usa en situaciones donde se requiere más lógica y proceso. Lo que
sigue es la sintaxis para unas funciones de tabla de multisentencias:
PROGRAMACIÓN AVANZADA TRANSACT SQL

Procedimientos Almacenados
Los procedimientos almacenados son grupos formados por instrucciones SQL y el lenguaje de control de
flujo. Cuando se ejecuta un procedimiento, se prepara un plan de ejecución para que la subsiguiente
ejecución sea muy rápida. Los procedimientos almacenados pueden:

• Incluir parámetros
• Llamar a otros procedimientos
• Devolver un valor de estado a un
procedimiento de llamada o lote para indicar
el éxito o el fracaso del mismo y la razón de
dicho fallo.
• Devolver valores de parámetros a un
procedimiento de llamada o lote
• Ejecutarse en SQL Server remotos
PROGRAMACIÓN AVANZADA TRANSACT SQL

• Especificar parámetros
• Un procedimiento almacenado se comunica con el programa que lo llama
mediante sus parámetros. Cuando un programa ejecuta un procedimiento
almacenado, es posible pasarle valores mediante los parámetros del
procedimiento.
• Estos valores se pueden utilizar como variables estándar en el lenguaje de
programación TRANSACT-SQL. El procedimiento almacenado también puede
devolver valores al programa que lo llama mediante parámetros OUTPUT. Un
procedimiento almacenado puede tener hasta 2.100 parámetros, cada uno de
ellos con un nombre, un tipo de datos, una dirección y un valor
predeterminado
PROGRAMACIÓN AVANZADA TRANSACT SQL

• Especificar el nombre del parámetro


• Cada parámetro de un procedimiento almacenado, debe definirse con un
nombre único. Los nombres de los procedimientos almacenados deben
empezar por un solo carácter @, como una variable estándar de TRANSACT-
SQL, y deben seguir las reglas definidas para los identificadores de objetos. El
nombre del parámetro se puede utilizar en el procedimiento almacenado
para obtener y cambiar el valor del parámetro.
PROGRAMACIÓN AVANZADA TRANSACT SQL
• Especificar la dirección del parámetro
• La dirección de un parámetro puede ser de entrada, que indica que un valor
se pasa al parámetro de entrada de un procedimiento almacenado o de
salida, que indica que el procedimiento almacenado devuelve un valor al
programa que lo llama mediante un parámetro de salida. El valor
predeterminado es un parámetro de entrada.
• Para especificar un parámetro de salida, debe indicar la palabra clave
OUTPUT en la definición del parámetro del procedimiento almacenado. El
programa que realiza la llamada también debe utilizar la palabra clave
OUTPUT al ejecutar el procedimiento almacenado, a fin de guardar el valor
del parámetro en una variable que se pueda utilizar en el programa que
llama.
PROGRAMACIÓN AVANZADA TRANSACT SQL

• Modificar datos con procedimientos almacenados


• Los procedimientos almacenados pueden aceptar datos como parámetros de
entrada y pueden devolver datos como parámetros de salida, conjuntos de
resultados o valores de retorno. Adicionalmente, los procedimientos
almacenados pueden ejecutar sentencias de actualización de datos: INSERT,
UPDATE, DELETE
PROGRAMACIÓN AVANZADA TRANSACT SQL

• TRANSACCIONES EN TRANSACT-SQL
• Una transacción es un conjunto de operaciones TRANSACT SQL que se
ejecutan como un único bloque, es decir, si falla una operación TRANSACT
SQL fallan todas. Si una transacción tiene éxito, todas las modificaciones de
los datos realizadas durante la transacción se confirman y se convierten en
una parte permanente de la base de datos. Si una transacción encuentra
errores y debe cancelarse o revertirse, se borran todas las modificaciones de
los datos.
• El ejemplo clásico de transacción es un registro de pedidos, donde agregamos
un registro a la tabla pedidoscabe y agregamos un registro a la tabla
pedidosdeta (producto solicitado por el cliente) y descontamos el stock del
producto solicitado en el pedido.
PROGRAMACIÓN AVANZADA TRANSACT SQL

Transacciones implícitas y explicitas


Para agrupar varias sentencias TRANSACT SQL en una única transacción,
disponemos de los siguientes métodos:
• Transacciones explícitas: Cada transacción se inicia explícitamente con la
instrucción BEGIN TRANSACTION y se termina explícitamente con una
instrucción COMMIT o ROLLBACK.
• Transacciones implícitas: Se inicia automáticamente una nueva transacción
cuando se ejecuta una instrucción que realiza modificaciones en los datos, pero
cada transacción se completa explícitamente con una instrucción COMMIT o
ROLLBACK.
TRIGGERS O DISPARADORES

Los disparadores pueden usarse para imponer la integridad de referencia de los


datos en toda la base de datos. Los disparadores también permiten realizar
cambios “en cascada” en tablas relacionadas, imponer restricciones de
columna más complejas que las permitidas por las reglas, compara los
resultados de las modificaciones de datos y llevar a cabo una acción resultante.
TRIGGERS O DISPARADORES

Definición del disparador


Un disparador es un tipo especial de procedimiento almacenado que se ejecuta
cuando se insertan, eliminan o actualizan datos de una tabla especificada.
Los disparadores pueden ayuda a mantener la integridad de referencia de los
datos conservando la consistencia entre los datos relacionados lógicamente de
distintas tablas. Integridad de referencia significa que los valores de las llaves
primarias y los valores correspondientes de las llaves foráneas deben coincidir
de forma exacta.
La principal ventaja de los disparadores es que son automáticos: funcionan
cualquiera sea el origen de la modificación de los datos. Cada disparador es
específico de una o más operaciones de modificación de datos, UPDATE,
INSERT o DELETE. El disparador se ejecuta una vez por cada instrucción.
TRIGGERS O DISPARADORES

Creación de disparadores
Un disparador es un objeto de la base de datos. Cuando se crea un disparador,
se especifica la tabla y los comandos de modificación de datos que deben
“disparar” o activar el disparador. Luego, se indica la acción o acciones que
debe llevar a cabo un disparador.
TRIGGERS O DISPARADORES

Funcionamiento de los Disparadores


Disparador de Inserción
Cuando se inserta una nueva fila en una tabla, SQL Server inserta los nuevos
valores en la tabla INSERTED el cual es una tabla del sistema. Está tabla toma
la misma estructura del cual se originó el TRIGGER, de tal manera que se
pueda verificar los datos y ante un error podría revertirse los cambios.
TRIGGERS O DISPARADORES

Disparador de Eliminación
Cuando se elimina una fila de una tabla, SQL Server inserta los valores que
fueron eliminados en la tabla DELETED el cual es una tabla del sistema. Está
tabla toma la misma estructura del cual se origino el TRIGGER, de tal manera
que se pueda verificar los datos y ante un error podría revertirse los cambios.
En este caso, la reversión de los cambios significará restaurar los datos
eliminados.
TRIGGERS O DISPARADORES

Disparador de Actualización
Cuando se actualiza una fila de una tabla, SQL Server inserta los valores que
antiguos en la tabla DELETED y los nuevos valores los inserta en la tabla
INSERTED. Usando estas dos tablas se podrá verificar los datos y ante un error
podrían revertirse los cambios.
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER

• El propósito de crear copias de seguridad de SQL Server es para que usted


pueda recuperar una base de datos dañada. Sin embargo, copias de seguridad
y restauración de los datos debe ser personalizado para un ambiente
particular y debe trabajar con los recursos disponibles. Por lo tanto, un uso
fiable de copia de seguridad y restauración para la recuperación exige una
copia de seguridad y restauración de la estrategia.
• Una copia de seguridad bien diseñado y restaurar la estrategia maximiza la
disponibilidad de datos y minimiza la pérdida de datos, teniendo en cuenta
sus necesidades de negocio en particular.
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER
Diseño de la estrategia de copia de seguridad
Seleccionado un modelo de recuperación que se ajuste a sus requisitos de
negocio para una base de datos específica, usted tiene que planificar e
implementar una estrategia de copia de seguridad correspondiente.
La estrategia de copia de seguridad óptima depende de una variedad de
factores, de los cuales los siguientes son especialmente importantes:
• ¿Cuántas horas al día no tiene aplicaciones para acceder a la base de datos?
Si hay una predecible temporada baja período, le recomendamos que programe
copias de seguridad completas de bases de datos para ese período.
• ¿Con qué frecuencia se producen cambios y actualizaciones probables que
ocurra?
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER
Si los cambios son frecuentes, considere lo siguiente:
• Bajo el modelo de recuperación simple, considere la programación de copias de seguridad
diferenciales entre copias de seguridad de base de datos completa.
• Bajo el modelo de recuperación completa, debe programar copias de seguridad frecuentes de
registro. Programación de copias de seguridad diferenciales entre copias de seguridad
completas puede reducir el tiempo de restauración mediante la reducción del número de copias
de seguridad de registros que se deben restaurar después de restaurar los datos.
• Son los cambios probables de ocurrir en tan sólo una pequeña parte de la base de datos o en
una gran parte de la base de datos?
Para una gran base de datos en la que los cambios se concentran en una parte de los archivos o
grupos de archivos, copias de seguridad parciales o copias de seguridad de archivos y puede ser
útil.
• ¿Cuánto espacio en disco una copia de seguridad completa requiere?
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER
Copia de seguridad en SQL SERVER
El alcance de una copia de seguridad de los datos puede ser una base de datos completa, una
base de datos parciales, o un conjunto de archivos o grupos de archivos. Para cada uno de
estos, SQL Server admite copias de seguridad completas y diferenciales:
Copia de seguridad completa
Contiene todos los datos en una base de datos específica o un conjunto de grupos de archivos o
archivos, y también suficiente registro para permitir la recuperación de los datos.
Copia de seguridad diferencial
Se basa en la última copia de seguridad completa de los datos. Esto se conoce como copia
diferencial. Una copia diferencial es una copia de seguridad completa de lectura
/ escritura de datos. Una copia de seguridad diferencial incluye sólo los datos que ha cambiado
desde la base diferencial.
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER

Copia de seguridad del registro de transacciones


Bajo el modelo de recuperación optimizado para cargas masivas de registros de
modelo de recuperación, copias de seguridad del registro de transacciones (o
copias de seguridad de registro) son obligatorias. Cada copia de seguridad de
registro cubre la parte del registro de transacciones que estaba activa cuando
la copia de seguridad fue creada, e incluye todos los registros que no fueron
respaldados en una copia de seguridad de registros anterior.
INTRODUCCION A LAS ESTRATEGIAS DE SEGURIDAD Y
RESTAURACION EN SQL SERVER
BACKUP (TRANSACT-SQL)
Comando TRANSACT-SQL que realiza copias de seguridad de una base de datos
completa, o uno o más archivos o grupos de archivos (BASE DE DATOS DE
SEGURIDAD). Además, bajo el modelo de recuperación optimizado para cargas
masivas de registros de modelo de recuperación, copias de seguridad del
registro de transacciones (BACKUP LOG).
Restaurando una copia de seguridad

Un escenario de restauración es un proceso que restaura los datos de una o más


copias de seguridad y se recupera la base de datos cuando la última copia de
seguridad se restaura.
Restaurando una copia de seguridad
Restore Transact-SQL
Restaura copias de seguridad realizadas con el comando RESTORE. Este comando le permite
realizar los siguientes escenarios de restauración:

• Restaurar una base de datos completa a partir de una copia de seguridad completa de la base de
datos (restauración completa).
• Restaurar parte de una base de datos (restauración parcial).
• Restaurar archivos o grupos de archivos en una base de datos.
• Restaurar páginas específicas en una base de datos (restauración de páginas).
• Restaurar un registro de transacciones en una base de datos (restauración del registro de
transacciones).
• Revertir una base de datos al punto temporal capturado por una instantánea de la base de datos.

S-ar putea să vă placă și