Creating Backup Jobs in SQL Seerver
Creating Backup Jobs in SQL Seerver
Creating Backup Jobs in SQL Seerver
COM
The SQL Server 2005 Maintenance Plan feature has been significantly modified in comparison
with SQL 2000: now it utilizes new Integration Services. Also, creating database and
transaction log backups is not as clear as it was in SQL 2000. This article does not describe all
available SQL Server 2005 backup features or provide some tricks dealing with them; instead,
If you created backup maintenance plans in SQL 2000, you probably noticed that the key
element of the backup job was the xp_sqlmaint extended stored procedure, which used the
sqlmaint utility. Despite the fact that Microsoft has deprecated both sqlmaint and
xp_sqlmaint, and is planning to remove them from future versions of SQL Server, they are
still here and they work well. So, you can take your existing SQL 2000 backup jobs, modify
the server and database names, the backup files folders, the output and report files, etc., and
In case you do not have those scripts, here is an example of a database backup job that uses
database on the dba02\sql2005 instance to the shared dbbackup folder on the server02
server, deletes backup files older than 4 days, and stores a report into the C:\Program
Below is the code fragment that utilizes the xp_sqlmaint procedure; the complete script can
be downloaded here.
@job_id = @JobID,
@step_id = 1,
@database_name = N'master',
@server = N",
@database_user_name = N",
@subsystem = N'TSQL',
@cmdexec_success_code = 0,
@retry_attempts = 0,
@retry_interval = 0,
LOG\aw_backup.log',
@on_success_step_id = 0,
@on_fail_step_id = 0,
If you are going to use new Maintenance Plan features, I strongly recommend installing SQL
Server 2005 Service Pack 1 first. Among the new features and improvements that are included
in SQL Server 2005 Service Pack 1, there is a fix for the previously existing discrepancy
between Back up database task, which allowed storing database backups in separate
folders, and Maintenance Cleanup Task, which could not delete backup files from those
subfolders.
In order to create a new maintenance plan in Management Studio, first connect to the target
server using Windows Authentication, then right-click on the Maintenance Plan folder in
Object Explorer, select New Maintenance Plan, and enter the plan name. As a result, a
Maintenance Plan design panel will appear on the right, and a toolbox with available
Maintenance Plan Tasks will be displayed on the left. Click on the Connection button to verify
Currently connected Windows user will become the owner of the job created by this
maintenance plan.
The first step in creating a database or transaction log backup is to drag and drop Back up
database task from the toolbox to the design panel. Then double-click on that item to set the
Databases: Click on the dropdown field to bring up the database selection window.
Destination parameters:
Make sure that the Create a backup file for every database option is
selected and the Create a sub-directory for each database box is checked.
Lokeshwar Reddy K SQLKIDS.BLOGSPOT.COM
o You can use the default destination folder or specify your own. For this
selected.
o Backup file extension — make sure that its value is bak without a leading
dot.
When you are done, the Back up database task properties window should look like the one
shown on Figure 2.
Having verified the task properties, click OK. Now you can create a schedule for this plan.
Click on the … button located to the right of the Schedule field and set the necessary
parameters in the Job Schedule Properties window. Schedule name will be defaulted to
parameters are similar to SQL Server 2000 schedule setup. As you can see in Figure 4, the
backup has been scheduled to run every day at 1 a.m. Click OK to save this schedule.
When you click on the Logging button, the Reporting and Logging window appears. It is
similar to the SQL 2000 Reporting tab: the default folder for the backup log is C:\Program
choose between the Create a new file option that will create a new log file named
Append to file option (in this case you have to name the log file). You can also check the
Unlike SQL Server 2000, there is no option in the Back up database task for removing
database backup files from the backup folder. In order to delete obsolete backup files, an
additional Maintenance Cleanup Task must be inserted and configured. Drag and drop this
task into the design panel and double-click on it to set the properties:
Delete files of the following types: choose the Backup files option.
extension and provide the same full path to the backup folder as you did on the
The file extension also should be the same as that used in Back up database task:
bak for the database backup files or trn for the transaction log backup files (both
without a leading dot). If you created a separate directory for each database in Back
up database task, you can also check the Include first-level subfolders box.
File age: check Delete files based on the age of the file at task run time
and set the Delete files older than the following option. The smallest retention
period is 1 day now, no more hours and minutes as it was in SQL 2000. If you click
Lokeshwar Reddy K SQLKIDS.BLOGSPOT.COM
on the View T-SQL button, you will see a new undocumented stored procedure,
EXECUTE master.dbo.xp_delete_file
0, -- delete files
After the properties have been specified, the Maintenance Cleanup Task properties window
The Maintenance Cleanup Task should be executed only upon successful completion of the
Back up database task. To ensure this, we have to link both tasks with a constraint. Click on
the first task and then drag an available component output (depicted as a green arrow) to the
next task. Double-click on the arrow to check and edit, if necessary, the Precedence
Constraint properties:
Value: Success.
Now we are done with all the tasks and the design panel should look like the one shown in
Figure 4:
Click on the Save All icon to save the plan. As a result, a new job, with the same name as the
maintenance plan name, has been created and you can see both the plan and the job in the
We can create another maintenance plan for s transaction log backup. Before we do this, let
Pubs_NW_db_backup. Right-click on the plan icon, select the Rename option, edit the plan
name, and press Enter. The corresponding job will be renamed too.
Before you create a plan for a transaction log backup, you need to verify that the target
Creating this plan is similar to the full database backup plan creation. There are only two
different parameter values for Back up database task: Backup type should be set to
Transaction Log, and Backup file extension should be set to trn; also, for Maintenance
Cleanup Task the File extension parameter should be set to trn. Schedule this plan to run
It is not necessary to create a Maintenance Cleanup Task in the transaction log backup plan
in case you stored both the database and the transaction log files in the same folder. Instead,
you can reuse the Maintenance Cleanup Task from the database backup plan by modifying
A differential database backup was not included in the SQL 2000 maintenance plan. Additional
efforts were required in order to add a differential backup job and complete the database
backup schedule. Now it is much easier. The Back up database task allows you to schedule
a differential database backup the same way as a full database backup. I would recommend
storing differential backup files in the same folder with full database backup files so you can
You can test these plans/jobs the same way as in SQL 2000: just right-click on the plan icon in
Object Explorer and select Execute from the dropdown menu, or right-click on the job and
select Start Job at Step…. Please note that if you execute a maintenance plan, the status
could be Success even if the job has actually failed (see Figure 5), or vice versa, but the job
The plan/job results will be stored in the msdb database and in the file specified in the plan
Logging property. If you checked the Log extended information box in the Reporting and
Logging window during maintenance plan creation, the detail information will be stored in
both the log file and the msdb.dbo.sysmaintplan_logdetail table. If you left this box
unchecked and the job status is Succeeded, then there are no details provided in the log file
or the msdb.dbo.sysmaintplan_logdetail table. However, if any of the tasks failed you can
You can also check the results in Management Studio by right-clicking on the plan or job icon
and selecting View History from the dropdown menu, then expanding the record for a failed
plan/job.
If you work in a multi-server environment and you need to automate the review and analysis
of the backup results, you can use the intended stored procedures, or query the appropriate
The sp_help_jobhistory procedure can check the history of the job regardless of the way the
job was created: either using modified SQL Server 2000 scripts or scripts generated by SQL
EXEC msdb.dbo.sp_help_jobhistory
@job_name = N'Pubs_NW_tl_backup',
@mode = N'FULL';
msdb.dbo.sysmaintplan_subplans, msdb.dbo.sysmaintplan_log, or
plan:
SELECT mp.[name],
msp.subplan_name,
mpl.start_time,
mpl.end_time,
mpld.command,
mpld.error_message
FROM msdb.dbo.sysmaintplan_plans mp
mpl.task_detail_id=mpld.task_detail_id
Useful Tip
If you need to run an ad-hoc backup of your database without impacting the backup
TO DISK = '\\server02\dbbackup\sql2005\AdvWorksData.bak'
WITH COPY_ONLY;
Conclusion
Even though your existing SQL Server 2000 scripts can be helpful in jump-starting your
database backup development in Server 2005, I would still recommend gradually moving to
Lokeshwar Reddy K SQLKIDS.BLOGSPOT.COM
the 2005 methodology. Nevertheless, both methods currently work, and if this article helped
you simplify database backup implementation, then it has done its job.