0% found this document useful (0 votes)
5 views10 pages

Automating SQL Backup and Cleanup

The document contains code for automating backup and deletion of old backups in SQL Server 2005 Express. It includes both T-SQL code to perform the backups and VBScript code to delete backups older than a certain date. The T-SQL code uses variables to generate a timestamp for the backup file name and then backs up all databases except TempDB to the E:\SQL_Backup folder. The VBScript code is meant to delete older backup files, with logging of deleted files to a LOG.txt file. It uses the FileSystemObject to interact with files in the backup folder.

Uploaded by

thanhtu_722
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views10 pages

Automating SQL Backup and Cleanup

The document contains code for automating backup and deletion of old backups in SQL Server 2005 Express. It includes both T-SQL code to perform the backups and VBScript code to delete backups older than a certain date. The T-SQL code uses variables to generate a timestamp for the backup file name and then backs up all databases except TempDB to the E:\SQL_Backup folder. The VBScript code is meant to delete older backup files, with logging of deleted files to a LOG.txt file. It uses the FileSystemObject to interact with files in the backup folder.

Uploaded by

thanhtu_722
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Xóa file rác của hệ thống

Const TempWin =

C:\Windows\Temp\

Const Recent =

C:\Windows\Recent\*.*

DelTempDir

Sub DelTempDir ()

Dim fso

Set fso =

CreateObject([Link])

[Link] TempWin & *.*, True

[Link] TempWin & *, True

[Link] Recent, True

MsgBox DelTemp has finished., Finish function

End Sub

Kiểm tra NetFrameWork


//===============================================================
============
//
// Topic: CheckAndInstallNetFramework
//
// Description:
//
// My Name :
//
//===============================================================
============
function CheckAndInstallNetFramework()
begin
//CopyFile(SRCDIR^"Net
Framework\\[Link]",SUPPORTDIR ^
"[Link]");
if
CheckNetFameworkCreateFile(SUPPORTDIR,"[Link]","Che
[Link]")=FALSE then
InstallNetFrameWork(SUPPORTDIR^"\\NetFx20SP1_x86.exe");
endif;
DeleteFile(SUPPORTDIR^"[Link]");

end;

//===============================================================
============
//
// Topic: InstallNetFrameWork
//
// Description:
//
// My Name :
//
//===============================================================
============

function InstallNetFrameWork(filePath)
NUMBER nvDx, nvDy, nvResult, nvType, nvSize;
STRING svResult, svVersionNumber;

begin

if (AskYesNo("Microsoft .NET Framework 2.0 or later


version was not installed in your system.\n\n Would you like to
install it now?", YES ) = YES) then
if Is(FILE_EXISTS,filePath)==TRUE then
if (LaunchAppAndWait (filePath, "",
LAAW_OPTION_WAIT) < 0) then

MessageBox("NetFx20SP1_x86.exe
doesn't exist in Net Frmework foder in CD, please check
again.",WARNING);
//abort;
InformFinishNetFramWork();
else
//if (AskYesNo("Would you
like to restart computer now?", YES ) = YES) then
//SdFinishReboot ( szTitle, szMsg1, SYS_BOOTMACHINE, szMsg2, 0 );
// System
(SYS_BOOTMACHINE);
// abort;

// endif;
endif;
else

endif;

else
//abort;
MessageBox("Microsoft .NET Framework 2.0
installation is not completed",WARNING);
InformFinishNetFramWork();
endif;
if(CheckNetFameWorkRuning()==FALSE) then
MessageBox("Microsoft .NET Framework 2.0
installation is not completed",WARNING);
InformFinishNetFramWork();
//MessageBox("HAHHAHAH",WARNING);
endif;

end;

//===============================================================
============
//
// Topic: CheckNetFameworkCreateFile
//
// Description:
//
// My Name :
//
//===============================================================
============
function BOOL
CheckNetFameworkCreateFile(strFolderPath,fileEXE,createdFile)
BOOL blnResult;
NUMBER nvDx, nvDy, nvResult, nvType, nvSize;
STRING svVersionNumber;
STRING para;

begin
blnResult=FALSE;
para="\""+ strFolderPath^ createdFile+ "\"";
if LaunchAppAndWait (strFolderPath^fileEXE,para,
LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN)=0 then
if Is(FILE_EXISTS,strFolderPath^
createdFile)==TRUE then
blnResult=TRUE;
DeleteFile(strFolderPath^ createdFile);
else
blnResult=FALSE;
endif;
endif;
return blnResult;

end;
//===============================================================
============
//
// Topic: InformFinishNetFramWork
//
// Description:
//
// My Name :
//
//===============================================================
============
function BOOL CheckNetFameWorkRuning()

begin
if
CheckNetFameworkCreateFile(SUPPORTDIR,"[Link]","Che
[Link]")=FALSE then
return FALSE;
else
return TRUE;
endif;
end;

//===============================================================
============
//
// Topic: InformFinishNetFramWork
//
// Description:
//
// My Name :
//
//===============================================================
============

function InformFinishNetFramWork()
NUMBER nResult, nLevel, nSize, nSetupType;
STRING szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;
STRING szName, szCompany, szTargetPath, szDir, szFeatures;
BOOL bLicenseAccepted;
STRING szProductName;
STRING szMsg1, szMsg2;
BOOL bvOpt1, bvOpt2;
NUMBER nReturn;
NUMBER nType, nMediaFlags;
STRING szIgnore,svOldPath;
STRING szKey, szNumName, szNumValue, svNumValue;

begin

szTitle = @PRODUCT_NAME +" Installation is not


Completed.";
szMsg1 = "Microsoft .NET Framework 2.0 installation is not
completed" ;
szMsg2 = "Click Finish to complete %P Setup.";
SdFinish (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1,
bvOpt2);
abort;
end;

Kiểm tra Windown Install 3.1


/
=================================================================
==========
//
// Topic: CheckWindowsInstaller3_1
//
// Description:
//
// My Name :
//
//===============================================================
============
function CheckWindowsInstaller3_1()
string
svVersionNumber,svFilePath,svFilePath2,svVersionNumber2;
number rs,nDefChoice;
STRING szTitle,szMsg,szMsg1,szMsg2 ;
begin

svFilePath=WINDISK+"\\WINDOWS\\system32\\[Link]";
rs = VerGetFileVersion (svFilePath ,svVersionNumber);

if(svVersionNumber=="") then

else

if(rs ==FILE_NOT_FOUND ||
svVersionNumber< "[Link]" ) then

if( LaunchAppAndWait(SUPPORTDIR^"\\WindowsInstaller-KB893803-v2-
[Link]","",LAAW_OPTION_WAIT)<0)then

MessageBox("
WindowsInstaller3.1 installation is not completed",WARNING);
InformFinishWI3_1();

else
//if
(AskYesNo("Would you like to restart computer now?", YES ) = YES)
then

//SdFinishReboot ( szTitle, szMsg1, SYS_BOOTMACHINE, szMsg2, 0 );


// System
(SYS_BOOTWIN);

//endif;

endif;
endif;
if(CheckSencondWINDOWS()==FALSE)
then
MessageBox("
WindowsInstaller3.1 installation is not completed",WARNING);
InformFinishWI3_1();
else
endif;

endif;
end;
//===============================================================
============
//
// Topic: CheckSencondWINDOWS
//
// Description:
//
// My Name :
//
//===============================================================
============
function BOOL CheckSencondWINDOWS()

string
svVersionNumber,svFilePath,svFilePath2,svVersionNumber2;
number rs;

begin
svFilePath=WINDISK+"\\WINDOWS\\system32\\[Link]";
rs = VerGetFileVersion (svFilePath ,svVersionNumber);
if(svVersionNumber<"[Link]") then

return FALSE;

else
return TRUE;

endif;
end;

Tự động backup và xóa file backup cũ


trong SQL Server 2005 Express.
Kết hợp giữa VBScript và T-SQL với Task Manager trong Windows để tạo user và hệ
thống backup trong SQL Server 2005 Express Edition.

Chú ý : Tất cả những file này được save tại E:\SQL_Backup\scripts. Bạn có thể thay
đổi đường dẫn thư mục tùy ý.

Bước 1 : tạo T-SQL script:

Save script định dạng *.sql, đường dẫn : E:\SQL_Backup\scripts\[Link] 


DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @hourStr CHAR(2),
@minStr CHAR(2)
--month variable
IF (SELECT LEN(CAST(MONTH(GETDATE()) AS CHAR(2))))=2
SET @monthSTR=CAST(MONTH(GETDATE()) AS CHAR(2))
ELSE
SET @monthSTR= '0' + CAST(MONTH(GETDATE()) AS CHAR(2))
--day variable
IF (SELECT LEN(CAST(DAY(GETDATE()) AS CHAR(2))))=2
SET @daySTR=CAST(DAY(GETDATE()) AS CHAR(2))
ELSE
SET @daySTR='0' + CAST(DAY(GETDATE()) AS CHAR(2))
--hour variable
IF (SELECT LEN(DATEPART(hh, GETDATE())))=2
SET @hourStr=CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
ELSE
SET @hourStr= '0' + CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
--minute variable
IF (SELECT LEN(DATEPART(mi, GETDATE())))=2
SET @minStr=CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
ELSE
SET @minStr= '0' + CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
--name variable based on time stamp
SET @dateString=CAST(YEAR(GETDATE()) AS CHAR(4)) + @monthStr + @dayStr + @hourStr +
@minStr
--=================================================================
DECLARE @IDENT INT, @sql VARCHAR(1000), @DBNAME VARCHAR(200)
SELECT @IDENT=MIN(database_id) FROM [Link] WHERE [database_id] > 0 AND NAME NOT
IN ('TEMPDB')
WHILE @IDENT IS NOT NULL
BEGIN
SELECT @DBNAME = NAME FROM [Link] WHERE database_id = @IDENT
/*Change disk location here as required*/
SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK =
''E:\SQL_Backup\'+@DBNAME+'_db_' + @dateString +'.BAK'' WITH INIT'
EXEC (@SQL)
SELECT @IDENT=MIN(database_id) FROM [Link] WHERE [database_id] > 0 AND
database_id>@IDENT AND NAME NOT IN ('TEMPDB')
END

Bước 2 : tạo file VBScript 

Tiếp theo,chúng ta cần tạo một file VBScript để xóa những database cũ .Script này
cũng được ghi tại file log .
 Bạn cần tạo một file trống E:\SQL_Backup\scripts\[Link] để save log của
file bị xóa.
 Đặt script theo đường dẫn E:\SQL_Backup\scripts\[Link]
 On Error Resume Next
 Dim fso, folder, files, sFolder, sFolderTarget
 Set fso = CreateObject("[Link]")

 'location of the database backup files
 sFolder = "E:\SQL_Backup\"

 Set folder = [Link](sFolder)
 Set files = [Link]

 'used for writing to textfile - generate report on database backups deleted
 Const ForAppending = 8

 'you need to create a folder named “scripts” for ease of file management &
 'a file inside it named “[Link]” for delete activity logging
 Set objFile = [Link](sFolder & "\scripts\[Link]", ForAppending)

 [Link] "================================================================"
& VBCRLF & VBCRLF
 [Link] " DATABASE BACKUP FILE REPORT "
& VBCRLF
 [Link] " DATE: " & FormatDateTime(Now(),1) & ""
& VBCRLF
 [Link] " TIME: " & FormatDateTime(Now(),3) & ""
& VBCRLF & VBCRLF
 [Link] "================================================================"
& VBCRLF

 'iterate thru each of the files in the database backup folder
 For Each itemFiles In files
 'retrieve complete path of file for the DeleteFile method and to extract
 'file extension using the GetExtensionName method
 a=sFolder & [Link]

 'retrieve file extension
 b = [Link](a)
 'check if the file extension is BAK
 If uCase(b)="BAK" Then

 'check if the database backups are older than 3 days
 If DateDiff("d",[Link],Now()) >= 3 Then

 'Delete any old BACKUP files to cleanup folder
 [Link] a
 [Link] "BACKUP FILE DELETED: " & a
 End If
 End If
 Next

 [Link]
"================================================================" & VBCRLF &
VBCRLF

 [Link]

 Set objFile = Nothing
 Set fso = Nothing
 Set folder = Nothing
 Set files = Nothing

Bước 3 : tạo tệp bat kết hợp T-SQL Script và VBScript.

Chúng ta cần tạo tệp BAT để kết hợp cả 2 script vừa tạo trên.Nội dung của tệp bat thực hiện
dựa trên [Link] tệp BAT này tại : E:\SQL_Backup\scripts\[Link] 
REM Run TSQL Script to backup databases
sqlcmd -S<INSTANCENAME>-E -i"E:\SQL_Backup\scripts\[Link]" REM Run
database backup cleanup script
E:\SQL_Backup\scripts\[Link]

Bước 4 : tạo tác vụ backup định kì với Windows Task Cheduler.

Mục đích để backup định kì,có thể là ngày,tuần,tháng tùy thích.


Mở the Control Panel -> Scheduled Tasks hoặc Start -> All Programs -
> Accessories -> System Tools -> Scheduled Tasks. 

Khi chứng thực Windows để chạy script T-SQL,sử dụng tài khoản Windows
là db_backupoperator (đây là tài khoản sử dụng cho mọi database)
 Mở "Scheduled Tasks"
 Click Add Scheduled Task
 Mở "E:\SQL_Backup\scripts" folder và click [Link]
 Chọn thời gian định kì cần backup.
 Nhập tài khoản db_backupoperator vào.
 Kết thúc quá trình tạo tác vụ backup định kì.

You might also like