ติดตั้ง Microsoft SQL Server 2017 บน Red Hat Linux แบบ Offline

ผู้เขียนได้เขียนเกี่ยวกับการติดตั้ง Microsoft SQL Server vNext หรือก็คือ Microsoft SQL Server 2017 ในปัจจุบันบน Linux แบบออนไลน์ เอาไว้ตั้งแต่เดือนมกราคมปี 2560 ผ่านไปปีกว่าผู้เขียนเริ่มมีการติดตั้งเพื่อใช้งานจริงให้กับลูกค้าหลายราย และพบว่าลูกค้าบางรายมีความจำเป็นต้องติดตั้งแบบ offline เท่านั้นด้วยเหตุผลด้าน Security ผู้เขียนจึงได้นำวิธีการติดตั้งแบบ offline ดังกล่าวมาเล่าสู่กันฟัง โดยครั้งนี้ผู้เขียนเลือกที่จะติดตั้งลงบน Red Hat Enterprise Linux ซึ่งเป็น Commercial Linux Distribution เจ้าหลักที่ลูกค้าของผู้เขียนมักเลือกใช้ (สามารถหาอ่านการติดตั้งแบบ Online ลงบน Ubuntu Linux ได้จากบทความชื่อ “Microsoft SQL Server VNext ติดตั้งบน Linux ง่ายแสนง่าย”)
ติดตั้ง Microsoft SQL Server 2017 บน Red Hat Linux แบบ Offline
ทักษะ (ระบุได้หลายทักษะ)

ติดตั้ง Microsoft SQL Server 2017 บน Red Hat Linux แบบ Offline

ผู้เขียนได้เขียนเกี่ยวกับการติดตั้ง Microsoft SQL Server vNext หรือก็คือ Microsoft SQL Server 2017 ในปัจจุบันบน Linux แบบ Online เอาไว้ตั้งแต่เดือนมกราคมปี 2560 ผ่านไปปีกว่า
ซึ่ง สามารถหาอ่านการติดตั้งแบบ Online ลงบน Ubuntu Linux ได้จากบทความชื่อ “Microsoft SQL Server VNext ติดตั้งบน Linux ง่ายแสนง่าย”
https://www.9experttraining.com/articles/การติดตั้ง-microsoft-sql-server-vnext-บน-linux

ผู้เขียนเริ่มมีการติดตั้งเพื่อใช้งานจริงให้กับลูกค้าหลายราย และพบว่าลูกค้าบางรายมีความจำเป็นต้องติดตั้งแบบ offline เท่านั้นด้วยเหตุผลด้าน Security

ผู้เขียนจึงได้นำวิธีการติดตั้งแบบ offline ดังกล่าวมาเล่าสู่กันฟัง
โดยครั้งนี้ผู้เขียนเลือกที่จะติดตั้งลงบน Red Hat Enterprise Linux ซึ่งเป็น Commercial Linux  Distribution เจ้าหลักที่ลูกค้าของผู้เขียนมักเลือกใช้

การเตรียม Packages สำหรับติดตั้ง
Microsoft ได้เตรียม Package Repositories สำหรับติดตั้งลงบน Linux Distros ต่างๆ เอาไว้
ผู้อ่านสามารถเข้าถึงได้โดยตรงผ่าน URL ต่อไปนี้
 

DistributionURL
Red Hat Enterprise Linux
SUSE Enterprise Linux
Ubuntu
Debian
OpenSUSE

 
 

  1. เลือกไปที่ URL ของ Red Hat Enterprise Linux จะพบโครงสร้าง Path ดังต่อไปนี้
Red Hat Enterprise Linux
  1. ผู้เขียนเลือกติดตั้ง Red Hat Enterprise Linux 7.4 จึงแนะนำให้ดาวน์โหลด Packages จาก Path ต่อไปนี้ มาเก็บไว้  ไฟล์ Packages ของ Red Hat จะมีนามสกุล .rpm
