SQL Server: On linux

Byphunsanit

SQL Server: On linux

ตอนได้ยินครั้งแรกแปลกใจมากว่า SQL Server database ตัวที่ดีที่สุดของ microsoft มัน run linux ได้ด้วย โดย เค้าเขียนว่า SQL Server runs on Linux, starting with SQL Server 2017 (14.x). It’s the same SQL Server Database Engine, with many similar features and services regardless of your operating system. คือ สามารถ run ได้ในการใช้งานจริง ๆ ไม่ใช่แต่บน windows นะ


สิ่งที่ “เหมือนกัน” (The Same Engine)

หัวใจหลักหรือ Database Engine เป็นตัวเดียวกันครับ

  • T-SQL: คำสั่ง Query, Stored Procedures, Views, Triggers ทำงานเหมือนกัน 100%
  • Features: ฟีเจอร์หลักอย่าง Columnstore, In-memory OLTP, Query Store, Data Compression มีให้ใช้เหมือนกัน
  • Tools: คุณยังใช้ SQL Server Management Studio (SSMS) จาก Windows หรือ Azure Data Studio จาก Mac เชื่อมต่อเข้าไปจัดการได้ตามปกติ

ความแตกต่างที่สำคัญ (Key Differences)

ฟีเจอร์ที่ “หายไป” หรือ “ยังไม่รองรับ” บน Linux นี่คือจุดตัดสินใจสำคัญครับ ถ้างานของคุณต้องใช้สิ่งเหล่านี้ Linux อาจยังไม่ใช่คำตอบ

หัวข้อWindows VersionLinux Version (Ubuntu/RHEL/Docker)
OS Frameworkรันบน Windows OS โดยตรงรันผ่าน SQLPAL (Abstraction Layer)
Case Sensitivityปกติจะไม่สนตัวเล็ก/ใหญ่ (CI)Paths/File Names บน Linux สนตัวเล็ก/ใหญ่ (CS)
Active Directoryรองรับแบบ Native ง่ายมากรองรับผ่าน Kerberos (ตั้งค่าซับซ้อนกว่า)
File SystemC:\Program Files\.../var/opt/mssql/...
ManagementGUI (Services.msc / Configuration Manager)Command Line (systemctl / mssql-conf)
  • SQL Server Analysis Services (SSAS): ยังไม่รองรับ
  • SQL Server Reporting Services (SSRS): ยังไม่รองรับ
    • SQL Server Management Studio (SSMS): ไม่มีบน linux สามารถใช้ DBEaver แทนได้ แต่มันไม่รับคำสั่ง GO
  • Filestream / FileTable: ยังไม่รองรับบน Linux
  • Windows PowerShell modules เฉพาะทาง: บางตัวที่ต้องพึ่งพา Windows API จะใช้ไม่ได้ (แต่ sqlserver module บน PowerShell Core ใช้ได้)

ประสิทธิภาพและการใช้งาน (Performance & Docker)

  • ความเร็ว: ในการใช้งานทั่วไป แทบไม่ต่างกัน ครับ บางผลทดสอบพบว่าบน Linux จัดการ Memory ได้นิ่งกว่าในบาง Workload
  • บน Mac: หากคุณพัฒนาบน Mac การรัน SQL Server ผ่าน Docker (ซึ่งเป็น Linux base) คือวิธีมาตรฐาน ซึ่งประหยัดทรัพยากรกว่าการเปิด VM Windows เพื่อรัน SQL Server เพียงอย่างเดียวมาก

ข้อควรระวัง (Best Practices)

  • Case Sensitivity: เวลาเขียน Code C# เพื่อดึง Metadata จาก System Views บน Linux ต้องระวังเรื่อง Case ของชื่อไฟล์หรือ Path ให้ดี
  • Path Mapping: เวลาทำ Backup/Restore ใน Docker/Linux คุณต้องระบุ Path แบบ Linux เช่น /var/opt/mssql/backup/mydb.bak แทน D:\Backup\...
  • Identity Columns: ระบบ Identity ทำงานได้เหมือนกันไม่มีปัญหา

สรุป: ถ้าเน้นเป็น Database Server เพื่อเก็บข้อมูลและรัน Query (T-SQL) เป็นหลัก Linux/Docker แทบไม่ต่างจาก Windows และเบากว่ามากครับ แต่ถ้าต้องใช้ Ecosystem พวก BI (SSRS/SSAS) ยังต้องพึ่ง Windows อยู่


อ่านเพิ่มเติม

About the author

phunsanit administrator