Backups automáticos en SQL Server
Para realizar backups o respaldos automáticos de todas nuestras bases de datos encontre este script en el blog de Victor Hugo Saavedra el código del script es el siguiente:
DECLARE @name VARCHAR(50) -- variable del nombre de BD
DECLARE @path VARCHAR(256) -- ruta donde se guardara el archivo backup
DECLARE @fileName VARCHAR(256) -- nombre del archivo del backup
DECLARE @fileDate VARCHAR(20) -- fecha de creación del backup
SET @path = 'f:\Backup\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Este script lo podemos utilizar en un JOB para que se realice periódicamente, ejecuta esta consulta y automáticamente se creará el job o trabajo:
EXEC msdb..sp_add_job @job_name = 'respaldogeneral', ---nombre del trabajo o job
@enabled = 1,
@description = 'No description available.',
@start_step_id = 1,
@category_name = 'Database Maintenance',
@notify_level_eventlog = 0,
@notify_level_email = 0,
@notify_level_netsend = 0,
@notify_level_page = 0,
@notify_email_operator_name = NULL,
@notify_netsend_operator_name = NULL,
@notify_page_operator_name = NULL,
@delete_level = 0
GO
EXEC msdb..sp_add_jobstep @job_name = 'respaldogeneral', ---nombre del trabajo o job
@step_id = 1,
@step_name = 'paso1',
@subsystem = 'TSQL',
@command = 'DECLARE @name VARCHAR(50) -- variable del nombre de BD
DECLARE @path VARCHAR(256) -- ruta donde se guardara el archivo backup
DECLARE @fileName VARCHAR(256) -- nombre del archivo del backup
DECLARE @fileDate VARCHAR(20) -- fecha de creación del backup
SET @path = ''f:\Backup\''
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN (''master'',''model'',''msdb'',''tempdb'')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + ''_'' + @fileDate + ''.BAK''
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor',
@additional_parameters = NULL,
@cmdexec_success_code = 0,
@on_success_action = 1,
@on_success_step_id = 0,
@on_fail_action = 2,
@on_fail_step_id = 0,
@server = NULL,
@database_name = [master],
@database_user_name = NULL,
@retry_attempts = 0,
@retry_interval = 0,
@output_file_name = NULL,
@flags = 0
GO
--- aca es el periodo yo lo hago diario a las 19:00
EXEC msdb..sp_add_jobschedule @job_name = 'respaldogeneral',
@name = 'diario',
@enabled = 1,
@freq_type = 4,
@freq_interval = 1,
@freq_subday_type = 1,
@freq_subday_interval = 0,
@freq_relative_interval = 0,
@freq_recurrence_factor = 0,
@active_start_date = 20120420,
@active_end_date = 99991231,
@active_start_time = 190000,
@active_end_time = 0
GO
--- aca cada sabado a las 14:00 ya que el fin de semana despues de las dos el servidor se apaga
EXEC msdb..sp_add_jobschedule @job_name = 'respaldogeneral',
@name = 'sabado',
@enabled = 1,
@freq_type = 8,
@freq_interval = 64,
@freq_subday_type = 1,
@freq_subday_interval = 0,
@freq_relative_interval = 0,
@freq_recurrence_factor = 1,
@active_start_date = 20120420,
@active_end_date = 99991231,
@active_start_time = 120000,
@active_end_time = 0
GO
EXEC msdb..sp_add_jobserver @job_name = 'respaldogeneral',
@server_name = 'servidor' --acá le cambias el nombre de tu servidor
GO
Comentarios
Publicar un comentario