SQL Server سه نوع اصلی Backup دارد که هرکدام هدف متفاوتی دارند. یک استراتژی خوب معمولاً هر سه را با هم ترکیب میکند، نه فقط یکی از آنها.
یک نسخهی کامل از کل پایگاهداده در لحظهی گرفتن Backup. این نوع، پایه و اساس هر استراتژی بازیابی است — هر Restore ای با یک Full Backup شروع میشود.
BACKUP DATABASE ShopDB TO DISK = N'D:\Backups\ShopDB_full.bak' WITH INIT, COMPRESSION;
فقط تغییرات نسبت به آخرین Full Backup را ذخیره میکند (نه نسبت به آخرین Differential). چون معمولاً حجمش خیلی کمتر از Full است، سریعتر گرفته میشود و فضای کمتری اشغال میکند.
BACKUP DATABASE ShopDB TO DISK = N'D:\Backups\ShopDB_diff.bak' WITH DIFFERENTIAL, COMPRESSION;
فقط قابل استفاده روی Recovery Model های FULL یا BULK_LOGGED است. تمام تراکنشهای ثبتشده از آخرین Log Backup را ذخیره میکند و بهطور همزمان، Log را Truncate میکند (توضیح کامل در این راهنما). این تنها روشی است که امکان بازیابی تا لحظهی دقیق (Point-in-Time Recovery) را فراهم میکند.
BACKUP LOG ShopDB TO DISK = N'D:\Backups\ShopDB_log.trn';
| نوع Backup | چه چیزی ذخیره میکند | حجم | سرعت Restore |
|---|---|---|---|
| Full | کل پایگاهداده | زیاد | پایهی همیشه لازم |
| Differential | تغییرات از آخرین Full | متوسط | سریعتر از Log های زیاد |
| Transaction Log | همهی تراکنشها از آخرین Log Backup | کم (ولی تعداد زیاد) | امکان Point-in-Time Recovery |
برای بازگرداندن کامل پایگاهداده، باید Backup ها را به همان ترتیبی که گرفته شدهاند Restore کنی:
-- ۱. بازگرداندن آخرین Full Backup (بدون بازکردن پایگاهداده هنوز) RESTORE DATABASE ShopDB FROM DISK = N'D:\Backups\ShopDB_full.bak' WITH NORECOVERY; -- ۲. بازگرداندن آخرین Differential Backup RESTORE DATABASE ShopDB FROM DISK = N'D:\Backups\ShopDB_diff.bak' WITH NORECOVERY; -- ۳. بازگرداندن Log Backup ها بهترتیب، تا لحظهی موردنظر RESTORE LOG ShopDB FROM DISK = N'D:\Backups\ShopDB_log.trn' WITH RECOVERY;
برای جزئیات بیشتر و رفع خطاهای رایج این فرآیند، راهنمای رفع خطاهای رایج هنگام Restore کردن Database را ببین.
دورهی رایگان SQLFarsi را با درس تراکنشها ادامه بده.
ادامهی یادگیری