You have to follow these three steps to back up your SQL Server databases by using Windows Task Scheduler:
Step A: Use SQL Server Management Studio Express or Sqlcmd to create the following stored procedure in your master database:
- USE [master]
- GO
- /****** Object: StoredProcedure [dbo].[sp_BackupDatabases] ******/
- SET ANSI_NULLS ON
- GO
- 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','AdventureWorks')
- END
- ELSE IF @backupType='L'
- BEGIN
- DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
- 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] format 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
- IF @backupType = 'F'
- 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 B: In a text editor, create a batch file that is named Sqlbackup.bat, and then copy the text from one of the
following examples into that file, depending on your scenario:
sqlcmd -S .\EXPRESS –E -Q "EXEC sp_BackupDatabasesExample1: Full backups of all databases in the local named instance of SQLEXPRESS by using Windows Authentication// Sqlbackup.bat
@backupLocation='D:\SQLBackups\', @backupType='F'"
// Sqlbackup.batExample2: Differential backups of all databases in the local named instance of SQLEXPRESS by using a SQLLogin and its password// Sqlbackup.batsqlcmd -U SQLLogin -P password -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType=’D’"Note: The SQLLogin shouldhave at least the Backup Operator role in SQL Server.Example 3: Log backups of all databases in local named instance of SQLEXPRESS by using Windows Authentication
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"Example 4: Full backups of the database USERDB in the local named instance of SQLEXPRESS by using Windows Authentication// Sqlbackup.bat
Similarly, you can make a differential backup of USERDB by pasting in 'D' for the @backupType parameter and a log backup of USERDB by pasting in 'L' for the @backupType parameter.
Step c: Set .Rar or .zip File Name as Current Date
for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%C
set DateMonth=%%B
set DateYear=%%D
)
set CurrentDate=%DateDay%-%DateMonth%-%DateYear%
step D: Create .Rar File
set path="C:\Program Files (x86)\WinRAR\";%path%
winrar.exe a -ep1 C:\backup\%CurrentDate%.rar C:\backup\
Step E:Transfer .Rar File using FTP
echo user Username>> ftpcmd.dat
echo Password>> ftpcmd.dat
echo cd backup_Folder>> ftpcmd.dat
echo put "C:\backup\*.rar">> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 255.255.255.255
Example:Full Script
DEL /F /S /Q /A "C:\backup\*.bak"
DEL /F /S /Q /A "C:\backup\*.rar"
sqlcmd -S Server\SQLEXPRESS -U Sa -P server -Q "EXEC sp_BackupDatabases @backupLocation='C:\backup\', @backupType='F'"
@REM ------- BEGIN xpi.bat ----------------
@setlocal
@echo off
for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%C
set DateMonth=%%B
set DateYear=%%D
)
set CurrentDate=%DateDay%-%DateMonth%-%DateYear%
set path="C:\Program Files (x86)\WinRAR\";%path%
winrar.exe a -ep1 C:\backup\%CurrentDate%.rar C:\backup\
echo user Username>> ftpcmd.dat
echo Password>> ftpcmd.dat
echo cd backup_Folder>> ftpcmd.dat
echo put "C:\backup\*.rar">> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 255.255.255.255
REM ------- END xpi.bat ------------------
File name should be not apply
ReplyDeleteex --.rar showing
your Computer system Datetime format should be m/d/yyyy
ReplyDelete08/19/2017 Then check
Thanks..
DeleteI'm used time format
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
Explain MS SQL Server Backup Issue with SQL Server Database Support
ReplyDeleteThe SQL Server fortification/reinforcement and restore section gives a crucial shield to anchoring fundamental dataset away in your SQL Server databases. To limit the threat of calamitous data hardship, you need to move down your databases to spare changes in accordance with your data constantly. For this issue, we at Cognegic give finish reinforcement and recuperation of your whole MS SQL Server. Contact to Remote Infrastructure Management Support for Microsoft SQL Server and Online MS SQL Server Support and get mind-boggling support.
For More Info: https://cognegicsystems.com/
Contact Number: 1-800-450-8670
Email Address- info@cognegicsystems.com
Company’s Address- 507 Copper Square Drive Bethel Connecticut (USA) 06801
very nice thank you
ReplyDeleteVikrant Makwana from JODHPUR Rajasathan