Tuesday, November 6, 2012

Database Backup using Cursor

Some times it requires to take a backup of all the databases or more than one database which exist on your SQLinstance. There is a small cursor which will take a backup of all the database at a time to the specified location.
In the below Cursor you have to provide the path as where do you want to keep the backup files and the database name as per your requirement.
In the below example I am taking backup of all the user database to 'D:\Backup\' location.


DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'D:\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

No comments:

Post a Comment