Category Database

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

ในการทำระบบงานต่างๆ ไม่ว่าจะระบบเล็ก หรือเป็นระบบใหญ่ขึ้นมาสักระบบนึง แน่นอนเลยว่าข้อมูลย่อมมีมหาศาลมากมาย แต่เราจำเป็นไหม ? ว่าจะต้องทำหน้าจอขึ้นมา เพื่อจัดการกับข้อมูลเหล่านี้ คำตอบ คือ ไม่ครับ ในข้อมูลส่วนที่ไม่ต้องมีการแก้ไขบ่อยๆ เช่น ข้อมูลจังหวัด ข้อมูลประเทศ หรือ เป็นข้อมูลราคาหุ้นจากตลาด SET หรือ MAI ครับ ปัญหาถัดมา คือ เราทำอย่างไร เพื่อไม่ให้ข้อมูลเหล่านี้มันหายไป ตอน Migrate ระบบ หรือระหว่างการใช้งาน เพื่อไม่ให้ User มือบอนไปกดลบได้ครับ ? ทางเลือกนึงที่ใช้ คือ การกำหนด Flag ขึ้นมา หรือเพิ่มคอลัมน์ในฐานข้อมูลเราแหละครับ แต่ถ้ามองไปอีกที…

[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…

[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 แบบรวบรัดสุดๆก่อนนะ ว่ามันมีอะไรบ้าง…

[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…

[SQLite] System.Data.SQLite.SQLiteConnection cannot be cast to …

C# Logo

เวันนี้เขียนโปรแกรม C# กับ SQLite อยู่ดีๆ Bulid ผ่านะ แต่ Runtime Error โดยมี Message แจ้ง ดังนี้ [A]System.Data.SQLite.SQLiteConnection cannot be cast to [B]System.Data.SQLite.SQLiteConnection. Type A originates from ‘System.Data.SQLite, Version=1.0.92.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139’ in the context ‘Default’ at location ‘C:\Users\Chatr_000\Desktop\InvConfig(AutoRegisDLL)\InvConfig\bin\Release\System.Data.SQLite.dll’. Type B originates from ‘System.Data.SQLite,…

[DB2] SELECT TOP(1) IN DB2

IBM DB2

จริงๆวางโครงบทความนี้มานานและ แต่เพิ่มจะมีโอกาศได้เขียนจริงๆจังๆ ซะที เข้าที่ปัญหาเลย คือ ว่าเราต้องการ Query เพื่อดึงข้อมูลในแถวแรกขึ้นมาก หากเป็น MySQL, MS SQL Server เราสามารถใช้คำสั่ง TOP(จำนวนแถวที่ต้องการได้เลย) แต่ถ้าเป็น DB2 จะมีคำสั่ง (ใช้ได้กับ DB2 8.1 ขึ้นไป) โดยเพิ่มเข้าไป ดังนี้ครับ FETCH FIRST 1 ROW ONLY ตัวอย่างการใช้งานจริง โดยเทียบ SYNTAX เมื่อใช้กับ MS SQL Server ครับ

[SQL SERVER] Invalid character value for cast specification

Microsoft SQL Server

วันนี้ผมแก้ App เก่าๆของที่บริษัทแล้วเกิดเจอปัญหา Invalid character value for cast specification ตอนนั้นไล่ข้อมูลแทบตาย เจอมวลมหา Function Call และไปพบว่ามันผิดที่วันที่ (Date) ที่มีการจัด Format ผิด โดยไอ้เจ้าปัญหา Invalid character value for cast specification มันมีความหมายว่าข้อมูลทางเราเป็น input ส่งให้ Database แล้วตัว DBMS เองไม่สามารถแปลงข้อมูล และเก็บลงฐานข้อมูลได้นั้น ซึ่งสาเหตุอาจจะเกิดจากหลายๆสาเหตุ เช่น ข้อมูลประเภท Date ที่ Format ผิด หรือข้อมูลประเภท…