URLหมายเหตุ
DB Engine, Agent Service,
Full Text, SSIS
Client Tools
Client Tools (Updated)


หมายเหตุ Packages ที่จำเป็นบางส่วนอยู่ในแผ่นติดตั้งของ Red Hat Enterprise Linux

การเตรียมแผ่นติดตั้ง และการติดตั้ง Linux
เนื่องจาก Red Hat Enterprise Linux เป็น Commercial Linux Distribution ไปแล้ว
การที่จะ Download ISO Image  มาติดตั้งนั้นจำเป็นที่จะมี Red Hat account

ผู้อ่านสามารถลงทะเบียนได้ที่ https://www.redhat.com/wapps/ugc/register.html
เมื่อลงทะเบียนเสร็จแล้วให้ทำการร้องขอ Evaluation Subscription ถึงจะสามารถ Download ISO Image  มาติดตั้งได้ Subscription มีอายุ 30 วัน

เมื่อได้ ISO Image มาแล้ว ให้นำไปติดตั้ง ผู้เขียนจะไม่ขอลงรายละเอียดทุกขั้นตอน แต่จะเลือกบางขั้นตอนที่จำเป็นมาเล่าสู่กันฟังดังนี้
 

  1. เมื่อมาถึงหน้า Installation Summary ให้เลือกไปที่ Software Selection เพื่อเลือกลง Packages ที่เกี่ยวข้อง
เมื่อมาถึงหน้า Installation Summary ให้เลือกไปที่ Software Selection เพื่อเลือกลง Packages ที่เกี่ยวข้อง
  1. เมื่อปรากฎหน้า Software Selection ให้เปลี่ยน Base Environment จาก Minimal Install ไปเป็น Infrastructure Server แทน
เมื่อปรากฎหน้า Software Selection ให้เปลี่ยน Base Environment จาก Minimal Install ไปเป็น Infrastructure Server แทน
ที่แนะนำเช่นนี้ เพราะหากเลือก Minimal Install จะขาด Packages ที่จำเป็นจำนวนมาก
ทำให้ขณะติดตั้ง Packages ของ Microsoft SQL Server จะติดปัญหา Packages Dependencies หรือขาด Packages ที่ต้องมีอยู่ก่อนหน้า
  1. ตั้งค่า Disk และแบ่งพาร์ติชั่นตามความจำเป็น จากนั้นกดปุ่ม Begin Installation
ตั้งค่า Disk และแบ่งพาร์ติชั่นตามความจำเป็น จากนั้นกดปุ่ม Begin Installation
  1. ในขณะติดตั้งจะมีกรอบโต้ตอบให้ตั้งรหัสผ่านสำหรับ root และเพิ่ม user
สำหรับบทความนี้ผู้เขียนเลือกที่จะใช้งานบนสิทธิ์ของ root เลย
แต่ถึงแม้จะใช้สิทธิ์ของ root ในการติดตั้งก็จะไม่ส่งผลกระทบด้าน Security ซึ่งผู้เขียนได้อธิบายไว้ในลำดับต่อไป
  1. เมื่อติดตั้งสำเร็จ หลังจากบูตเสร็จ ทำการล๊อกอินเป็น root จากนั้นทำการตั้งค่า IP Addressให้กับ Red Hat
เมื่อติดตั้งสำเร็จ หลังจากบูตเสร็จ ทำการล๊อกอินเป็น root จากนั้นทำการตั้งค่า IP Addressให้กับ Red Hat
ด้วยคำสั่งต่อไปนี้

ip addr add 192.168.55.9/28 dev eth0

