Backup Database SQL Server — คู่มือสำรองข้อมูลฉบับสมบูรณ์ 2026

backup database sql server 2026
Backup Database SQL Server — คู่มือสำรองข้อมูลฉบับสมบูรณ์ 2026

หลายองค์กรเริ่มนำ Backup Database SQL Server มาใช้อย่างจริงจัง บทความนี้สรุปสิ่งที่ต้องรู้และแนวทางปฏิบัติที่พิสูจน์แล้วว่าได้ผล

วิดีโอประกอบการเรียนรู้ | YouTube @icafefx

สารบัญ

ทำไมต้อง Backup Database

ข้อมูลคือทรัพย์สินที่มีค่าที่สุดขององค์กรไม่ว่าจะเป็นข้อมูลลูกค้าข้อมูลการเงินหรือข้อมูลการดำเนินงานถ้าข้อมูลหายไปโดยไม่มี backup ผลกระทบจะรุนแรงมากตั้งแต่สูญเสียรายได้เสียความน่าเชื่อถือไปจนถึงปัญหาทางกฎหมาย

สาเหตุที่ข้อมูลอาจสูญหายมีหลายอย่างเช่น hardware failure (disk เสีย, RAID controller พัง), human error (ลบข้อมูลผิด, DROP TABLE โดยไม่ตั้งใจ), ransomware attack (เข้ารหัสข้อมูลเรียกค่าไถ่), natural disaster (ไฟไหม้, น้ำท่วม datacenter) และ software bug (application เขียนข้อมูลผิด) การมี backup ที่ดีคือหลักประกันว่าคุณสามารถกู้คืนข้อมูลได้ในทุกสถานการณ์

SQL Server เป็น RDBMS ที่นิยมใช้ในองค์กรทั่วโลกมีระบบ backup ที่ครบครันรองรับหลายประเภทตั้งแต่ Full Backup, Differential Backup ไปจนถึง Transaction Log Backup ที่ช่วยให้กู้คืนข้อมูลได้แม่นยำถึงระดับวินาทีบทความนี้จะสอนทุกขั้นตอนตั้งแต่เริ่มต้นจนถึง production-grade backup strategy

ประเภทของ Backup ใน SQL Server

ประเภทสิ่งที่ Backupขนาดเวลา Restoreเหมาะกับ
Full Backupข้อมูลทั้งหมดในขณะนั้นใหญ่ที่สุดเร็วที่สุด (ไฟล์เดียว)Backup ประจำสัปดาห์
Differential Backupข้อมูลที่เปลี่ยนแปลงตั้งแต่ Full Backup ล่าสุดปานกลางปานกลาง (Full + Diff)Backup ประจำวัน
Transaction Log BackupTransaction ทั้งหมดตั้งแต่ Log Backup ล่าสุดเล็กที่สุดช้าที่สุด (Full + Diff + Logs)Backup ทุก 15-30 นาที
Copy-Only Backupเหมือน Full แต่ไม่กระทบ backup chainใหญ่เร็วAd-hoc backup ก่อน migration

Recovery Model เป็นสิ่งสำคัญที่ต้องเข้าใจก่อนถ้าใช้ Full Recovery Model จะสามารถทำ Transaction Log Backup ได้กู้คืนข้อมูลได้ถึงจุดเวลาที่ต้องการ (Point-in-Time Recovery) แต่ถ้าใช้ Simple Recovery Model จะทำได้แค่ Full และ Differential Backup สำหรับ production database แนะนำ Full Recovery Model เสมอ

Backup ด้วย SSMS (GUI)

วิธีที่ง่ายที่สุดคือใช้ SQL Server Management Studio (SSMS):

  1. เปิด SSMS แล้วเชื่อมต่อกับ SQL Server instance
  2. คลิกขวาที่ database ที่ต้องการ > Tasks > Back Up...
  3. เลือก Backup type: Full, Differential หรือ Transaction Log
  4. ตั้ง Destination path สำหรับไฟล์ .bak
  5. กด OK เพื่อเริ่ม backup

วิธีนี้เหมาะสำหรับ ad-hoc backup แต่ไม่เหมาะสำหรับ automated backup ที่ต้องทำเป็นประจำเพราะต้องทำด้วยมือทุกครั้งสำหรับ production ควรใช้ T-SQL หรือ SQL Server Agent แทน

Backup ด้วย T-SQL

