• No results found

How to schedule and automate backups of SQL Server databases in SQL Server Express Editions

N/A
N/A
Protected

Academic year: 2021

Share "How to schedule and automate backups of SQL Server databases in SQL Server Express Editions"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

How to schedule and automate backups of

SQL Server databases in SQL Server Express

Editions

View products that this article applies to.

Expand all | Collapse all

Summary

SQL Server Express editions do not offer a way to either schedule jobs or maintenance plans since SQL Server Agent component is not included with these editions. Hence you need to take a different approach to backup your databases on these editions.

Currently SQL Server Express users can backup their databases using one of the following two methods:

 Use SQL Server Management Studio Express that is installed with either SQL Server Express Advanced Service or SQL Server Express Toolkit. For more information refer to How to: Back Up a Database (SQL Server Management Studio) topic in SQL Server Books Online.

 Use BACKUP DATABASE family of commands in a T-SQL script. This article explains how to use a T-SQL script in conjunction with Windows Task Scheduler to automate backups of you SQL Server Express databases on a scheduled basis.

Back to the top

More Information

You need to take the following 3 steps to backup your SQL Server databases using Windows Task Scheduler

Step 1: Using SQL Server Management Studio express or Sqlcmd create the following stored procedure in

your master database:

// Copyright © Microsoft Corporation. All Rights Reserved.

// This code released under the terms of the // Microsoft Public License (MS-PL,

http://opensource.org/licenses/ms-pl.html.)

USE [master] GO

/****** Object: StoredProcedure [dbo].[sp_BackupDatabases] ******/ SET ANSI_NULLS ON

(2)

SET QUOTED_IDENTIFIER ON GO

--

============================================= -- Author: Microsoft

-- Create date: 2010-02-06

-- Description: Backup Databases for SQLExpress -- Parameter1: databaseName

-- Parameter2: backupType F=full, D=differential, L=log

-- Parameter3: backup file location --

============================================= CREATE PROCEDURE [dbo].[sp_BackupDatabases] @databaseName sysname = null, @backupType CHAR(1),

@backupLocation nvarchar(200) AS

SET NOCOUNT ON;

DECLARE @DBs TABLE (

ID int IDENTITY PRIMARY KEY, DBNAME nvarchar(500)

)

-- Pick out only databases which are online in case ALL databases are chosen to be backed up

-- If specific database is chosen to be backed up only pick that out from @DBs INSERT INTO @DBs (DBNAME)

SELECT Name FROM master.sys.databases

where state=0

AND name=@DatabaseName OR @DatabaseName IS NULL ORDER BY Name

-- Filter out databases which do not need to backed up

IF @backupType='F' BEGIN

DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','AdventureWorks') END

ELSE IF @backupType='D' BEGIN

DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','Adventur eWorks')

END

ELSE IF @backupType='L' BEGIN

(3)

DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','Adventur eWorks')

END ELSE

BEGIN RETURN END

-- Declare variables

DECLARE @BackupName varchar(100) DECLARE @BackupFile varchar(100) DECLARE @DBNAME varchar(300)

DECLARE @sqlCommand NVARCHAR(1000) DECLARE @dateTime NVARCHAR(20)

DECLARE @Loop int

-- Loop through the databases one by one

SELECT @Loop = min(ID) FROM @DBs WHILE @Loop IS NOT NULL

BEGIN

-- Database Names have to be in [dbname] formate since some have - or _ in their name SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'

-- Set the current date and time n yyyyhhmmss format

SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),'/','') + '_'

+ REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','') -- Create backup filename in

path\filename.extension format for full,diff and log backups

IF @backupType = 'F' SET @BackupFile =

@backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK' ELSE IF @backupType = 'D'

SET @BackupFile =

@backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK' ELSE IF @backupType = 'L'

SET @BackupFile =

@backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN' -- Provide the backup a name for storing in the media

(4)

SET @BackupName =

REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime

IF @backupType = 'D' SET @BackupName =

REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime

IF @backupType = 'L' SET @BackupName =

REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime

-- Generate the dynamic SQL command to be executed

IF @backupType = 'F' BEGIN

SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+ ' TO DISK =

'''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'

END

IF @backupType = 'D' BEGIN

SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+ ' TO DISK =

'''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP,

NOFORMAT' END

IF @backupType = 'L' BEGIN

SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'

END

-- Execute the generated SQL command EXEC(@sqlCommand)

-- Goto the next database

SELECT @Loop = min(ID) FROM @DBs where ID>@Loop END

