สร้าง Link จาก SQL Server ไป Query Database MySQL #1

Link Server #1

หายไปนานพอสมควร ครับ พอดี ติดทำ Project เร่งด่วน หลายตัว แต่ที่จะเอามา Share และ
ผมว่า เป็นประโยชน์มากทีเดียว คือ การทำ Link Server บน SQL Server

โปรเจค ที่ทำ มีตัวหนึ่งที่ต้อง Query ข้อมูลจาก Database MySQL มาประกอบกับ ข้อมูลบน MS.SQL
โดยที่ โปรแกรม เดิม Run บน Database MS.SQL เป็น .Net WinApp
ตอนแรกคิืดอยู่ว่าจะทำอย่างไร เนื่องจาก ทำได้หลายทาง คือ

1. ให้ Client Query จาก MySQL เลย แต่ปัญหาคือ ต้องไปนั่งลง MySQL .NET Connector ที่ Client ทุกเครื่อง สรุปก็เลยไม่ใช้วิธีนี้

2. ทำการ ETL (Extract Transform Load) หรือ เทคนิค สร้าง Table และ Import ข้อมูลจาก MySQL มาเก็บที่ MS.SQL โดยตั้ง เวลา Import ไว้ แต่ปัญหาคือ เสียเวลามานั่งทำ ETL และ ปัญหาการ Import อีก และข้อมูลที่ได้ ก็ยังเป็นข้อมูลที่ไม่ Update (เนื่องจากเป็นการ Import มา) สรุปไม่เอาวิธีนี้

3. ทำ Link Server มาไว้ที่ SQL Server โดย ทำการ ติดตั้ง MySQL ODBC Driver Versionที่ผมใช้จะเป็น 3.51 โดยให้ดูให้ Driver สามารถใช้งานได้ ผมได้ทดลองทั้ง บน MSSQL Version 2005 บน Windows 2003 R2 และ MSSQL 2008 R2 บน Windows 2008 R2 x64 สามารถใช้งานได้
แต่ว่า Driver ที่ใช้กับ x64 ต้องเป็น Version 64 bit นะครับ สรุปใช้วิธีนี้ครับ

ข้อดี
1. ไม่ต้องไปนั่งติดตั้ง MySQL .Net Connector ที่ Clint ทุกเครื่อง (กรณี WinApp)
2. ไม่ต้องเสียเวลา ทำ ETL
3. ได้ข้อมูล Real time

ข้อเสีย
1. ต้องเขียน SQL Command แบบ เฉพาะ คือ ไม่สามารถใช้ Command SQL ใน Syntax ของ T-SQL ได้
ต้อง ทำการเขียน Query โดยใช้ Command OPENQUERY เข้ามาช่วย
วิธีการใช้ OPENQUERY ดูที่นี่

2. Syntax ของ SQL command ที่จะใช้กับ OPENQUERY ต้องเป็น syntax ของ Database นั้นๆ ในกรณี
เรียกใช้ MySQL ก็ต้องเป็น syntax ของ MySQL .. อันนี้ผมว่าก็ไม่เสียหายอะไร

คราวนี้มาดู วิธีการสร้าง Link Server กัน เอาแบบ GUI แล้วกันนะครับ

STEP By STEP Create LinkServer
1. ติดตั้ง ODBC Driver ของ MySQL ให้เสร็จเรียบร้อยก่อน
2. สร้าง ODBC Data Source DSN บนเครื่อง Server
3. เปิด SQL Management Studio ขึ้นมา
4. ไปที่ Server Object -> Link Server
5. Right Click -> New Link Server
7. Config ค่า ตัวอย่างจะเป็น MySQL นะัครับ

กำหนดค่า DataSource

กำหนดค่า Mapping User

กำหนด Option เรื่อง Collation Name กรณี Database ของ ฝั่ง MySQL เป็น ANSI
จะได้ ไม่มีปัญหาเรื่อง ภาษา และกรณี จะใช้ Command Execute AT ต้องเปิด RPC Out=True ด้วย

แค่นี้ก็ได้ Link Serverแล้ว คราวต่อไปมาว่ากันถึงเรื่อง การ ใช้งาน Link Server กัน

ความคิดเห็น

  1. สอบถ่ามหน่อยครับ ทำคำสั่ง insert มันใช้เวลานานมากเลยในการ insert ข้อมมูล

    ตอบลบ
    คำตอบ
    1. ช้ากว่า เป็นธรรมดา ครับเนื่องจากมี over head ถึง 3 ชั้น
      และต้องดูเรื่อง Hardware, Network ช่วยด้วยครับ ถ้าเครื่อง mysql อยู่คนละ Network นี่ก้อมีผลทำให้ช้าครับ

      ลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ปัญหาเด็ก กลืน ดินน้ำมัน

ปัญหา Custom Paper Size บน Crystal Report

Function Baht Text บน Crystal Report