-- Full Backup
BACKUP DATABASE [MyDatabase]
TO DISK = N'C:\Backup\MyDatabase_Full.bak'
WITH FORMAT, INIT,
NAME = N'MyDatabase-Full',
COMPRESSION,
STATS = 10;

-- Differential Backup
BACKUP DATABASE [MyDatabase]
TO DISK = N'C:\Backup\MyDatabase_Diff.bak'
WITH DIFFERENTIAL, INIT,
NAME = N'MyDatabase-Diff',
COMPRESSION,
STATS = 10;

-- Transaction Log Backup
BACKUP LOG [MyDatabase]
TO DISK = N'C:\Backup\MyDatabase_Log.trn'
WITH INIT,
NAME = N'MyDatabase-Log',
COMPRESSION,
STATS = 10;

ตัวเลือก COMPRESSION สำคัญมากช่วยลดขนาด backup file ได้ 60-80% ประหยัดทั้ง disk space และเวลา backup สำหรับ SQL Server 2016+ มี MAXTRANSFERSIZE ที่ช่วยเพิ่ม performance อีกด้วยตัวเลือก STATS = 10 แสดง progress ทุก 10% ช่วยให้ monitor ได้ว่า backup ใกล้เสร็จแค่ไหน

Automated Backup ด้วย SQL Server Agent

SQL Server Agent เป็น job scheduling service ที่มาพร้อมกับ SQL Server สามารถตั้ง backup job ให้ทำงานอัตโนมัติตาม schedule ที่กำหนด:

  1. เปิด SSMS > SQL Server Agent > Jobs > New Job
  2. ตั้งชื่อ job เช่น "Daily Full Backup"
  3. เพิ่ม Step ประเภท T-SQL ใส่คำสั่ง BACKUP DATABASE
  4. ตั้ง Schedule เช่นทุกวันเวลา 02:00 AM
  5. ตั้ง Notification ส่ง email เมื่อ job สำเร็จหรือล้มเหลว

Maintenance Plan เป็นอีกทางเลือกที่ง่ายกว่าสร้างผ่าน wizard ใน SSMS โดยไม่ต้องเขียน T-SQL สามารถตั้ง Full Backup ทุกสัปดาห์, Differential Backup ทุกวันและ Transaction Log Backup ทุก 30 นาทีพร้อมลบ backup file เก่าอัตโนมัติ

สำหรับองค์กรที่มี database หลายตัวควรเขียน dynamic T-SQL ที่ loop backup ทุก database อัตโนมัติ:

DECLARE @dbname NVARCHAR(256)
DECLARE @path NVARCHAR(512)
DECLARE @filename NVARCHAR(512)
DECLARE @date NVARCHAR(20)

SET @path = N'C:\Backup\'
SET @date = REPLACE(CONVERT(NVARCHAR(20), GETDATE(), 120), ':', '-')

DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
WHERE state_desc = 'ONLINE'
 AND name NOT IN ('tempdb')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
 SET @filename = @path + @dbname + '_' + @date + '.bak'
 BACKUP DATABASE @dbname TO DISK = @filename WITH COMPRESSION, INIT
 FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor

Backup Strategy — 3-2-1 Rule

กฎ 3-2-1 เป็นมาตรฐาน backup strategy ที่ทุกองค์กรควรทำตาม:

ตัวอย่าง Backup Schedule สำหรับ Production:

สำหรับองค์กรที่มี RPO (Recovery Point Objective) ต่ำมากเช่นระบบการเงินที่ยอมเสียข้อมูลได้ไม่เกิน 5 นาทีควรทำ Transaction Log Backup ทุก 5 นาทีและพิจารณาใช้ Always On Availability Groups ที่ replicate ข้อมูลแบบ synchronous ไปยัง secondary replica แบบ real-time ซึ่งเป็น high availability solution ที่ทรงพลังที่สุดของ SQL Server

อีกสิ่งที่ต้องคำนึงคือ RTO (Recovery Time Objective) หรือเวลาที่ใช้ในการ restore ถ้า database มีขนาด 500GB การ restore Full Backup อาจใช้เวลา 1-2 ชั่วโมงดังนั้นต้องวางแผนว่าองค์กรยอมรับ downtime ได้นานแค่ไหนและเลือก backup strategy ที่ตอบโจทย์ทั้ง RPO และ RTO

Restore Database

Backup ที่ดีต้อง restore ได้ควรทดสอบ restore เป็นประจำอย่างน้อยเดือนละ 1 ครั้ง:

