[Database] ข้อควรระวังในการใช้ TABLOCKX

brass padlock on rusty metal wire

ก่อนอื่นเลยขอบอกเลยว่า ปัญหานี้เกิดจากความสะเพร่าของผมเอง (ยังดีที่ไม่ส่งโปรแกรมให้ลูกค้า ไม่งั้นยาว) เกิดจากการเขียน Query ที่ผิดพลาด ทำให้ Table ใน Database ถูก Lock ไม่ให้แก้ไข ซึ่งส่งผลให้ User คนอื่นๆทำงานไม่ได้ เดี๋ยวจะงงไปกันใหญ่ว่าทำไมผิดเขียนโปรแกรมแล้ว Table ดัน Lock ได้  ผมของอธิบายที่มากันก่อน ปัญหา การแก้ไข หมายเหตุ การ Lock แบบนี้จะเป็นแบบ Exclusive คือ บังคับให้ Table นั้นมีได้เพียง 1  Connection หรือ 1 User เท่านั้น โดยใน Reference

[C#] สรุปข้อดี-ข้อเสียในการอ่านกับเขียน Excel จากวิธีต่างๆ

พอดีช่วงนี้มีงานที่ให้ดึงไฟล์จากเว็บมา และเรามาจัดแต่งรูปแบบไฟล์ Excel นั้น เพื่อ Import เข้าระบบครับ โดยผมได้ทดลองศึกษามา และขอเปรียบเทียบข้อดีข้อเสียไว้ เผื่อมีคนอื่นมาใช้งานครับ แนวทางที่ 1: การใช้ OLEDB จุดเด่น ทำงานได้รวดเร็ว ไม่จำเป็นต้องติดตั้ง Microsoft Office ลงที่เครื่อง Data Type ของแต่ละ Column ระบบจะมองเป็นจากแนวแรกที่อ่าน (อารมณ์เดียวกับการใช้ตารางครับ) จุดด้อย การอ่านข้อมูลเฉพาะตามเงื่อนไข หรือ Pattern ที่กำหนดนั้นทำได้ยาก การแก้ไขไฟล์ Excel นั้นทำได้ยาก แนวทางที่ 2: การใช้ Excel Interop Object จุดเด่น สามารถจัดการอ่าน/เขียนไฟล์ Excel ที่ซับซ้อนได้ เช่น อ่านตาม Worksheet และอ่านไปที่ Cell A23 ถึง F23 เป็นต้น จุดด้อย ต้องลง Microsoft Office และต้องดูด้วยว่าเวอร์ชันของ DLL นั้นเหมาะสมกับรูปแบบไฟล์ที่ต้องการจัดการ หรือไม่ ทำงานได้ช้า เมื่อเทียบกับแนวทางที่ 1 แนวทางที่ 3: ใช้ Component เสริม ที่เป็น Third Party ครับ ซึ่งมีอยู่มากมายลงหาจาก Google ดูครับ จุดเด่น ไม่ต้องมี Code กับการจัดการในส่วนของการติดต่อไฟล์มากมาย จุดด้อย ต้องศึกษาคุณสมบัติของ Component แต่ละตัวว่าเหมาะสมกับงานที่เราต้องการใช้ง่าน หรือไม่ เพราะ ถ้า Requirement เปลี่ยนที่ เราอาจจต้องเปลี่ยน Component เสริม ครับ แนวทางที่ 4: ใช้ Excel VBA จัดการ จุดเด่น…

[XM] 1st Time: ไปประชุมผู้ถือหุ้นครั้งแรก

สำหรับนักลงทุน ผลประโยชน์ที่ได้รับการจากลงทุนนอกจากความรู้ด้านการเงินแล้ว ยังมีผลประโยชน์ที่ได้จากส่วนต่าง (Capital Gain) ที่เกิดจากการขายหุ้นนั้นออกไป และสิทธิประโยชน์ต่างๆในหุ้น(Corporate Action) ถ้าใครงงเจ้าตัว Corporate Action ลองนึกตัวอย่างใกล้ตัวที่สุด คือ XD, XR และตระกูล X ทั้งหลาย ตอนนี้ผมขอโฟกัสที่ XM นะครับ โดยตัว XM คือ สิทธิที่ได้รับการเข้าประชุมของหุ้นที่เราได้ถืออยู่นะครับ XM มันมีดีอย่างไร เป็นงานแรกที่เราจะได้พบผู้บริหารได้อย่างใกล้ชิด มีโอกาศสอบถามข้อสงสัยต่างๆได้ ได้พบปะ นักลงทุนคนอื่นๆ และแลกเปลี่ยนความคิดเห็นครับ อาหารฟรี และของที่ระลึกครับ (มีบางคนถือหุ้น 100 หน่วย มาเพื่อเดินสายในงานนี้ โดยเฉพาะนะครับ) การไปใช้สิทธิ XM เราต้องเตรียมตัวอย่างไร อ่านเอกสารที่ได้มา อย่างครบถ้วนครับ จงอย่าลืมว่าเราซื้อหุ้น หมายถึง เราเป็นเจ้าของคนนึงของบริษัทที่เราสนใจนะครับ ซึ่งจะต่างกับการซื้อพันธบัตร หุ้นกู้ ที่เราจะเป็นเจ้าหนี้ของบริษัท ตรวจสอบเอกสารที่แนบมาครับ โดยจะมีอย่างน้อย 2 อย่าง ได้แก่ แบบฟอร์มลงทะเบียน และ หนังสือเชิญชวนครับ (แต่บางทีอาจจะมีรายงานความเห็นของที่ปรึกษาทางการเงิน แนบมาเพิ่มด้วยครับ ศึกษาเส้นทางการไปสถานที่ประชุม เมื่อถึงวันประชุมผู้ถือหุ้น ? เข้านอนเร็วๆ จะได้ไม่ตื่นสาย อย่าลืมเอกสารสำคัญที่ทางบริษัทส่งให้ครับ และเอกสารแสดงตัวตน เช่น บัตรประจำตัวประชาชน หรือเอกสารการรับอำนาจในการใช้สิทธิแทนครับ อย่าลืมสติไปครับ สำหรับหุ้นที่ผมไปใช้สิทธิในการประชุมครั้งนี้ คือ IFEC ครับ พอดีวันที่ประชุมเป็นวันศุกร์ที่ 24 ตุลาคม พ.ศ. 2557 ปกติคนส่วนใหญ่จะลาหยุดกัน ผมเลยถือโอกาสมาด้วย เพื่อมาฟังการประชุมผู้ถือหุ้นครั้งแรกครับ โดยเมื่อมาถึงสถานที่ประชุม สิ่งที่เราต้องทำ คือ ตรวจสอบเอกสาร ลงทะเบียนเข้าประชุม โดยพนักงานจะนำตัวอ่าน Barcode มาอ่านข้อมูลจากแบบฟอร์มลงทะเบียนไปนะครับ ทางที่ดีอย่าให้ใบนี้ยับ หรือขาด เด็ดขาดครับ หาสถานที่ดีๆครับ เผื่อมีสื่อต่างๆ เช่น Power Point หรือ Video…

ฟาสต์ฟู้ดธุรกิจ

ผมเริ่มมาอ่านหนังสือเล่มนี้จริงตอนปี 3 ปลายๆ ปี 4 ครับ เพราะเจอกับโปรเจคจบ ที่ท้อ เพราะปัญหาเรื่องสมาชิกกลุ่มที่กินแรง เพื่อนเลยเอาหนังสิอเล่มนี้มาให้อ่านกันครับ ตอนนี้ผมทำ List ไว้เผื่อตามล่าในงานหนังสือ พรุ่งนี้ หนังสือชุด ฟาสต์ฟู้ดธุรกิจ No. Series หนังสือ รูปปก ชื่อหนังสือ มีแล้ว ? 1 ฟาสต์ฟู้ดธุรกิจ พ.16 ฟาสต์ฟู้ดธุรกิจ พ.16 ✓ 2 ฟาสต์ฟู้ดธุรกิจ ๒ เดาะโลกดีดี แล้วตีลังกา ✓ 3 ฟาสต์ฟู้ดธุรกิจ ๓ มองโลกง่ายง่ายสบายดี  พ.17 ✓ 4 ฟาสต์ฟู้ดธุรกิจ ๔ ฝันใกล้ใกล้ไปช้าช้า พ.12 ✓ 5 ฟาสต์ฟู้ดธุรกิจ ๕ อารมณ์ดีกับชีวิต พ.10 ✓ 6 ฟาสต์ฟู้ดธุรกิจ ๖ ชีวิตไม่ยากถ้าตั้งโจทย์ง่าย ✓ 7 ฟาสต์ฟู้ดธุรกิจ ๗ เหยียบโลกไว้ไม่ต้องเครียด พ.9 ✓ 8 ฟาสต์ฟู้ดธุรกิจ ๘ พลิกมุมคิดชีวิตเปลี่ยน พ.11 ✓ 9 ฟาสต์ฟู้ดธุรกิจ ๙ แพ้ได้แต่ไม่ยอม ✓ 10 ฟาสต์ฟู้ดธุรกิจ ๑๐ ปัญหาคือยาวิเศษ ✓ 11 ฟาสต์ฟู้ดธุรกิจ ๑๑ ฝันเรื่อยเรื่อย เหนื่อยก็พัก พ.7  ✓ 12 ฟาสต์ฟู้ดธุรกิจ ๑๒ ไม่ตั้งใจแต่ทำไมจึงสุข  ✓ 13 ฟาสต์ฟู้ดธุรกิจ ๑๓ จุดหมายที่ปลายเท้า  ✓ 14 ฟาสต์ฟู้ดธุรกิจ สุข…

เวลาพัฒนาระบบ บางครั้งทำไมเราถึงต้องกำหนดให้ ID ติดลบ

ในการทำระบบงานต่างๆ ไม่ว่าจะระบบเล็ก หรือเป็นระบบใหญ่ขึ้นมาสักระบบนึง แน่นอนเลยว่าข้อมูลย่อมมีมหาศาลมากมาย แต่เราจำเป็นไหม ? ว่าจะต้องทำหน้าจอขึ้นมา เพื่อจัดการกับข้อมูลเหล่านี้ คำตอบ คือ ไม่ครับ ในข้อมูลส่วนที่ไม่ต้องมีการแก้ไขบ่อยๆ เช่น ข้อมูลจังหวัด ข้อมูลประเทศ หรือ เป็นข้อมูลราคาหุ้นจากตลาด SET หรือ MAI ครับ ปัญหาถัดมา คือ เราทำอย่างไร เพื่อไม่ให้ข้อมูลเหล่านี้มันหายไป ตอน Migrate ระบบ หรือระหว่างการใช้งาน เพื่อไม่ให้ User มือบอนไปกดลบได้ครับ ? ทางเลือกนึงที่ใช้ คือ การกำหนด Flag ขึ้นมา หรือเพิ่มคอลัมน์ในฐานข้อมูลเราแหละครับ แต่ถ้ามองไปอีกที การเพิ่ม Column = เพิ่มพื้นที่ในการจัดเก็บ ? หรือ เราแยก Script ขึ้นมา เพื่อ Initial ข้อมูล โดยเฉพาะ แต่เรามั่นใจได้อย่างไรว่า Script มันจะไม่หลาย ยิ่งหลาย Site นี่โคตรงง 555 และ Idea สุดท้ายครับ คือ การกำหนด ID ของ Row นั้นในฐานข้อมูลให้ติดลบครับ ทำไมถึงต้องทำ ID ติดลบหละ ง่ายแก่การ Clear Data เช่น จาก UAT ไป Production ข้อมูลที่เป็นค่า Default เหล่านี้ จะไม่ถูกลบออกไปด้วยครับ สามารถกำหนด Query เพื่อดึงข้อมูลที่เราต้องการให้แก้ไขได้ เช่น Price Source มีข้อมูล Default คือ ตลาด SET (-1) และ ตลาด MAI (-2)…

งานสัปดาห์หนังสือแห่งชาติ ปี 57(กอเอ๋ย กอ ไก่)

พยายามจะเขียน Blog เรื่องนี้แบบมานานและ แต่ความขี้เกียจเข้าครอบงำ 555 โดยในวันนี้ผมมาเขียนเกี่ยวกับงานหนังสือแหละว่าไปมามีอะไรบ้าง และแนะนำบูธในส่วนที่ผมสนใจ โดยเป็นด้าน Computer กับการลงทุนครับ จริงๆวันนี้ไม่อยากไปหรอก เพราะคนเยอะมว๊ากกก แต่ที่บ้านไฟดับ เลยไม่รู้จะทำอะไรช่วงบ่าย ส่วนช่วงเช้าจัดต้นไม้ตามประสาพ่อบ้าน โดยวันนี้ผมออกจากบ้านประมาน 12.30 แดดร้อนๆ นั่ง 511 ไปลง Terminal 21 หลังจากที่ไม่ได้นั่งรถเมล์มานานมาก (ให้น้องขับรถไปส่งไปรับตลอด 55) สิ่งที่สังเกตุ คือ รถเมล์มีป้ายนี้ด้วยเหรอ แนะนำสถานที่ แต่ที่สงสัย ทำไมโซนปิ่นเกล้าถึงไม่เป็นเซนทรัลปิ่นเกล้าหว่า ? หลังจากนั่งรถเมล์ผ่านยาวนาน ผ่านแยกรถติดหลายแยกประมาณ 2 ชั่วโมงกว่าๆ (อย่างกะนั่งรถจากกรุงเทพฯ ไปนครนายกเลย) ผมมาถึง Landmark ที่คุ้นเคยอย่าง Terminal21 จากนั้นมุดดินลงไป MRT จากสถานีสุขุมวิทไป ศูนย์ประชุมแห่งชาติสิริกิติ์ 16 บาทถ้วนครับ สิ่งที่ผมสังเกตุได้ คือ ตัวสถานีมีการนำโฆษณามาติดตั้งแล้ว อนาคตหุ้น BMCL โตแน่ๆ (แอบถืออยู่ อิอิ) พอออกจากขบวนรถไฟเนี่ยแหละนรกเลย คนเต็มไปหมด (จริงๆทางสถานีควรจัดการ Flow การเดินให้ดีกว่านะ เพราะมีบางช่วงที่มีการเดินสวนกันทำให้ การจราจรติดขัด หลังจากลงทะเบียนเข้างานเรียบร้อย ผมได้เดินสำรวจงานเลย โดยเลือกหนังสือที่สนใจ และ Mark เอาไว้รอวันศุกร์หน้าจะมาไล่ซื้อ ถ้างบพอหมดนะ บูธแรกของตลาดหลักทรัพย์ อยู่ตรงข้ามกับซุ้มลงทะเบียนเลยครับ แว๊บไปดูเจอหนังสือเล่มนี้ครับ ไม่รู้มันเกี่ยวกับงานที่ทำปะ แต่แพงมาก 555 ดูและวางก่อน บูธ L62 CU-TEP มัดรวม 660 บาท แพลนเอาไว้เตรียมสอบปริญญาโทปีหน้า Finance Basics Secrets  ราคา 150 ลด -15% อันนี้เท่าที่อ่านดูเป็นการเปลี่ยนชื่อกับวิธีการนำเสนอนะ มองเหมือนกับพวกบัญชีแหละ แต่มีการจัดเรียงเนื้อหาให้ง่ายขึ้นครับ บูธ D10 จาก 1clickidea.com อันนี้น่าสนใจครับ โดยของร้านนี้จุดเด่น คือ หนังสือเกี่ยวกับการสร้าง…

[DB2] CALL SYSPROC.ADMIN_CMD( ‘REORG TABLE xxxx’ ) ?

IBM DB2

ทำงานเกี่ยวกับ DB2 จริงๆจังๆซักพักใหญ่แล้ว เคยสงสัยไหมว่าเวลาทำ SQL Script เราจะเจอคำสั่งชุดนึงที่มักจะอยู่ในลำดับท้ายๆ ของไฟล์ SQL Script นั้น คือ แล้ววันนี้เป็นโอกาสอันที่ ที่ผมมีเวลาว่าง เพราะเป็นวันหยุด 555 เดี๋ยวผมมาอธิบายกันว่าเจ้าคำสั่ง CALL SYSPROC.ADMIN_CMD( ‘REORG TABLE xxxx’ ) มันมันมีไว้ทำอะไรกัน ?โดยเราจะมองที่ละส่วนกัน เผื่อคนที่ยังไม่รู้ครับ ส่วนที่ 1: CALL SYSPROC.ADMIN_CMD คือ การเรียกใช้ Store procedure ของระบบ ซึ่งอยู่ใน Schema SYSPROC โดยเจ้า ADMIN_CMD คือ Procudure ที่เอาไว้รันคำสั่งในในระดับ administrative commands เพื่อจัดการกับ Database ของเราครับ โดยสิ่งที่เราสามารถจัดการได้ผ่านเจ้า ADMIN_CMD ได้แก่ RUNSTATS, PRUNE HISTORY/LOGFILE หรือ REORG INDEXES/TABLE เป็นต้นครับ ตัวอย่างการใช้งาน ส่วนความสามารถอื่นๆ สามารถดูเพิ่มเติมได้ที่นี้ครับ ADMIN_CMD procedure – Run administrative commands ส่วนที่ 2: ‘REORG TABLE xxxx’ คือ Command String หรือเป็นคำสั่งที่เราส่งให้ ADMIN_CMD ไปจัดการให้ โดยคำสั่งที่เราสนใจในตอนนี้ คือ ‘REORG TABLE xxxx’ ครับมากันที่คำสั่ง REORG มีหน้าที่โดยรวมคล้ายกับการ Defragment ใน Harddisk โดยมีการเคลียร์พื้นที่ว่างใน Page จัดการข้อมูล ถ้าเราเพิ่มคำสั่ง เมื่อไหร่เราถึงต้องใช้คำสั่งนี้หละ เวลาใช้งานจริงต้องเขียนอย่างไร ? แล้วเราจะรู้ได้อย่างไรว่า Table ของเรา ต้องมีการ…

[DB2] DB21007E seen when DB2 is accessing a text file

IBM DB2

จริงๆ ฺBlog อันนี้เป็นสาเหตุของ Blog นี้ครับ [PowerShell] Convert Unicode Text or SQL File To ASCII โดยสาเหตุของ Error Message นี้เกิดจากตัว line termination (ตัวบอกการขึ้นบรรทัดใหม่) ไม่ได้ใช้ตามมาตรฐาน ANSI ซึ่งจะใช้ (Carriage Return, ตัวย่อ CR, ASCII Code =13) เมื่อเรานำไฟล์จาก Windows ไปใช้งานบน Unix หรือ Linux นะครับ โดยการแก้ไขนั้นง่ายนิดเดียวครับ Reference

[DB2] WORKING WITH ISOLATION LEVEL

IBM DB2

ดองไว้นานมาสำหรับ Blog นี้ 555 เพราะตอนแรกได้ทำ Research เพิ่มคิวการทำงาน โดยใช้ Database เป็นตัวเก็บคิว ซึ่งปัญหาที่จะพบ คือ เราต้องควบคุมการดึงข้อมูลใน Step ต่างๆ เพื่อไม่ให้เกิดปัญหาหลุคคิวได้ โดยทางฝั่ง SQL Server มีคำสั่งใช้งานตรงตัวอยู่แล้ว อาจจะมีฟีเจอร์เพิ่มขึ้นมาจากที่กำหนดไว้ใน ANSI บ้าง ซึ่งผมมาเขียนสรุปใน Blog ถัดไปครับ คราวนี้เรามาลองดูที่พระเอกของเราบ้าง อย่าง DB2 เนี่ย ว่าเราใช้งาน ISOLATION LEVEL กันอย่างไรครับ ก่อนอื่น ผมขอสรุปเรื่อง ISOLATION LEVEL แบบรวบรัดสุดๆก่อนนะ ว่ามันมีอะไรบ้าง และทำไมต้องมีนะISOLATION LEVEL คือ ระดับการจัดการของข้อมูล เพื่อให้ Transaction นั้นถูกต้องโดยไอ้เจ้า ISOLATION LEVEL ตามมาตรฐาน ANSI ได้กำหนดไว้ว่าทุกๆ DBMS ต้องมีอย่างน้อย 4 อย่าง ได้แก่ ANSI Isolation Level DB2 Isolation Level READ UNCOMMITTED Uncommitted read (UR) READ COMMITTED (default) Cursor stability (CS) REPEATABLE READ Read stability (RS) SERIALIZABLE Repeatable read (RR) หมายเหตุ: ตัว DB2 ตัว DBMS default เป็น Cursor stability ครับ ตัวอย่างการใช้งานบ้าง Reference

[PowerShell] Convert Unicode Text or SQL File To ASCII

powershell

สำหรับที่มาของ Script ชุดนี้นี่ทำ Team วุ่นวายเลย เรื่องก็มีอยู่ว่าเวลาพัฒนาระบบต่างๆมันมีในส่วนของ Source Code และ SQL Script ซึ่งต้องนำไป Run ใน Enviromemt ของ Test, Dev หรือ Production ก็ตาม แต่เพราะความสะเพร่าของผมเองที่ Save File Script เป็นแบบ Unicode เกิดปัญหาขึ้นเมื่อนำไป Run บน Database Server DB2 บนเครือง AIX จะเกิด Error Message ดังนี้ Error DB21007E seen when DB2 is accessing a text file เพราะ End of File ของแต่ละ Encoding ในระบบปฏิบัติการ(Windows, Linux หรือ Unix) แต่ละแบบนั้นไม่เหมือนกัน ทางแก้ คือ เปลี่ยนมาใช้ Encoding ที่เป็น ANSI เพราะเป็นมาตรฐานกลางครับ แต่งานงานนึง มันคงไม่ได้มี Script แค่อันเดียว ผมเลยทำ PowerShell Script สำหรับแปลง Encoding ของ Text File หรือ SQL File จาก Unicode ไปเป็น ANSI ครับ (จริงๆอยากเขียนเป็น Unix Shell เพราะไม่ได้ทำนานและ แต่ขึ้เกียจลง VM 55) ต่อมาเราก็มาทดสอบกัน ขั้นแรก: เตรียมไฟล์ที่มี Encoding Unicode ดังรูป…