Step 2: In a text editor create a batch file that is named sqlbackup.bat and then copy the text from one of

the following examples depending on your scenario into that file:

Example1: Full Backups of ALL databases in local named instance of SQLEXPRESS using Windows

Authentication // sqlbackup.bat

(5)

sqlcmd -S .\EXPRESS –E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"

Example2: Differential Backups of ALL databases in local named instance of SQLEXPRESS using SQLLogin and its password

// sqlbackup.bat

sqlcmd -U SQLLogin -P password -S .\SQLEXPRESS -Q "EXEC

sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType=’D’"

Note: The SQLLogin should at least have Backup Operator role at SQL Server.

Example3: Log Backups of ALL databases in local named instance of SQLEXPRESS using Windows

Authentication // sqlbackup.bat

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"

Example4: Full Backups of database USERDB in local named instance of SQLEXPRESS using Windows

Authentication // sqlbackup.bat

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases

@backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"

Similarly you can take differential and log backup of USERDB by passing in ‘D’ and ‘L’ respectively for the @backupType parameter.

Step 3: Schedule a job using Windows Task Scheduler to execute the batch file created in Step 2. To do this

use the following procedure:

1.

On the computer that is running Microsoft SQL Server Express, click Start , point to All Programs , point to Accessories , point to System Tools , and then click Scheduled Tasks.

2.

Double-click Add Scheduled Task .

3.

In the Scheduled Task Wizard, click Next .

4.

Click Browse , click the sqlbackup.bat file that you created in step 2, and then click Open .

5.

Type SQLBACKUP for the name of the task, and then click Daily . Then, click Next .

6.

Specify information for a schedule to run the Task. We

recommend that you run this at least once every day. Then, click

Next .

7.

In the Enter the user name field and in the Enter the password field, type a username and a password. Then, click Next . Please note that this user should at least be assigned the

BackupOperator role at SQL Server level if you are using one of the batch files in example 1, 3 and 4.

(6)

8.

Click Finish .

9.

Execute the scheduled task at least once to ensure that the backup is created successfully.

Note: The folder for SQLCMD executable is generally in the Path variables for the server after SQL Server is

installed, but in cases where the Path variable does not list this folder, you can find it under <Install

location>\90\Tools\Binn (For example: C:\Program Files\Microsoft SQL Server\90\Tools\Binn).

Please note the following when using the procedure documented in this article:

 Windows Task Scheduler service must be running at the time when the job is scheduled to run. It is recommended that you set the startup type for this service as Automatic. This ensures that the service will be running even on a restart.

 There should be enough space on the drive where the backups are being written to. It is recommended that you clean the old files in the backup folder on a regular basis to ensure that you do not run out of disk space. The script does not contain the logic to cleanup old files.

Additional References:

 Task Scheduler Overview (Windows Server 2008 R2, Windows Vista)

 How To Schedule Tasks in Windows XP

 Features Supported by the Editions of SQL Server 2008 Back to the top

Note

This is a "FAST PUBLISH" article created directly from within the Microsoft support

organization. The information contained herein is provided as-is in response to emerging issues.

As a result of the speed in making it available, the materials may include typographical errors

and may be revised at any time without notice. See Terms of Use for other considerations.

Back to the top

APPLIES TO

Back to the top

Keywords:

KB2019698

References

Related documents

• SQL Server Reporting Services • SQL Server Data Warehousing • SQL Server Database Backups • SQL Server Performance • SQL Server Replication • Entity Framework •

Module 6: Backup of SQL Server 2012 Databases Backing up Databases and Transaction Logs Managing Database Backups. Working with Backup Options Lab : Backup of SQL

Note For further details regarding the Databases dashboard and the various drilldowns used for monitoring SQL Server instances, see chapter The Foglight for SQL Server

Organizations can use this feature to back up SQL Server databases in an on-premises instance or in an instance of SQL Server running a hosted environment such as Windows Azure

The Enterprise edition is based on a Client/Server database (Currently Microsoft SQL Server – including the free SQLExpress) Client/Server databases are different from

■ (SQL Server legacy policies) Backups of databases and database components, configuration of backup options, and monitoring NetBackup for SQL Server restore operations.. In this

Module 6: Backup of SQL Server 2012 Databases  Backing up Databases and Transaction Logs  Managing Database Backups..  Working with

BackupAssist SQL Server Protection can back up SQL system databases for an SQL Server Master recovery, and use a transaction schedule to restore databases to a specific point in