บทความนี้อธิบายขั้นตอนติดตั้ง Microsoft SQL Server 2019 แบบ Step-by-step และแนะนำ Options, Components, Recommendations และ Best Practices ทั้งหมด
MS SQL Server เป็น Relational Database Management System นำหน้าและคู่แข่งหลักของ Oracle Database ใน Corporate Segment
สารบัญ
- MS SQL Server 2019 Editions
- SQL Server Licensing
- เริ่มต้นติดตั้ง SQL Server
- ติดตั้ง SQL Server 2019 Components
- SQL Server Instance Name
- Configuring SQL Server Service Settings
- Configure Database Engine Options
MS SQL Server 2019 Editions
มี MSSQL 2019 Editions ทั้งหมด 5 รุ่น:
- Express — ฟรี ฟีเจอร์จำกัด ข้อจำกัดสำคัญ: Max Database Size 10 GB เหมาะสำหรับโปรเจกต์เล็ก เรียนนักศึกษา เรียน SQL/T-SQL
- Standard — Commercial Edition ครบฟีเจอร์ แต่มีข้อจำกัด: Max RAM ที่ SQL Server ใช้ได้ 128 GB ไม่รวม AlwaysOn Availability Groups และบาง Components เหมาะองค์กรขนาดเล็ก
- Enterprise — รวม Features และ Components ทั้งหมด ไม่มีข้อจำกัด ใช้โดย Large Corporations ที่ต้องการ Features ใน Enterprise
- Developer — เหมือน Enterprise ไม่มีข้อจำกัด ฟรี แต่ใช้ได้เฉพาะ Develop และ Test Apps
- Web — คล้าย Standard แต่มีข้อจำกัดมากกว่า License Cost ต่ำกว่า
SQL Server Licensing
MS SQL Server ใช้ 2 Licensing Models:
- PER CORE — License ตามจำนวน Physical Cores บน Host (Server)
- SERVER + CAL — ซื้อ License สำหรับ Server และ User แต่ละคนที่ทำงานกับมัน
Enterprise Edition License ได้เฉพาะ PER CORE Model เท่านั้น
ยัง License Containers, Virtual Machines และ Big Data Clusters ใน MSSQL Server 2019 ได้ ดูรายละเอียด SQL Server Licensing จากบทความอื่น
เริ่มต้นติดตั้ง SQL Server
บทความนี้ติดตั้ง MS SQL Server 2019 Enterprise Edition บน Windows Server 2019
หมายเหตุ: SQL Server 2019 รองรับ Linux อย่างเต็มรูปแบบ Docker และ Kubernetes ด้วย
- ดาวน์โหลดและ Mount SQL Server 2019 Installation Image รัน setup.exe
- บทความนี้ติดตั้ง Standalone Instance เลือก New SQL Server stand-alone installation ในแท็บ Installation
SQL Server Update Settings
ขั้นตอนนี้ Enable การค้นหา Updates ผ่าน Windows Update ตัดสินใจเอง หากไม่มี Update Plan ชัดเจนสำหรับ Server แนะนำ Enable Setting นี้
อาจเจอ Error ในขั้นนี้:
Error 0x80244022: Exception from HRESULT: 0x80244022
เกี่ยวกับ Windows Update Issues แก้ไขได้ที่: https://woshub.com/windows-update-error-0x80244022-and-wsuspool-memory-limit/
คลิก Next → Install Setup Files จะทำอัตโนมัติเตรียม SQL Server Files → Install Rules ทำอัตโนมัติหาก Wizard ไม่เจอปัญหา (เช่น Prompt Restart หรือ Incompatibility)
SQL Server Installation Type
เลือก Install New Instance หรือ Add Features เข้า Instance ที่ติดตั้งแล้ว กรณีนี้ติ๊ก "Perform a new installation of SQL Server 2019"
ใส่ SQL Product Key หากไม่มี เลือก Free Edition (เช่น Developer) จำไว้ว่า Developer Edition ใช้ได้แค่ Develop/Test Software (ห้าม Production)
License Terms ยอมรับ License Agreement
ติดตั้ง SQL Server 2019 Components
Wizard แจ้งให้ติดตั้ง SQL Server Components ต่างๆ มาดูว่ามีอะไรบ้างและควรติดตั้งอะไร:
- Database Engine Services — SQL Server Engine พื้นฐาน ต้องติดตั้ง
- SQL Server Replication — Replication Services ใช้บ่อย หากไม่แน่ใจควรติ๊กติดตั้ง
- Machine Learning Services and Language Extensions — รัน R/Python/Java Code ใน SQL Server Context จำเป็นหากใช้ Machine Learning
- Full-Text and Semantic Extractions for Search — จำเป็นหากต้องการ Full-text Search หรือ Semantic Search ใน Documents (เช่น .docx) Semantic Search ต้องการ FILESTREAM ด้วย
- Data Quality Services — Services Correct/Validate Data หากไม่แน่ใจไม่ติดตั้งก็ได้
- PolyBase Query Service For External Data — เข้าถึง External Data เช่น SQL Server อื่น หรือ Oracle Database Java Connector สำหรับ HDFS Data Sources เกี่ยวกับ PolyBase หากใช้ HDFS ติดตั้ง
- Analysis Services (SSAS) — ใช้ Business Reporting (BI) และ OLAP ในองค์กรใหญ่
ต่อไป Shared Features (Functions ใช้ทั้ง Server ไม่ใช่ Instance เฉพาะ):
- Machine Learning Server (Standalone) — เหมือน Machine Learning Services แต่ติดตั้งโดยไม่ต้องมี SQL Server Engine
- Data Quality Client — DQS Standalone Version
- Client Tools Connectivity — ODBC, OLE DB Libraries แนะนำติดตั้ง
- Integration Services (SSIS) — Data Integration Services ใช้ ETL (Extract, Transform, Load) จำเป็นหาก Import Data อัตโนมัติและ Transform ระหว่าง Import Scale Out Master/Worker ใช้ Scale SSIS Operations หากไม่แน่ใจอย่าติ๊ก
- Client Tools Backwards Compatibility — Legacy DMVs และ System Procedures แนะนำติดตั้ง
- Client Tools SDK — Developer Toolkit หากไม่แน่ใจอย่าติดตั้ง
- Distributed Replay Controller/Client — Duplicate และ Improve SQL Server Profiler Features Simulate Load สำหรับ Performance Tests
- SQL Client Connectivity SDK — ODBC/OLE DB SDK สำหรับ Developers
- Master Data Services — Microsoft Power BI Component ใช้ Analyze, Validate, Integrate, Correct Data
Features บางอย่าง (เช่น Java Connector for HDFS) อาจไม่มีใน SQL Server รุ่นก่อน
ขั้นตอนเดียวกันระบุ Directory สำหรับ SQL Server Files หากไม่มีเหตุผลบังคับ ใช้ Default (C:\Program Files\Microsoft SQL Server\)
หลังเลือก Features Wizard ตรวจสอบ Compatibility กับ System หากไม่มีปัญหา Step นี้เสร็จอัตโนมัติ
SQL Server Instance Name
เลือก Default Instance Instance Name จะเป็น MSSQLSERVER เลือก Named Instance ตั้งชื่อ SQL Server เองได้ ตัวอย่างตั้งชื่อ DEV แนะนำ Instance ID เหมือน Instance Name หลีกเลี่ยงความสับสน
ใน Installed Instances List แสดง MSSQL Instances ที่ติดตั้งบน Server
Configuring SQL Server Service Settings
แท็บ Service Accounts ระบุ Accounts ที่ SQL Server Services จะรันบน Host Best Practice ใช้ MSA (Managed Service Accounts) หรือ gMSA (Group Managed Service Accounts) มOST Secure ตัวอย่างใช้ Domain User Account ธรรมดา
ตั้ง Startup Type เป็น Automatic สำหรับ SQL Server Agent มิฉะนั้นต้องรัน Agent Manual
ตั้ง IFI (Instant File Initialization) ระหว่างติดตั้ง ตั้งแต่ SQL Server 2016 เรียกว่า "Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine" ใน Wizard หาก Enable ข้อมูลเก่าไม่ Overwrite ด้วย Zeroes เมื่อ:
- Create Database
- Add Data ไป Data หรือ Log Files
- Expand Existing Files Size (รวม Auto-growth)
- Recover Database หรือ File Group
จะเร่ง File Initialization แต่ส่งผล Security เนื่องจากข้อมูลเก่าไม่ Zeroed (ข้อมูลเก่าในไฟล์อาจเข้าถึงได้บางส่วน) แนะนำ Enable หาก Data Leak Threat ต่ำ
ขั้นตอนถัดไปเลือก Collation
Collation คือ SQL Server Encoding Parameter นี้ตั้ง Page Encoding, Sorting Rules, Char/Varchar Encoding และ Language-related Settings อื่นๆ
ระหว่างติดตั้งเลือก Collation สำหรับ Whole SQL Server หลังติดตั้งแก้ไขได้แตยาก แนะนำเลือก Collation ที่เหมาะสมตั้งแต่แรก
หาก Data ภาษาอังกฤษอย่างเดียว เลือก SQL_Latin1_General_CP1_CI_AS
หากใช้ SQL Server ใน Production Tasks ดู Collation Section ใน Documentation เนื่องจาก Setting สำคัญแม้จะตั้งต่อ Database แยกได้
Configure Database Engine Options บน SQL Server
ขั้นตอน Database Engine Configuration มี 6 แท็บ มาดูทีละอัน:
Server Configuration
เลือก Authentication Mode ระบุ SQL Server Administrator Account มี 2 โหมด:
- Windows Authentication Mode — เฉพาะ Domain Users หรือ Computer รัน Windows เข้าสู่ระบบได้
- Mixed Mode — เข้าสู่ระบบด้วย SQL Server Account ได้ด้วย
Microsoft แนะนำ Windows Authentication ว่า Secure ที่สุด แต่ในทางปฏิบัติอาจ Login จาก Apps อื่นๆ เช่น Java Apps ต้องใช้ SQL Server Authentication หากแน่ใจว่า Users Login เฉพาะ Windows Computers/Apps รองรับ Windows Auth เลือก Windows Authentication Mode
ตัวอย่างเลือก Mixed Mode ต้องระบุ sa User Password และเลือก Windows Account ที่มี Admin Privileges
Data Directories
เลือก Directory ที่ SQL Server จะเก็บ Database Files และ Transaction Logs
ควรใช้ Separate RAID Drive เก็บ Data Disk Subsystem สำคัญมากต่อ SQL Server Performance ใช้ Best Available Variant เช่น NAS หรือ Local RAID ของ Fast Disks
Best Practice: แยก Directories ทั้งหมด (System Databases, User Database Logs, Backups) ไป Storages ต่างกัน จะได้ Maximum SQL Server Performance ระดับ Data Storage
ตัวอย่างระบุ Separate RAID 1 Drive สำหรับทุก Folder
TempDB
ตั้งค่า TempDB Settings การตั้งค่าที่ถูกต้องสำคัญต่อ Server Performance เนื่องจาก Database นี้เกี่ยวข้องเกือบทุก Operation กับ Data
- Number of Files — จำนวน Data Files สำหรับ TempDB ระบุตาม CPU Cores Best Practice: จำนวน Files = CPU Cores / 2 หมายถึง 16 Files สำหรับ 32-core Server ไม่แนะนำต่ำกว่า 8 Files ไม่ว่าจะกี่ Cores หลีกเลี่ยงปัญหา: https://support.microsoft.com/en-us/kb/2154845
- Initial Size — Initial Size ของ TempDB Data Files หลัง Restart Server ทุกครั้ง TempDB Size Reset กลับ Initial Size แนะนำระบุตาม Planned Load หากประมาณไม่ได้ ใส่ 8 MB หากจัด Array/Drive แยกสำหรับ TempDB Files ควรระบุ File Size ให้เต็ม Disk หลีกเลี่ยง Constant File Growth
- Autogrowth — Step ของ TempDB File Incremental Growth ตั้งตาม Initial Size หากประมาณไม่ได้ ใส่ 64 MB หาก IFI Enable เวลารอ File Growth Block จะน้อยลง ไม่แนะนำตั้ง Incremental Size ใหญ่ จะทำ Delay มากตอนเพิ่ม File Size
- Data Directories — Directories ที่ TempDB Files จะอยู่ หากระบุ Multiple Directories Files จะวางแบบ Round-robin (Cycle) เช่น 4 Directories Data Files แจกเท่ากันทุก Directory Best Practice: เพิ่ม Disk Arrays ต่างกันสำหรับ Data Files
- TempDB Log File: Initial Size/Autogrowth — ตั้ง Initial Size และ Step ของ TempDB Log File กฎเดียวกับ Data Files
- Log Directory — Directory เก็บ TempDB Log File มีแค่ 1 Log File ไม่ว่า Data Files กี่ตัว ระบุ 1 Directory หากเป็นไปได้จัด Array แยกสำหรับ Log File ด้วย
MaxDOP
MaxDOP เป็น SQL Server Setting รับผิดชอบ Parallel Queries และ Parallelism Degree เพื่อให้ SQL Server ใช้ CPU Cores ทั้งหมดประมวลผล Parallel Plans ตั้ง 0 เป็น MaxDOP Value หากต้องการ Disable Parallel Queries ตั้ง 1 เพื่อ Maximum Performance ตั้ง MaxDOP ตามตาราง (https://go.microsoft.com/fwlink/?linkid=2084761):
| Server Configuration | Number of Processors | Guidance |
|---|---|---|
| Server with single NUMA node | ≤ 8 Logical Processors | Set MAXDOP at or below # of logical processors |
| Server with single NUMA node | > 8 Logical Processors | Set MAXDOP at 8 |
| Server with multiple NUMA nodes | ≤ 16 Logical Processors per NUMA node | Set MAXDOP at or below # of logical processors per NUMA node |
| Server with multiple NUMA nodes | > 16 Logical Processors per NUMA node | Set MAXDOP at half the number of logical processors per NUMA node with a MAX value of 16 |
ตัวอย่างตั้งค่า 0 ให้ Maximum Performance รัน Parallel Queries แต่อาจเกิด Delays เนื่องจาก Process อื่นต้องรอจน Process ปัจจุบันจบ เพราะ CPU Cores ทั้งหมด Busy กับ Current Query
ยังคงแนะนำปฏิบัติตามตารางข้างต้นสำหรับ Server Workload สูง ดู Documentation ตาม Link ด้วย
Memory
ระบุ Minimum และ Maximum RAM Size ที่ SQL Server จะใช้ เนื่องจากประมาณขนาดที่เหมาะสมยาก แนะนำ Dedicate 80-85% ของ Server RAM ทั้งหมดให้ SQL Server เพื่อรู้ Real RAM Size ต้อง Monitor RAM Usage 24/7 ด้วย DMVs (Dynamic Management Views) ประมาณ Real RAM Usage ได้ก็ต่อเมื่อมี Data เหล่านี้
ตัวอย่างใช้ Default Values (Min 0, Max 2147483647 MB)
FILESTREAM
Enable FILESTREAM Feature เก็บ Binary Files บน File System เข้าถึงผ่าน SQL หากไม่แน่ใจว่าจะทำงานกับ Binary Data บน SQL Level ให้ปิด FILESTREAM ไว้
Feature Configuration Rules Step ทำอัตโนมัติ อ่านข้อมูลใน Ready to Install คลิก Install
ติดตั้ง SQL Server 2019 Enterprise Basic เสร็จสิ้น บทความต่อไปจะดูวิธี Analyze Performance และ Problems ใน SQL Server
หมายเหตุ: บาง Tabs หรือ Settings อาจหายไปในรุ่นก่อน (SQL Server 2014, 2016)