/*********************************************************************
* Procedimiento Almacenado el cual tendra como funcion *
* hacer una copia exacta de la BD, recibe como parametro *
* el nombre de la BD,y la ruta donde se va a dejar el archivo .BAK *
**********************************************************************/
If Exists (Select 1 From sysobjects where name = 'SP_BackUp' and type ='P')
Drop Proc SP_BackUp
Go
Create Proc SP_BackUp
@Nombre_BD varchar (50)
,@Destino varchar (50)
As
Declare
@Path as varchar (100)
Select @destino = Replace(@destino ,' ','')
Select @Path = @Destino + '\' + @Nombre_BD + '.bak'
BACKUP DATABASE @Nombre_BD
TO DISK = @Path
Goto Bitacora
--Grabamos la Bitacora
Bitacora:
Exec Sp_Graba_Bitacora_BackUp
@Nombre_bd_=@Nombre_bd
,@Path_=@Path
,@Actividad = 0
GO
/***********************************************************************
* Procedimiento Almacenado el cual tendra como funcion *
* llevar acabo la restauracion exacta de una BD, recibe como parametro *
* el nombre de la BD,y la ruta donde esta el archivo .BAK *
************************************************************************/
If Exists (Select 1 From sysobjects where name = 'SP_Restore' and type ='P')
Drop Proc SP_Restore
Go
Create Proc SP_Restore
@Nombre_BD varchar (50)
,@Origen varchar (50)
As
Declare
@Path as varchar (100)
Select @Origen = Replace(@Origen,' ','')
Select @Path = @Origen + '\' + @Nombre_BD + '.bak'
Select b.name
From sysprocesses a
, sysdatabases b
Where a.dbid=b.dbid
And b.name =@Nombre_BD
If @@Rowcount = 0
Begin
RESTORE DATABASE @Nombre_BD
FROM DISK = @Path
--Grabamos la Bitacora
Exec Sp_Graba_Bitacora_BackUp
@Nombre_bd_=@Nombre_bd
,@Path_=@Path
,@Actividad = 1
End
Else
Raiserror 41000 'Hay mas de un usuario conectado,no se puede llevar el Proceso de Restauracion'
Go
/*************************************************************************
* Procedimiento Almacenado que realizara la bitacora de la actividad *
* producida por el usario a la hora de restaurar o hacer un backup de una *
* Base de datos, recibiendo como parametro el nombre de la Base de Datos *
* el Path de origen o destino del Archivo, y la actividad. *
* (0 = BackUp ,1 = Restauracion ) *
* ***********************************************************************/
If Exists (Select 1 From Sysobjects Where name = 'Sp_Graba_Bitacora_BackUp' and type ='P')
Drop Proc Sp_Graba_Bitacora_BackUp
Go
Create Proc Sp_Graba_Bitacora_BackUp
@Nombre_BD_ Varchar (100)
,@Path_ Varchar (100)
,@Actividad Bit
As
Insert Bitacora_BackUp (
Usuario
,Fecha
,Nombre_BD
,Path_backup
,Actividad)
Select suser_sname()
,getdate()
,@Nombre_BD_
,@Path_
,@Actividad
Go
/*************************************************************************
* Tabla la cual contendra el historial de las actividades que se produjo *
* ala hora de hacer un backup o la restauracion del mismo *
* ***********************************************************************/
If Exists (Select 1 From Sysobjects Where name = 'Bitacora_BackUp' and type ='U')
Drop Table Bitacora_BackUp
Go
Create Table Bitacora_BackUp(
Usuario varchar (30)
,Fecha datetime
,Nombre_BD varchar (30)
,Path_backup varchar (50)
,Actividad bit
)
Go