Batch (BAT) script backup MSSQL Database

Auto backup MSSQL Database

Việc Backup database là công việc thường xuyên để an toàn dữ liệu khi có sự cố. Tuy nhiên, đây là việc nhàm chán và nhiều khi rất tốn thời gian phải chờ đợi khi dữ liệu có dung lượng lớn. Backup là việc lặp đi lặp lại, do đó ta có thể dùng scripts để tự động hóa việc Backup. Dưới đây là ví dụ về Batch (BAT) script để Backup MSSQL Database. Sử dụng Script này kết hợp với Schedule của Windows để tự động hóa Backup Database. Ngoài việc Backup, script này sẽ đồng thời tự động xóa các bản Backup cũ hơn 30 ngày để giữ cho ổ cứng không bị đầy.

@echo off
cls

rem Set these variables to the desired values

set SqlServer=.
set InstanceName=MSSQLSERVER
set Username=****************
set Password=****************
set Database=DatabaseQ3
set LocalFolder=C:\Temp
set NetworkFolder="\\FILESERVER\Backups\Database\Q3"

rem ************************************
rem * Don't touch anything below here. *
rem ************************************

echo Getting current date and time...
echo.
for /f %%a in ('sqlcmd -S %SqlServer% -U %Username% -P %Password% -Q "SET NOCOUNT ON select convert(varchar(500),GetDate(),102)" -h -1') do set CurrentDate=%%a
for /f %%a in ('sqlcmd -S %SqlServer% -U %Username% -P %Password% -Q "SET NOCOUNT ON select right('00' + ltrim(datepart(hour, getdate())), 2)" -h -1') do set CurrentHour=%%a
for /f %%a in ('sqlcmd -S %SqlServer% -U %Username% -P %Password% -Q "SET NOCOUNT ON select right('00' + ltrim(datepart(minute, getdate())), 2)" -h -1') do set CurrentMinute=%%a
for /f %%a in ('sqlcmd -S %SqlServer% -U %Username% -P %Password% -Q "SET NOCOUNT ON select right('00' + ltrim(datepart(second, getdate())), 2)" -h -1') do set CurrentSecond=%%a

echo.
echo Backing up database to %LocalFolder%
echo.
SqlCmd -S %SqlServer% -U %Username% -P %Password% -Q "Backup Database %Database% To Disk='%LocalFolder%\%Database%-%CurrentDate%_%CurrentHour%%CurrentMinute%%CurrentSecond%.bak'"

echo.
echo.
echo Copying backup to %NetworkFolder%
echo.
move /Y %LocalFolder%\%Database%-*.bak %NetworkFolder%

echo.
echo.
echo Delete files that older than 30 days in %LocalFolder%
echo.
forfiles /P %NetworkFolder% /M *.bak /S /C "cmd /c del @file" /D -30

 

Mr.Phan

KTS, KSXD, Developer

You may also like...

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *