Usuário com melhor resposta
Backup diário Sql Server 2012 SE

Pergunta
-
Pessoal,
Criei um Job de Backup diário no Sql Server 2012 SE, mas eu não gostaria de sobre escrever o arquivo de backup diariamente. Gostaria que o mesmo ficasse armazenado na pasta do servidor.
Ex.:
BACKUP DATABASE [Exemplo]
TO DISK = N'F:\Backup_Databases\backup_Exemplo.bak' WITH NOFORMAT, NOINIT,
NAME = N'Exemplo-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Desta forma diariamente o arquivo do backup anterior e sobre escrito.
Alguma idéia?
JFonseca
Respostas
-
JFonseca,
Em vez de criar o job com um script T-SQL, crie uma manutenção na sua instância SQL.
Segue abaixo um link sobre como escrever o script para cada tipo de backup que você está querendo efetuar:
http://msdn.microsoft.com/pt-br/library/ms186865.aspx#backing_up_db
Agora, para agendar os backup´s eu recomendo que você crie um plano de manutenção com intervalo de tempo. Desta forma, também é possível criar um arquivo com nome / extensão diferentes para cada situação.
Para acessar o "Maintenance Plans", entre no SSMS, abra sua instância SQL, clique na pasta "Management" -> "Maintenance Plans". Clique com o botão direito e selecione "New Maintenance Plan...".
Caso você deseja criar por script, veja o link abaixo:
http://technet.microsoft.com/en-us/library/ms189953.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 18 de fevereiro de 2014 17:42
-
Durval, muito obrigado, mas o que preciso e outra coisa. Eu quero um arquivo diário de backup. Ex.: Backup_<database>_17022014.bak --> Arquivo de backup de ontem.
Backup_<database>_18022014.bak --> Arquivo de backup de hoje.
Gostaria de fazer isso que está acima, porem não sei como fazer.
Quanto o Maintence Plans, prefiro fazer pelo JOB. Segue o Script do JOB abaixo.
USE [msdb]
GO
/****** Object: Job [Backup Database Exemplo] Script Date: 17/02/2014 17:27:15 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Database Maintenance] Script Date: 17/02/2014 17:27:15 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Backup Database Exemplo',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database LanView] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Exemplo',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [Exemplo] TO DISK = N''F:\Backup_Databases\backup_Exemplo.bak'' WITH NOFORMAT, NOINIT, NAME = N''Exemplo-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'Exemplo',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database model] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database model',
@step_id=2,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [model]
TO DISK = N''F:\Backup_Databases\backup_model.bak'' WITH NOFORMAT, NOINIT,
NAME = N''model-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database msdb] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database msdb',
@step_id=3,
@cmdexec_success_code=0,
@on_success_action=3,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [msdb]
TO DISK = N''F:\Backup_Databases\backup_msdb.bak'' WITH NOFORMAT, NOINIT,
NAME = N''msdb-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database Master] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Master',
@step_id=4,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [master]
TO DISK = N''F:\Backup_Databases\backup_master.bak'' WITH NOFORMAT, NOINIT,
NAME = N''master-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Backup Database LanView',
@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=20140208,
@active_end_date=99991231,
@active_start_time=20000,
@active_end_time=235959,
@schedule_uid=N'92844be4-6e9a-434d-9906-c53ccb4da900'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
JFonseca,
Da forma que eu te indiquei, você vai conseguir o que pretende sem muito esforço e com fácil manutenção (quando necessário). Veja na imagem abaixo o resultado de um determinado banco de dados, com um backup FULL intercalado com alguns DIFFERENTIAL.
Não esqueça de marcar todos os posts que te ajudaram como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta jfonseca terça-feira, 18 de fevereiro de 2014 19:11
Todas as Respostas
-
JFonseca,
Em vez de criar o job com um script T-SQL, crie uma manutenção na sua instância SQL.
Segue abaixo um link sobre como escrever o script para cada tipo de backup que você está querendo efetuar:
http://msdn.microsoft.com/pt-br/library/ms186865.aspx#backing_up_db
Agora, para agendar os backup´s eu recomendo que você crie um plano de manutenção com intervalo de tempo. Desta forma, também é possível criar um arquivo com nome / extensão diferentes para cada situação.
Para acessar o "Maintenance Plans", entre no SSMS, abra sua instância SQL, clique na pasta "Management" -> "Maintenance Plans". Clique com o botão direito e selecione "New Maintenance Plan...".
Caso você deseja criar por script, veja o link abaixo:
http://technet.microsoft.com/en-us/library/ms189953.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 18 de fevereiro de 2014 17:42
-
Durval, muito obrigado, mas o que preciso e outra coisa. Eu quero um arquivo diário de backup. Ex.: Backup_<database>_17022014.bak --> Arquivo de backup de ontem.
Backup_<database>_18022014.bak --> Arquivo de backup de hoje.
Gostaria de fazer isso que está acima, porem não sei como fazer.
Quanto o Maintence Plans, prefiro fazer pelo JOB. Segue o Script do JOB abaixo.
USE [msdb]
GO
/****** Object: Job [Backup Database Exemplo] Script Date: 17/02/2014 17:27:15 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Database Maintenance] Script Date: 17/02/2014 17:27:15 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Backup Database Exemplo',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database LanView] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Exemplo',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [Exemplo] TO DISK = N''F:\Backup_Databases\backup_Exemplo.bak'' WITH NOFORMAT, NOINIT, NAME = N''Exemplo-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'Exemplo',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database model] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database model',
@step_id=2,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [model]
TO DISK = N''F:\Backup_Databases\backup_model.bak'' WITH NOFORMAT, NOINIT,
NAME = N''model-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database msdb] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database msdb',
@step_id=3,
@cmdexec_success_code=0,
@on_success_action=3,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [msdb]
TO DISK = N''F:\Backup_Databases\backup_msdb.bak'' WITH NOFORMAT, NOINIT,
NAME = N''msdb-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database Master] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Master',
@step_id=4,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [master]
TO DISK = N''F:\Backup_Databases\backup_master.bak'' WITH NOFORMAT, NOINIT,
NAME = N''master-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Backup Database LanView',
@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=20140208,
@active_end_date=99991231,
@active_start_time=20000,
@active_end_time=235959,
@schedule_uid=N'92844be4-6e9a-434d-9906-c53ccb4da900'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
-
Durval, muito obrigado, mas o que preciso e outra coisa. Eu quero um arquivo diário de backup. Ex.: Backup_<database>_17022014.bak --> Arquivo de backup de ontem.
Backup_<database>_18022014.bak --> Arquivo de backup de hoje.
Gostaria de fazer isso que está acima, porem não sei como fazer.
Quanto o Maintence Plans, prefiro fazer pelo JOB. Segue o Script do JOB abaixo.
USE [msdb]
GO
/****** Object: Job [Backup Database Exemplo] Script Date: 17/02/2014 17:27:15 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Database Maintenance] Script Date: 17/02/2014 17:27:15 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Backup Database Exemplo',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database LanView] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Exemplo',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [Exemplo] TO DISK = N''F:\Backup_Databases\backup_Exemplo.bak'' WITH NOFORMAT, NOINIT, NAME = N''Exemplo-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'Exemplo',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database model] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database model',
@step_id=2,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [model]
TO DISK = N''F:\Backup_Databases\backup_model.bak'' WITH NOFORMAT, NOINIT,
NAME = N''model-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database msdb] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database msdb',
@step_id=3,
@cmdexec_success_code=0,
@on_success_action=3,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [msdb]
TO DISK = N''F:\Backup_Databases\backup_msdb.bak'' WITH NOFORMAT, NOINIT,
NAME = N''msdb-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Backup Database Master] Script Date: 17/02/2014 17:27:16 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Database Master',
@step_id=4,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'BACKUP DATABASE [master]
TO DISK = N''F:\Backup_Databases\backup_master.bak'' WITH NOFORMAT, NOINIT,
NAME = N''master-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Backup Database LanView',
@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=20140208,
@active_end_date=99991231,
@active_start_time=20000,
@active_end_time=235959,
@schedule_uid=N'92844be4-6e9a-434d-9906-c53ccb4da900'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
JFonseca,
Da forma que eu te indiquei, você vai conseguir o que pretende sem muito esforço e com fácil manutenção (quando necessário). Veja na imagem abaixo o resultado de um determinado banco de dados, com um backup FULL intercalado com alguns DIFFERENTIAL.
Não esqueça de marcar todos os posts que te ajudaram como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta jfonseca terça-feira, 18 de fevereiro de 2014 19:11