ผู้เขียนใช้ Ethernet Adapter Card เพียงใบเดียวจึงมี Device name เป็น eth0
แต่หากผู้อ่านใช้ Wifi สามารถหา Device name ได้จากคำสั่ง ifconfig และค่า IP Address ที่ปรากฎอยู่ในตัวอย่างคำสั่ง ใช้ในวงแลนของผู้เขียน
ผู้อ่านควรตั้งค่าให้เหมาะกับสภาพแวดล้อมของตน
  1. เมื่อตั้งค่า IP Address แล้ว ผู้เขียนทดสอบเชื่อมต่อผ่าน SSH Client (Putty) จากเครื่อง Microsoft Windows
เมื่อตั้งค่า IP Address แล้ว ผู้เขียนทดสอบเชื่อมต่อผ่าน SSH Client (Putty) จากเครื่อง Microsoft Windows

ปกติแล้ว Red Hat Enterprise Linux จะติดตั้ง Firewall และเปิดใช้งานไว้แล้ว
แต่สำหรับ SSH Protocol นั้นมักจะมี Rule ที่อนุญาตเอาไว้แล้ว จึงไม่น่าประสบปัญหาการเชื่อมต่อ
ควรจะปรากฎ Console ของ Putty ดังแสดง

ควรจะปรากฎ Console ของ Putty ดังแสดง

อัพโหลด Packages ติดตั้ง Microsoft SQL Server 2017 ไปยัง Red Hat Enterprise Linux
 

  1. เชื่อมต่อไปยัง Red Hat ด้วย Puttyโดย Login เป็น root
เราจะใช้สิทธิของ root ในการติดตั้ง Microsoft SQL Server  2017 โดยไม่ต้องกังวลเรื่องหลักการ Least Privilege
เพราะเมื่อติดตั้งเสร็จเจ้าของไฟล์และไดเร็กทอรี่ จะไม่ใช่ root
แต่จะมีการสร้าง user และ group ชื่อ mssql ขึ้นมาเป็นเจ้าของไฟล์และไดเร็กทอรี่แทนโดยอัตโนมัติ
เชื่อมต่อไปยัง Red Hat ด้วย Puttyโดย Login เป็น root

ตรวจสอบให้แน่ใจว่าอยู่ใน home Directory ของ root ด้วยคำสั่ง pwd

pwd

home Directory ของ root คือ /root
ทำการสร้างไดเร็กทอรี่สำหรับอัพโหลด Packages ติดตั้ง ในที่นี้ให้ชื่อไดเร็กทอรี่ว่า sql-server

mkdir sql-server

ย้ายไปอยู่ในไดเร็กทอรี่ที่สร้างขึ้น

cd sql-server

ตรวจสอบให้แน่ใจว่าอยู่ในไดเร็กทอรี่ที่สร้างขึ้นแล้ว ด้วยคำสั่ง pwd

pwd
               
ควรจะแสดงตำแหน่งเป็น /root/sql-server
 

  1. ติดตั้งและเรียกใช้ SFTP Client (WinSCP) เชื่อมต่อไปยัง Red Hat และตรวจสอบให้แน่ใจว่าได้เลือกไดเร็กทอรี่ /root/sql-server  ที่สร้างขึ้นเป็นไดเร็กทอรี่ปลายทาง
ติดตั้งและเรียกใช้ SFTP Client (WinSCP) เชื่อมต่อไปยัง Red Hat และตรวจสอบให้แน่ใจว่าได้เลือกไดเร็กทอรี่ /root/sql-server  ที่สร้างขึ้นเป็นไดเร็กทอรี่ปลายทาง
  1.  อัพโหลด Packages ในส่วนของ DB Engine, Agent Service, Full Text และ SSIS ที่ดาวน์โหลดไว้ ไปยังไดเร็กทอรี่ /root/sql-server
 อัพโหลด Packages ในส่วนของ DB Engine, Agent Service, Full Text และ SSIS ที่ดาวน์โหลดไว้ ไปยังไดเร็กทอรี่ /root/sql-server

การติดตั้ง Microsoft SQL Server 2017
การติดตั้ง Packages แบบ Offline สามารถทำผ่านคำสั่ง yum หรือ rpm ก็ได้

สำหรับบทความนี้ ผู้เขียนได้แสดงไว้ทั้งสองคำสั่ง ผู้อ่านสามารถเลือกใช้ได้ตามอัธยาศัย

  1. ตรวจสอบให้แน่ใจว่าอยู่ในไดเร็กทอรี่ที่สร้างขึ้นแล้ว ด้วยคำสั่ง pwd
pwd

              

ควรจะแสดงตำแหน่งเป็น /root/sql-server
 
  1. ติดตั้ง Package ของ Database Engine ด้วยคำสั่ง yum
yum localinstall mssql-server-14.0.3023.8-5.x86_64.rpm

             

หรือเลือกใช้คำสั่ง rpm แทน
 
rpm -ivh mssql-server-14.0.3023.8-5.x86_64.rpm
 
หากไม่พบปัญหา Packages Dependencies ก็จะมีการร้องขอในยืนยันการติดตั้ง ให้พิมพ์ y แล้วกด Enter
ติดตั้ง Package ของ Database Engine ด้วยคำสั่ง yum
  1. ติดตั้ง Package ของ SQL Server Agent
หากติดตั้ง Package ของ Database Engine ตั้งแต่เวอร์ชั่น 14.0.3015.40 (CU3) ลงไป จะต้องติดตั้ง Package ของ SQL Server Agent เพิ่มเติม
ผู้เขียนเลือกติดตั้งเวอร์ชั่น 14.0.3023.8 (CU5) ซึ่งมี SQL Server Agent มาพร้อมกับ Database Engine เลยจึงไม่ต้องติดตั้งเพิ่ม

รายละเอียดของ Release สามารถติดตามได้จาก https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes
  1. ติดตั้ง Package ของ SQL Server Full-Text Search (ถ้าจำเป็นต้องใช้) ด้วยคำสั่ง yum
yum localinstall mssql-server-fts-14.0.3023.8-5.x86_64.rpm

หรือเลือกใช้คำสั่ง rpm แทน

rpm -ivh mssql-server-fts-14.0.3023.8-5.x86_64.rpm
  1. ติดตั้ง Package ของ SQL Server Integration Service (ถ้าจำเป็นต้องใช้) ด้วยคำสั่ง yum
yum localinstall mssql-server-is-14.0.3015.40-1.x86_64.rpm
 
หรือเลือกใช้คำสั่ง rpm แทน
 
rpm -ivh mssql-server-is-14.0.3015.40-1.x86_64.rpm

 
การตั้งค่า Microsoft SQL Server 2017
หากเรียกใช้ Shell Script ชื่อ mssql-conf สามารถกำหนดพารามิเตอร์เป็น setup จะเป็นการตั้งค่าสำหรับเริ่มต้นใช้งาน
โดยต้อง
 

  • เลือก Edition ของ Microsoft SQL Server 2017
  • ตั้งรหัสผ่านสำหรับ Login แบบ SQL Authentication

เมื่อตั้งค่าสำเร็จ  สคริปท์ก็จะทำการ Start Daemon (Service) ของ Database Engine ทันทีดังรูป

เมื่อตั้งค่าสำเร็จ  สคริปท์ก็จะทำการ Start Daemon (Service) ของ Database Engine ทันทีดังรูป

ขั้นตอนการตั้งค่ามีดังนี้
 

  1. ย้ายไปอยู่ในไดเร็กทอรี่ /opt/mssql/bin
cd /opt/mssql/bin/

ตรวจสอบให้แน่ใจว่าอยู่ในไดเร็กทอรี่ /opt/mssql/bin ด้วยคำสั่ง pwd

 pwd

ควรจะแสดงตำแหน่งเป็น /opt/mssql/bin
  1. เรียกใช้ Shell Script ชื่อ mssql-conf โดยกำหนดพารามิเตอร์เป็น setup
./mssql-conf setup
 
จะปรากฏตัวเลือกดังต่อไปนี้
 
Choose an edition of SQL Server:
 1) Evaluation (free, no production use rights, 180-day limit)
  2) Developer (free, no production use rights)
  3) Express (free)
  4) Web (PAID)
  5) Standard (PAID)
  6) Enterprise (PAID)
  7) Enterprise Core (PAID)
  8) I bought a license through a retail sales channel and have a product key to enter.

     

ผู้เขียนเลือกใช้ Evaluation Edition โดยการพิมพ์หมายเลข 1 ลงไป
หากเป็นการติดตั้งเพื่อใช้งานจริงให้เลือกตาม License ที่ได้ซื้อไว้
  1. จะปรากฏลิงค์ให้ตามไปอ่านเกี่ยวกับข้อตกลงและนโยบายความเป็นส่วนตัว จากนั้นจะมีคำถามความยินยอมตามข้อตกลงให้ พิมพ์ Yes เป็นการยืนยัน
  2. ตั้งรหัสผ่านสำหรับ sa ซึ่งเป็น Login แบบ SQL Authentication ที่ถือครองบทบาท Sysadmin ในระดับ Instance
เมื่อตั้งค่าสำเร็จ  สคริปท์ก็จะทำการ Start Daemon (Service) ของ Database Engine ทันที
 
ผู้ติดตั้งนำเอาสิทธิ์บนไดเร็กทอรี่บางส่วนของ Microsoft SQL Server 2017 มาแสดงให้เห็นว่า
แม้จะติดตั้งผ่าน root แต่เจ้าของไฟล์ และไดเร็กทอรี่ของ Database Engine จะเป็น Linux User และ Group ชื่อ mssql ซึ่งถูกสร้างขึ้นมาใหม่ขณะติดตั้ง
ส่วนเจ้าของไฟล์ และไดเร็กทอรี่ของ SQL Server Integration Service  จะใช้ Linux User และ Group ชื่อ SSIS ดังแสดง
ส่วนเจ้าของไฟล์ และไดเร็กทอรี่ของ SQL Server Integration Service  จะใช้ Linux User และ Group ชื่อ SSIS ดังแสดง
  1. ผู้เขียนได้บอกเอาไว้ตอนต้นว่า Database Engine เวอร์ชั่น 14.0.3023.8 (CU5) ได้รวมเอา SQL Server Agent เอาไว้ด้วย เพียงแต่ต้องทำการ Start Daemon (Service) ขึ้นมา
ตรวจสอบให้แน่ใจว่าอยู่ในไดเร็กทอรี่ /opt/mssql/bin ด้วยคำสั่ง pwd
 
pwd

             

ควรจะแสดงตำแหน่งเป็น /opt/mssql/bin
เรียกใช้ Shell Script ชื่อ mssql-conf โดยกำหนดพารามิเตอร์เป็น set
 
./mssql-conf set sqlagent.enabled true

จากนั้นทำการ Restart Daemon (Service) ของ Database Engine อีกครั้ง

systemctl restart mssql-server.service

 
 

  1. Microsoft SQL Server จะใช้ TCP Port หมายเลข 1433 เป็นค่าตั้งต้นสำหรับ Default Instance
ผู้เขียนเลยตรวจสอบว่ามี Port ดังกล่าว Listening อยู่หรือไม่ ด้วยคำสั่ง netstat ดังแสดง
Microsoft SQL Server จะใช้ TCP Port หมายเลข 1433 เป็นค่าตั้งต้นสำหรับ Default Instance

พบว่า Port 1433 นั้น Listening อยู่ทั้ง IPv6 และ IPv4

