Backup de todas las BBDD

01/03/2007 - 13:31 por Carlos | Informe spam
Utilizando SQL Server 2005 y Microsoft SQL Server Management Studio Express:

Sería posible crear un backup en el plan de mantenimiento que realice una
copia de todas las bases de datos que existan en el servidor en el momento de
crear este plan y que cuando se añada o se elimine alguna B.D. no fuese
necesario modificar nada.

No sé si es pedir demasiado.

Saludos.
Carlos.

Preguntas similare

Leer las respuestas

#1 Maxi
01/03/2007 - 16:29 | Informe spam
Nop, hay una alternativa a eso y es que recorras con un cursor las bases del
servidor y a cada una le hagas el backup correspondiente. Solo deberias
armar un Store por ej que haga esta funcion y programarlo, recuerda que la
edicion Express no dispone de Agent con lo cual vas a necesitar hacerlo
desde el Windows


"Carlos" escribió en el mensaje
news:
Utilizando SQL Server 2005 y Microsoft SQL Server Management Studio
Express:

Sería posible crear un backup en el plan de mantenimiento que realice una
copia de todas las bases de datos que existan en el servidor en el momento
de
crear este plan y que cuando se añada o se elimine alguna B.D. no fuese
necesario modificar nada.

No sé si es pedir demasiado.

Saludos.
Carlos.
Respuesta Responder a este mensaje
#2 Gustavo Larriera (MVP)
01/03/2007 - 18:11 | Informe spam
Tal como dices, eso es pedir demasiado :-)

Gustavo Larriera, MVP
http://aspnet2.com/mvp.ashx?GustavoLarriera
http://solidqualitylearning.com/blogs/glarriera/
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Carlos" wrote:

Utilizando SQL Server 2005 y Microsoft SQL Server Management Studio Express:

Sería posible crear un backup en el plan de mantenimiento que realice una
copia de todas las bases de datos que existan en el servidor en el momento de
crear este plan y que cuando se añada o se elimine alguna B.D. no fuese
necesario modificar nada.

No sé si es pedir demasiado.

Saludos.
Carlos.
Respuesta Responder a este mensaje
#3 Isaias
01/03/2007 - 19:56 | Informe spam
Carlos

Nada que ver con el plan de mantenimiento, pero este store, podrias
colocarlo en un JOB:


Create Procedure s_BackupAllDatabases
@Path varchar(128) ,
@Type varchar(4) -- Full / Log
as
/*
Backup file format
_Full_yyyymmdd_hhmmss.bak
_Log_yyyymmdd_hhmmss.bak

exec s_BackupAllDatabases 'e:\BackupNigel\', 'Full'
*/
/*
drop table DatabaseBackup

Create table DatabaseBackup
(
Name varchar(128) primary key nonclustered ,
BackupFlagFull varchar(1) not null check (BackupFlagFull in ('Y','N')) ,
BackupFlagLog varchar(1) not null check (BackupFlagLog in ('Y','N')) ,
RetentionPeriodFull datetime not null ,
RetentionPeriodLog datetime not null
)
*/
set nocount on
declare @sql varchar(1000)

create table #DBName
(
ID int identity (1,1) ,
Name varchar(128) not null ,
RetentionPeriod datetime null
)

insert #DBName
(Name)
select name
from master..sysdatabases

insert DatabaseBackup
(
Name ,
BackupFlagFull ,
BackupFlagLog ,
RetentionPeriodFull ,
RetentionPeriodLog
)
select #DBName.Name ,
'Y' ,
'N' ,
'2 jan 1900' , -- default 2 days
'1 jan 1900'
from #DBName
left outer join DatabaseBackup
on DatabaseBackup.Name = #DBName.Name
where DatabaseBackup.Name is null
and lower(#DBName.Name) <> 'tempdb'

delete DatabaseBackup
where not exists
(
select *
from #DBName
where #DBName.Name = DatabaseBackup.Name
)

delete #DBName

create table #ExistingBackups
(
Name varchar(128) ,
ID int identity (1,1)
)

declare @Name varchar(128) ,
@RetentionPeriod datetime ,
@LastBackupToKeep varchar(8) ,
@ID int ,
@MaxID int

insert #DBName
(Name, RetentionPeriod)
select Name, case when @Type = 'Full' then RetentionPeriodFull else
RetentionPeriodLog end
from DatabaseBackup
where (@Type = 'Full' and BackupFlagFull = 'Y')
or (@Type = 'Log' and BackupFlagLog = 'Y')

select @MaxID = max(ID) ,
@ID = 0
from #DBName

while @ID < @MaxID
begin
select @ID = min(ID) from #DBName where ID > @ID

select @Name = Name ,
@RetentionPeriod = RetentionPeriod
from #DBName
where ID = @ID

delete #ExistingBackups
select @sql = 'dir /B ' + @Path
select @sql = @sql + '"' + @Name + '_' + @Type + '*.*"'

insert #ExistingBackups exec master..xp_cmdshell @sql

if exists (select * from #ExistingBackups where Name like '%File Not
Found%')
delete #ExistingBackups

select @LastBackupToKeep = convert(varchar(8),getdate() -
@RetentionPeriod,112)
delete #ExistingBackups where Name > @Name + '_' + @Type + '_' +
@LastBackupToKeep

declare @eID int ,
@eMaxID int ,
@eName varchar(128)

select @eID = 0 ,
@eMaxID = coalesce(max(ID), 0)
from #ExistingBackups

while @eID < @eMaxID
begin
select @eID = min(ID) from #ExistingBackups where ID > @eID
select @eName = Name from #ExistingBackups where ID = @eID

select @sql = 'del ' + @Path + '"' + @eName + '"'
exec master..xp_cmdshell @sql, no_output
end
delete #ExistingBackups

select @sql = @Path + @Name + '_' + @Type + '_'
+ convert(varchar(8),getdate(),112) + '_'
+ replace(convert(varchar(8),getdate(),108),':','') + '.bak'
if @Type = 'Full'
backup database @Name
to disk = @sql
else
backup log @Name
to disk = @sql
end

go

Saludos
IIslas


"Carlos" wrote:

Utilizando SQL Server 2005 y Microsoft SQL Server Management Studio Express:

Sería posible crear un backup en el plan de mantenimiento que realice una
copia de todas las bases de datos que existan en el servidor en el momento de
crear este plan y que cuando se añada o se elimine alguna B.D. no fuese
necesario modificar nada.

No sé si es pedir demasiado.

Saludos.
Carlos.
Respuesta Responder a este mensaje
#4 Carlos
06/03/2007 - 20:09 | Informe spam
Gracias.

Al final me quede con la idea del sp que recorre las BBDD, como decía Maxi y
programe un Job, como decía Isaias (con SQL Server Management Studio) .

Carlos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida