ช่วงนี้มี UAT และต้องการนำ DB จาก SITE งานมาขึ้นที่ Environment ของบริษัทครับ โดยผมได้เขียนโครง BAT Script ง่ายๆ และก็ให้พี่ที่ทำงานปรับปรุงต่อนิดหน่อย โดยมีสาระสำคัญ ดังนี้
- ขั้นแรก โครงสร้างโฟลเดอร์ทีมี
- WAITING เอาไว้ใส่ไฟล์ DB ในรูปแบบ Zip ไฟล์ โดยข้างในมีไฟล์ Script ที่จำเป็นในการสร้างฐานข้อมูล และมีโฟลเดอร์ย่อย DBDATA ที่เก็บข้อมูล Back ของฐานข้อมูลในรูปแบบ .ixf ที่ Export มาจากเครื่อง AS400
- ARCHIVE เอาไว้เก็บไฟล์ .Zip Restore เข้า DB เสร็จแล้ว
- ขั้นที่สอง กำหนด Step การทำงาน ดังนี้
- กวาดหาไฟล์ .Zip ที่วางไว้ในโฟลเดอร์ WAITING
- เตรียมค่า Setting สำหรับส่ง E-mail
- ตรวจสอบว่ามีไฟล์ในโฟลเดอร์ WAITING ว่ามี หรือไม่ ถ้าไม่มีก็ไม่จำเป็นต้องทำงานต่อ
- แค่ถ้ามีข้อมูล จะมี Step การทำงาน ดังนี้
- ไฟล์ BAT Script ที่ได้มี ดังนี้ครับ (อย่าลืมเอา Comment ภาษาไทยออกก่อนนะครับ)
::GET LASTTEST ZIP FILE AND STORE IN VARIABLE
FOR /F %%I IN ('DIR WAITING\*.zip /B /OD') DO SET LATESTFILENAME=%%I
::STORE E-MAIL PARAMETER VALUE IN VARIABLE
::[email protected]
::DS123
set SERVER="127.0.0.1:25"
set USER="runscript"
set PW="DS123"
set FROMNAME="[email protected]"
set TO="[email protected]"
set CC="[email protected]"
set SUBJECT="AUTO DEPLOY DB RESULT"
set BODY="Deploy DB Success"
IF [%LATESTFILENAME%]==[] (
ECHO NO FILE
) ELSE (
IF EXIST %CD%\WAITING\%LATESTFILENAME% (
::ลบไฟล์ที่มีชื่อขึ้นต้นด้วย result ออก
DEL result*.txt
::ย้ายไฟล์ไปยังโพลเดอร์ WAITING
MOVE /Y %CD%\WAITING\%LATESTFILENAME% .
ECHO %CD%\WAITING\%LATESTFILENAME%
::UNZIP IT
"C:\Program Files\7-Zip\7z.exe" x %CD%\%LATESTFILENAME% -y
::PROCESS DROP & CREATE
db2 "connect to BFMUATC user invest using invest"
db2 -tvf "0_DROP_CREATE_DB.txt" -z result0.txt
::หน่วงเวลาให้สร้าง Database เสร็จ
TIMEOUT /T 700
db2 "connect to BFMUATC user invest using invest"
db2 -tvf "2_DB2INST1_CREATE_DB_PERMISSION.txt" -z result2.txt
db2 -tvf "3_INVEST_CREATE_TABLE.txt" -z result3.txt
db2 -tvf "31_GRANT_USER_ON_TABLE.txt" -z result31.txt
cd DBDATA
db2move BFMUATC import -u invest -p invest
cd ..
db2 "UPDATE SYSTEMINFORMATION SET SYSTEMPWD = SYSTEMUSER"
db2 -tvf "5_INVEST_INDEX_VIEW_TRIGGER_FUNC.txt" -z result5.txt
db2 -td@ -vf "51_FUNC_SHIFTDATE.txt" -z result51.txt
db2 -tvf "7_CHECK_SCRIPT.txt" -z result7.txt
db2 -tvf "8_ADD_DEPLOYTIME.txt" -z result8.txt
db2 COMMIT WORK
db2 CONNECT RESET
db2 TERMINATE
::Kill Process 7zip ถ้ามันยังทำงานอยู่
taskkill /im 7z.exe /T /F
::ย้ายงานที่ทำเสร็จแล้วไปยัง โพลเดอร์ ARCHIVE
MOVE /Y %CD%\"%LATESTFILENAME%" %CD%\ARCHIVE
::SEND E-MAIL RESULT
blat -server %SERVER% -f %FROMNAME% -u %USER% -pw %PW% -to %TO% -cc %CC% -subject %SUBJECT% -body %BODY%
)
)- ขั้นที่สาม เอาไฟล์ BAT ที่ได้ไปฝาก Schedule ของ Windows ให้รันครับ โดยของผม Set ให้มันทำงานทุกวันตอน 3 ทุ่ม และตี 4.30 ครับ
- สุดท้ายและ สำหรับ Script นี้ สิ่งที่ควรปรับปรุง
- เปลี่ยนเป็น Power Shell
- แก้ไข Code ให้รองรับการกวาดข้อมูลตั้งแต่ใน E-mail เลย จะได้ไม่ต้อง VPN เอาไฟล์มาหยอดครับ
- แก้ไข Code ให้ตรวจสอบสถานะการ Restore DB ว่าสำเร็จ หรือไม่ และให้ส่ง E-mail ครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.
