เมื่อ Column Index ใช้กับ MS SQL Server ไม่ได้ !!!

หลังจากทีเขียน Code กับ Product ที่ใช้กับตัว DB2 มานาน คราวนี้มีโอกาสได้ย้ายบ้าน จริงไม่เชิงย้ายหรอกครับ แค่เอา Product ตัวเดิม จากที่มันใช้ได้กับ DB2 ไปใช้กับ MS SQL Server ให้ได้ครับ

พอให้น้องที่ทำงานมาลองทำ POC ดู อ้าว Error Table มันมี Column ที่ชื่อว่า Index

  • DB2 - ยอมได้
  • MS SQL Server - ไม่ยอมมมมมม เป็น Reserve Word

แล้วทางแก้หละ จะทำ view ครอบหลอกก็ไม่ได้และ มีทั้ง

  • CRUD
  • และ Index เป็น Reserve Word ของ MS SQL Server

สิ่งที่ผมทำ มีดังนี้ครับ

  • เพิ่ม Column ใหม่ไป เช่น FUNDINDEX และ Defaut Data ให้เหมือนกับ Column Index อันเดิม
  • แก้ที่ App สนใจที่ฝั่ง Master Data ก่อน
    - Site ที่เป็น DB2 - Insert ทั้ง 2 Column ครับ ทั้ง INDEX และ FUNDINDEX เลย (มันต้องมีช่วงการเปลี่ยนผ่านที่ Site  ลูกค้านะครับ) อาจจะทำ Trigger ให้มาใส่เพิ่ม ให้กับ Column INDEX เดิม
    - Site ที่เป็น MS SQL Server - Insert เฉพาะ Column ที่ทำใหม่ คือ FUNDINDEX
  • ที่นี่ค่อยมานั่งไล่แก้ตัว Process และ Report ทั้งหลายครับใน Dev Enviroment นะ ให้ Drop Column เดิมทิ้งไปครับ ตัว (Column Index นี้เอง)

ที่ผมทำแบบนี้ เพราะ ต้องการใช้ตัว Code ของที่ใช้กับ Database DB2 และ MS SQL Server เป็น Code ชุดเดียวกันครับ

  • เมื่อ Test อะไรจนครบ Flow แล้ว ส่ง App ไป Production ครับ อย่าเพิ่งส่ง Script ที่ Drop Column ไปนะครับ เอ้าทำไมหละ งานที่ผมดูแลมันมี App ที่เป็น Client ด้วย ต้องดูถึงเวลาที่ลูกค้าคาดว่าจะ Replace โปรแกรมใหม่ทันด้วยนะ
  • ถ้าคิดว่ามีการ Replace Program ครบเรียบร้อยแล้ว ก็ส่ง Script DROP ไปได้เลยครับ และก็อย่าลืมปรับ App ที่เป็นของ Database DB2 ไม่ให้สนใจ Column INDEX อันเก่าด้วยนะครับ
  • อ๋อ และก็อย่าลืมแจ้งลูกค้าด้วยครับ บางที่ In-house ของลูกค้ามีทำ App มาดึงข้อมูลจาก DB เราไปตรงๆ นะครับ

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.