-- Restore Full Backup
RESTORE DATABASE [MyDatabase_Test]
FROM DISK = N'C:\Backup\MyDatabase_Full.bak'
WITH MOVE 'MyDatabase' TO N'C:\Data\MyDatabase_Test.mdf',
MOVE 'MyDatabase_log' TO N'C:\Data\MyDatabase_Test_log.ldf',
NORECOVERY;

-- Restore Differential
RESTORE DATABASE [MyDatabase_Test]
FROM DISK = N'C:\Backup\MyDatabase_Diff.bak'
WITH NORECOVERY;

-- Restore Transaction Log
RESTORE LOG [MyDatabase_Test]
FROM DISK = N'C:\Backup\MyDatabase_Log.trn'
WITH RECOVERY;

Point-in-Time Recovery เป็น feature ที่ทรงพลังมากสามารถกู้คืนข้อมูลถึงเวลาที่ต้องการได้แม่นยำเช่นถ้ามีคนทำ DELETE ข้อมูลผิดตอน 10:30 AM สามารถ restore ถึง 10:29 AM ได้โดยใช้ STOPAT parameter

Backup ไปยัง Cloud Storage

ตั้งแต่ SQL Server 2012 SP1 CU2 รองรับ backup ตรงไป Azure Blob Storage โดยไม่ต้อง backup ลง local disk ก่อน:

-- สร้าง Credential
CREATE CREDENTIAL [AzureBackupCredential]
WITH IDENTITY = 'mystorageaccount',
SECRET = 'YOUR_STORAGE_ACCESS_KEY';

-- Backup ไป Azure
BACKUP DATABASE [MyDatabase]
TO URL = 'https://mystorageaccount.blob.core.windows.net/sqlbackup/MyDatabase.bak'
WITH CREDENTIAL = 'AzureBackupCredential',
COMPRESSION, STATS = 10;

สำหรับ AWS สามารถใช้ AWS RDS ที่มี automated backup built-in หรือใช้ AWS S3 ร่วมกับ SQL Server Agent ที่ backup ลง local แล้ว upload ด้วย AWS CLI ทั้ง Azure และ AWS มี lifecycle policy ที่ย้าย backup เก่าไป cold storage อัตโนมัติเพื่อประหยัดค่าใช้จ่าย

Monitoring และ Alerts

การ backup ที่ไม่มี monitoring เท่ากับไม่มี backup เลยเพราะถ้า backup ล้มเหลวแล้วไม่มีใครรู้เมื่อต้องการ restore จะพบว่าไม่มี backup ที่ใช้ได้:

-- ตรวจสอบ backup ล่าสุดของทุก database
SELECT d.name AS DatabaseName,
 MAX(b.backup_finish_date) AS LastBackupDate,
 DATEDIFF(HOUR, MAX(b.backup_finish_date), GETDATE()) AS HoursSinceLastBackup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset b ON d.name = b.database_name
GROUP BY d.name
ORDER BY LastBackupDate;

Best Practices

สำหรับ SQL Server 2022 ขึ้นไปมี feature ใหม่ที่น่าสนใจคือ Backup to S3-compatible storage ที่รองรับ backup ตรงไป MinIO, Wasabi หรือ S3-compatible storage ใดๆทำให้ไม่จำกัดแค่ Azure Blob Storage อีกต่อไปนอกจากนี้ยังมี Integrated Acceleration and Offloading ที่ใช้ hardware acceleration สำหรับ backup compression ทำให้เร็วขึ้นอีกหลายเท่า

อีกเทคนิคที่สำคัญคือ Striped Backup ที่แบ่ง backup ออกเป็นหลายไฟล์พร้อมกันช่วยเพิ่มความเร็วในการ backup database ขนาดใหญ่ได้มากเช่น database 1TB อาจ backup เสร็จใน 30 นาทีแทนที่จะเป็น 2 ชั่วโมงโดยใช้ 4 backup files พร้อมกัน

Full Backup กับ Differential Backup ต่างกันยังไง?

Full Backup จะ backup ข้อมูลทั้งหมดในขณะนั้นส่วน Differential Backup จะ backup เฉพาะข้อมูลที่เปลี่ยนแปลงตั้งแต่ Full Backup ล่าสุดทำให้ Differential เร็วกว่าและไฟล์เล็กกว่าแต่ตอน restore ต้องใช้ทั้ง Full + Differential รวมกัน

