ช่วงนี้มี 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 ::runscript@gmail.com ::DS123 set SERVER="127.0.0.1:25" set USER="runscript" set PW="DS123" set FROMNAME="runscript@gmail.com" set TO="pingResult@gmail.com" set CC="chatri@debuggingsoft.com" 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 ครับ
- เปลี่ยนเป็น Power Shell
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.