Batch (BAT) script 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
Bình luận gần đây