แต่จากที่พูดไว้ตอนต้นว่า Red Hat Enterprise Linux มีการติดตั้งและเปิดใช้ Firewall พร้อมใช้งานเลย
ผู้เขียนจึงตรวจสอบว่ามี Rule ที่อนุญาตให้เข้าถึง Port 1433/TCP แล้วหรือไม่ ผ่านคำสั่ง  firewall-cmd
โดยกำหนดพารามิเตอร์ --list-ports เพื่อแสดงเลขพอร์ตที่อนุญาต

โดยกำหนดพารามิเตอร์ --list-ports เพื่อแสดงเลขพอร์ตที่อนุญาต
ผลปรากฎว่ามีเพียง 22/TCP หรือ SSH Protocol เท่านั้นที่ได้รับอนุญาติ
จึงต้องเพิ่ม Rule ด้วยคำสั่งต่อไปนี้

firewall-cmd --zone=public --add-port=1433/tcp --permanent
 
จากนั้นทำการ Reload

firewall-cmd --reload
 

การเชื่อมต่อไปยัง SQL Server บน Linux ด้วย SQL Server Management Studio (SSMS)

  1. หากยังไม่มี SSMS ติดตั้งอยู่บน Microsoft Windows (วงแลนเดียวกันกับ SQL Server บน Linux หรือสามารถ Route ถึงกันได้)
สามารถดาวน์โหลดไฟล์ติตตั้งได้จาก https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

 
 

  1. เมื่อติดตั้งเรียบร้อยแล้วให้ทดลองเชื่อมต่อไปยัง Database Engine โดยใช้ล๊อคอิน sa และรหัสผ่านที่กำหนดไว้ตอนตั้งค่า
 การเชื่อมต่อไปยัง SQL Server บน Linux ด้วย SQL Server Management Studio (SSMS)

หากเชื่อมต่อสำเร็จก็จะพบทั้ง Data Engine และ SQL Server Agent พร้อมให้บริการ ดังแสดง

หากเชื่อมต่อสำเร็จก็จะพบทั้ง Data Engine และ SQL Server Agent พร้อมให้บริการ ดังแสดง
Release หลัง ๆ ของ Microsoft SQL Server บน Linux แม้จะเป็นการติดตั้งแบบ Offline
แต่ปัญหา Packages Dependencies ก็ไม่ค่อยปรากฏให้เห็นมากเหมือนกับ Release แรก ๆ ทำให้คนที่ไม่ค่อยถนัด

Unix/Linux สามารถติดตั้งได้ไม่ยากเย็นนัก
แต่ถึงอย่างนั้นผู้อ่านก็ควรมีความรู้ และเข้าใจสภาพแวดล้อมของ Linux ไว้บ้าง เพราะการจัดการบางอย่าง ก็ต้องจัดการสไตล์ Linux

การตั้งค่าเพิ่มเติมหลังติดตั้ง

สำหรับการย้ายโฟลเดอร์ตั้งต้นของ Data File และ Transaction Log File ของฐานข้อมูลที่สร้างขึ้นใหม่
หากเป็น Microsoft SQL Server ที่ติดตั้งอยู่บน Microsoft Windows ก็ไม่ได้ยุ่งยากอะไร เพียงเชื่อมต่อไปยัง SQL Server ผ่าน SSMS
จากนั้นเปิด Server Properties ขึ้นมา เลือกไปที่เพจ Database Settings
การตั้งค่าเพิ่มเติมหลังติดตั้ง

ก็สามารถย้ายโฟลเดอร์ตั้งต้นของ Data File, Transaction Log File หรือแม้กระทั้ง Backup Files
โดยการ Browse ไปยังโฟลเดอร์ใหม่ที่เตรียมไว้ได้เลย

หากเชื่อมต่อไปยัง SQL Server บน Linux ผ่าน SSMS เมื่อเปิด Server Properties แล้ว
เลือกที่เพจ Database Settings

เลือกที่เพจ Database Settings

