Vous êtes sur la page 1sur 3

Base de datos I. Guía 13. Copias de seguridad y agentes SQL.

Ciclo 01/2018
Nombre: Diego Eduardo Cruz Joya. Carnet: CJ141735. ACTIVIDAD #13

Analisis de resultados:
1. Investigar y crear un ejemplo de los siguientes tipos de backups: Differential
Backup y Transaction Log Backup con Transact SQL.
Vamos a dar una introducción al proceso de copias de seguridad y a su
restauración. También vamos a mostrar una estrategia muy útil para evitar
perdida de datos.
Antes de proceder a explicar el proceso, vamos a explicar los diferentes
“Recovery Model”
– Simple: este modo es adecuado para bases de datos pequeñas con pocas
transacciones. Hace que el log de transacciones sea pequeño. Es muy útil para
bases de datos de solo lectura. En este modo el backup de log no se realiza. No
se permite la restauración point-in-time
– Full: Este es el modo de recuperación por defecto. En este modo el log de
transacciones crece rápidamente debido a que todas las transacciones son
registradas con detalle. Es adecuado cuando la pérdida de datos no es tolerable.
Dependiendo del tipo de fallo, y si el log de transacciones está disponible,
podemos restaurar la base de datos a la última transacción cometida. Permite la
recuperación point-in-time.
– Bulk-logged: este modo es adecuado para minimizar el log de transacciones
durante las operaciones BULK (importaciones masivas). No se permite la
restauración point-in-time.
Para establecer el RECOVERY MODEL, hay que ejecutar la sentencia ALTER
DATABASE … SET RECOVERY
ALTER DATABASE [NOMBRE_BASE_DATOS] SET RECOVERY SIMPLE

ALTER DATABASE [NOMBRE_BASE_DATOS] SET RECOVERY FULL

ALTER DATABASE [NOMBRE_BASE_DATOS] SET RECOVERY BULK_LOGGED

Para determinar el RECOVERY MODEL de la base de datos actual podemos lanzar


la siguiente consulta T-SQL
SELECT name, recovery_model_desc
FROM sys.databases
WHERE name = DB_NAME(DB_ID());

Algunos de los tipos de backups que se pueden realizar son:

– Differential backup: esta es una copia acumulativa, la cual incluye todos los
datos y estructuras cambiadas desde el último full backup, sin importar cuando se
realizó el último full backup o cuantos backups diferenciales se ha realizado. Guarda
las transacciones que ocurren durante el backup diferencial. Este backup se puede
realizar en cualquiera de los recovery model. En la siguiente consulta T-SQL se
puede ver un ejemplo
BACKUP DATABASE [NOMBRE_BASE_DATOS] TO DISK = 'E:\Datos\copia_diff.BAK'
WITH DIFFERENTIAL;
– Transaction log backup: este backup solo funciona en los recovery model FULL
o BULK-LOGGED. Cada copia del log de transacciones contiene información de
todas las transacciones procesadas desde el último backup log, es decir, es un
backup incremental. Cada vez que se realiza un backup log, el log de transacciones
es reducido. En la siguiente consulta T-SQL se puede ver un ejemplo

BACKUP LOG [NOMBRE_BASE_DATOS] TO DISK = 'E:\Datos\copia_LOG.BAK'

Por desgracia en muchas empresas se utiliza la estrategia de tener solo FULL


Backups. Si por ejemplo, se hace un full backup a las 01:00 de la noche, y ocurre
un error a las 09:00 de la mañana, entonces perderemos 8 horas de datos. Seguro
que hay algunos casos en los que está perdida de datos es aceptable, pero en la
mayoría de las empresas esto no es aceptable.
Una mejor estrategia para las copias de seguridad consisten en:
– Un backup full diario.
– Un backup differential cada hora
– Un backup log cada X minutos (por ejemplo cada 15 minutos).
Estas copias programadas se pueden configurar de forma sencilla creando JOBS
de Sql Server.

2. Investigar como ejecutar procedimientos almacenados desde la


programación con transact SQL, colocar un ejemplo.

Usar Transact-SQL
Para ejecutar un procedimiento almacenado

1. Conéctese con el Motor de base de datos.


2. En la barra Estándar, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic
en Ejecutar. En este ejemplo se muestra cómo ejecutar un procedimiento
almacenado que espera un parámetro. En el ejemplo se ejecuta el
procedimiento almacenado uspGetEmployeeManagers con el valor 6 como
parámetro @EmployeeID .
SQL

USE AdventureWorks2012;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO

Para establecer o borrar un procedimiento para que se ejecute automáticamente


1. Conéctese con el Motor de base de datos.
2. En la barra Estándar, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic
en Ejecutar. En este ejemplo se muestra cómo usar sp_procoption para
establecer un procedimiento de manera que se ejecute automáticamente.
SQL

USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';

Para que un procedimiento deje de ejecutarse automáticamente

1. Conéctese con el Motor de base de datos.


2. En la barra Estándar, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic
en Ejecutar. En este ejemplo se muestra cómo usar sp_procoption para que
un procedimiento deje de ejecutarse automáticamente.
SQL

USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionValue = 'off';

Bibliografía:
 https://docs.microsoft.com/es-es/sql/relational-databases/stored-
procedures/execute-a-stored-procedure?view=sql-server-
2017#TsqlExample
 http://www.programmingapps.net/2014/11/sql-server-copias-se-seguridad-y-
restauracion/