ควร Backup ทุกกี่นาที?

ขึ้นกับ RPO (Recovery Point Objective) ขององค์กรถ้ายอมรับการสูญเสียข้อมูลได้ไม่เกิน 15 นาทีควรทำ Transaction Log Backup ทุก 15 นาที Full Backup ทุกสัปดาห์และ Differential ทุกวันสำหรับระบบที่สำคัญมากอาจต้อง backup ทุก 5 นาที

Backup SQL Server ลง Cloud ได้ไหม?

ได้ครับ SQL Server 2012 SP1 CU2 ขึ้นไปรองรับ BACKUP TO URL ที่ backup ตรงไป Azure Blob Storage ได้เลยสำหรับ AWS ใช้ S3 ร่วมกับ script upload หลัง backup หรือใช้ AWS RDS ที่มี automated backup built-in

SQL Server Express backup ได้ไหม?

ได้แต่ SQL Server Express ไม่มี SQL Server Agent จึงไม่สามารถตั้ง scheduled backup ได้โดยตรงต้องใช้ Windows Task Scheduler ร่วมกับ sqlcmd เพื่อรัน backup script เป็น scheduled task แทน

Backup file เก่าควรเก็บนานแค่ไหน?

ขึ้นกับ compliance requirements ขององค์กรโดยทั่วไปเก็บ daily backup อย่างน้อย 7-30 วัน weekly backup อย่างน้อย 3-6 เดือนและ monthly backup อย่างน้อย 1-3 ปีสำหรับข้อมูลทางการเงินอาจต้องเก็บ 7 ปีตามกฎหมาย

สรุป

การ backup database ใน SQL Server ไม่ใช่แค่รันคำสั่ง BACKUP DATABASE แล้วจบแต่ต้องมี strategy ที่ครอบคลุมตั้งแต่เลือก Recovery Model ที่เหมาะสมใช้ backup หลายประเภทตาม schedule ที่กำหนดทำตามกฎ 3-2-1 ทดสอบ restore เป็นประจำ monitor backup status ตลอดเวลาและมี recovery plan ที่พร้อมใช้งาน

Checklist สำหรับ DBA: (1) ตั้ง Full Recovery Model สำหรับ production database (2) สร้าง automated backup job ผ่าน SQL Server Agent (3) ตั้ง Transaction Log Backup ทุก 15 นาที (4) เก็บ backup offsite อย่างน้อย 1 ชุด (5) ทดสอบ restore ทุกเดือน (6) ตั้ง alert เมื่อ backup ล้มเหลว (7) เขียน disaster recovery runbook ทำตาม checklist นี้แล้วข้อมูลของคุณจะปลอดภัยเริ่มต้นวันนี้อย่ารอจนข้อมูลหายแล้วค่อยทำติดตามบทความ IT อื่นๆได้ที่ SiamCafe.net

อ่านเพิ่มเติม: บทความทั้งหมด | หน้าแรก Blog

เจาะลึก Backup Database SQL Server

การทำความเข้าใจ Backup Database SQL Server อย่างลึกซึ้งนั้นมีความสำคัญอย่างมากในยุคปัจจุบันเทคโนโลยีนี้ได้รับความนิยมเพิ่มขึ้นอย่างต่อเนื่องทั้งในระดับองค์กรและระดับบุคคลการเรียนรู้และทำความเข้าใจหลักการทำงานพื้นฐานจะช่วยให้คุณสามารถนำไปประยุกต์ใช้งานได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

ในบริบทของประเทศไทย Backup Database SQL Server มีบทบาทสำคัญในการพัฒนาโครงสร้างพื้นฐานด้านเทคโนโลยีสารสนเทศองค์กรต่างๆทั้งภาครัฐและเอกชนต่างให้ความสนใจในการนำเทคโนโลยีนี้มาใช้เพื่อเพิ่มประสิทธิภาพการทำงานและลดต้นทุนในระยะยาวความเข้าใจที่ถูกต้องจะช่วยให้การตัดสินใจเลือกใช้เครื่องมือและแนวทางปฏิบัติเป็นไปอย่างเหมาะสม

ข้อดีของการใช้ Backup Database SQL Server

สรุปแล้วบทความนี้ครอบคลุมทุกอย่างที่คุณต้องรู้หากมีคำถามเพิ่มเติมสามารถติดต่อผ่านทาง SiamCafe ได้ทันทีขอบคุณที่อ่านบทความนี้จนจบครับ