สังเกตว่าในส่วนของ Database Default Locations ไม่สามารถแก้ไขได้ ต่างจาก SQL Server บน Windows
หากต้องการแก้ไขจะต้องเรียกใช้ Shell Script ชื่อ mssql-conf โดยกำหนดพารามิเตอร์เป็น set

สำหรับโครงสร้าง File System บน Linux นั้นจะเป็น Single root คือ / (ต่างจาก File System ของ Windows ที่เป็น Multiple Root คือ C: D: E: …)
ดังนั้น Disk Volume จะถูกแม็บเป็นไดเร็คทอรี่เรียกว่า Mount Point

ในบทความนี้ผู้เขียนสมมติว่าได้สร้าง Mount Point ดังนี้
(รายละเอียดการสร้าง Mount Point สามารถค้นหาได้จาก Search Engines ทั่วไป)
 

  • /opt/data/datafiles เพื่อแม็บไปยังชุดดิสก์ที่ออกแบบไว้รองรับ Data Files
  • /opt/data/logfiles เพื่อแม็บไปยังชุดดิสก์ที่ออกแบบไว้รองรับ Log Files
  • /opt/data/tempdb เพื่อแม็บไปยังชุดดิสก์ที่ออกแบบไว้รองรับ Data Files และ Log File ของฐานข้อมูล tempdb
  1. กำหนดสิทธิ์บนไดเร็กทอรี่ภายใต้ /opt/data ให้กับ Linux User และ Group ชื่อ mssql
เพราะ User นี้ต้องเป็นเจ้าของทรัพย์สินในระดับ File System ของ Microsoft SQL Server
chown mssql:mssql /opt/data/datafiles/
chown mssql:mssql /opt/data/logfiles/
chown mssql:mssql /opt/data/tempdb/
ควรได้ผลดังรูป
กำหนดสิทธิ์บนไดเร็กทอรี่ภายใต้ /opt/data ให้กับ Linux User และ Group ชื่อ mssql
  1. ย้ายไดเร็กทอรี่ตั้งต้นของ Data File และ Transaction Log File ด้วย Shell Script ชื่อ mssql-conf
ก่อนอื่นย้ายไปอยู่ในไดเร็กทอรี่ที่มี Shell Script ชื่อ mssql-conf  ในที่นี้คือ /opt/mssql/bin

cd /opt/mssql/bin/

ตรวจสอบให้แน่ใจว่าอยู่ในไดเร็กทอรี่ /opt/mssql/bin ด้วยคำสั่ง pwd

 pwd

ควรจะแสดงตำแหน่งเป็น /opt/mssql/bin
เรียกใช้ Shell Script ชื่อ mssql-conf โดยกำหนดพารามิเตอร์เป็น set
กรณีย้ายไดเร็กทอรี่ตั้งต้นของ Data Files ให้ตามด้วย filelocation.defaultdatadir <ไดเร็กทอรี่ ใหม่>

./mssql-conf set filelocation.defaultdatadir /opt/data/datafiles/

กรณีย้ายไดเร็กทอรี่ตั้งต้นของ Log Files ให้ตามด้วย filelocation.defaultlogdir <ไดเร็กทอรี่ ใหม่>

./mssql-conf set filelocation.defaultlogdir /opt/data/logfiles/

จากนั้นให้ทำการ Restart Daemon (Service) อีกครั้ง

systemctl restart mssql-server

เราสามารถใช้ SSMS เชื่อมต่อไปยัง SQL Server บน Linux และเมื่อเปิด Server Properties แล้ว เลือกที่เพจ Database Settings
จะพบว่าตำแหน่งไดเร็คทอรี่ได้เปลี่ยนไปจากเดิมแล้ว ดังแสดง
เราสามารถใช้ SSMS เชื่อมต่อไปยัง SQL Server บน Linux และเมื่อเปิด Server Properties แล้ว เลือกที่เพจ Database Settings
ผู้เขียนไม่ได้ทดลองย้ายไดเร็คทอรี่ตั้งต้นของ Backup File
ผู้อ่านสามารถศึกษา Shell Script ชื่อ mssql-conf  ว่าสามารถส่งพารามิเตอร์อะไรได้อีก
จากลิงก์ https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf
  1. ผู้เขียนจะขอพูดถึงการย้ายไฟล์ของฐานข้อมูล tempdb ไปยังไดเร็คทอรี่ (Mount ไปยัง Disk ที่มีประสิทธิภาพสูง
เพื่อประโยชน์ด้านประสิทธิภาพ) ที่ได้จัดเตรียมเอาไว้ ซึ่งกรณีนี้จัดการไม่ต่างกันเลยกับบน Windows
เพียงแค่ใช้คำสั่ง ALTER DATABASE เพื่อย้ายไปยังตำแหน่งที่เหมาะสม แล้ว Restart Service เพียงแค่นั้น

ใช้ SSMS เชื่อมต่อไปยัง SQL Server บน Linux แล้วรันสคริปท์ T-SQL  ต่อไปนี้

USE Master;
GO
 
ALTER DATABASE tempdb
MODIFY FILE
(
      NAME=tempdev
,     FILENAME='/opt/data/tempdb/tempdb.mdf'
);
GO
 
ALTER DATABASE tempdb
MODIFY FILE
(
      NAME=templog
,     FILENAME='/opt/data/tempdb/templog.ldf'
);
GO

ทำการ Restart Daemon (Service) ผ่านทาง Putty

systemctl restart mssql-server

เราสามารถใช้ SSMS เชื่อมต่อไปยัง SQL Server บน Linux อีกครั้ง แล้วเปิด Database Properties ของฐานข้อมูล tempdb
หลังจากนั้นเลือกที่เพจ Files จะพบว่าตำแหน่งไดเร็คทอรี่ได้เปลี่ยนไปจากเดิมแล้ว ดังแสดง
เราสามารถใช้ SSMS เชื่อมต่อไปยัง SQL Server บน Linux อีกครั้ง แล้วเปิด Database Properties ของฐานข้อมูล tempdb

สรุปผลการทดสอบ

หากเป็นไปได้ผู้เขียนยังคงแนะนำให้ติดตั้งแบบ Online เพราะจะไร้ปัญหาเรื่องของ Packages Dependencies
เพราะหากขาด Packages ใดไปโปรแกรมติดตั้งก็จะไปตามหา Packages ที่ขาดมาติดตั้งให้ หรือหากมี Packages ใด Conflict กันก็จะ Resolve ให้โดยอัตโนมัติ

แต่การลงแบบ Offline ในปัจจุบันก็ไม่ถือว่ามีอุปสรรคอะไรมากมายนัก จากที่ได้แสดงให้เห็นในบทความ ก็แทบจะเรียกได้ว่าราบรื่นตั้งแต่ต้นจนจบ
เพียงแต่ผู้อ่านควรมีทักษะการใช้ Command Line Interface อยู่บ้างก็เพียงพอแล้ว

แต่ไม่ว่าจะเป็นการลงแบบ Online หรือ Offline ก็ตามจะต้องมีงานตั้งค่าเพิ่มเติมผ่าน Shell Script ชื่อ mssql-conf  ตามมาอยู่ดี
ผู้เขียนแนะนำให้ทำความเข้าใจพารามิเตอร์ต่าง ๆ ของ Shell Script นี้ผ่านไม่ผ่านมือเอาไว้บ้างจะเป็นการดี


 

บทความโดย
อาจารย์ภัคพงศ์ กฤตวัฒน์
  • วิทยากรผู้ดูแลและออกแบบหลักสูตร
    • กลุ่มวิชา SQL Server/Window Server
  • Microsoft SQL Server Specialist
  • Microsoft Certified Trainer (2002-Present)
  • Co-Founder at Data Meccanica Co., Ltd.