Trong bài viết này, chúng ta sẽ tìm hiểu cách sao lưu (backup) và phục hồi (restore) một cơ sở dữ liệu SQL Server bằng T-SQL. Đoạn script dưới đây giúp sao lưu một database gốc và khôi phục nó sang một database mới với tên khác.
1. Giới thiệu
Khi làm việc với SQL Server, việc sao lưu và phục hồi cơ sở dữ liệu là một nhiệm vụ quan trọng để đảm bảo dữ liệu được bảo vệ và có thể khôi phục khi cần thiết. Script dưới đây sẽ giúp bạn:
- Sao lưu database gốc vào một file
.bak
. - Phục hồi database từ file sao lưu vào một database mới.
2. Chi tiết Script
DECLARE @SourceDB NVARCHAR(100) = 'QuanLyKhoDienThoai'; -- Database gốc
DECLARE @TargetDB NVARCHAR(100) = 'TuanLe_ThuongKPI'; -- Database đích
DECLARE @BackupPath NVARCHAR(200) = 'C:\Backup\' + @SourceDB + '.bak';
DECLARE @DataFile NVARCHAR(200) = 'C:\Backup\' + @TargetDB + '.mdf';
DECLARE @LogFile NVARCHAR(200) = 'C:\Backup\' + @TargetDB + '_log.ldf';
DECLARE @SQL NVARCHAR(MAX);
-- Backup database
DECLARE @BackupSQL NVARCHAR(MAX);
SET @BackupSQL =
'BACKUP DATABASE ' + QUOTENAME(@SourceDB) +
' TO DISK = ''' + @BackupPath + '''
WITH FORMAT, MEDIANAME = ''SQLServerBackup'', NAME = ''Full Backup of ' + @SourceDB + ''';';
PRINT @BackupSQL;
EXEC sp_executesql @BackupSQL;
-- Restore database
DECLARE @RestoreSQL NVARCHAR(MAX);
SET @RestoreSQL =
'RESTORE DATABASE ' + QUOTENAME(@TargetDB) +
' FROM DISK = ''' + @BackupPath + '''
WITH MOVE ''QuanLyHangMay'' TO ''' + @DataFile + ''',
MOVE ''QuanLyHangMay_log'' TO ''' + @LogFile + ''';';
PRINT @RestoreSQL;
EXEC sp_executesql @RestoreSQL;
3. Giải thích Script
Bước 1: Khai báo các biến cần thiết
@SourceDB
: Tên database gốc cần sao lưu.@TargetDB
: Tên database mới để khôi phục.@BackupPath
: Đường dẫn lưu file sao lưu (.bak
).@DataFile
&@LogFile
: Đường dẫn file dữ liệu (.mdf
) và log (.ldf
) của database khôi phục.
Bước 2: Backup Database
Lệnh BACKUP DATABASE
tạo bản sao lưu của database gốc và lưu vào file .bak
. Câu lệnh WITH FORMAT
đảm bảo file backup được ghi mới hoàn toàn, không ghi chồng lên các bản sao lưu cũ.
Bước 3: Restore Database
Lệnh RESTORE DATABASE
lấy file sao lưu và phục hồi thành một database mới. Câu lệnh WITH MOVE
giúp gán lại đường dẫn file dữ liệu và log, tránh xung đột với database gốc.
4. Lưu Ý Quan Trọng
- Đảm bảo đường dẫn
C:\Backup\
tồn tại và SQL Server có quyền đọc/ghi vào thư mục này. - Thay thế
'QuanLyHangMay'
và'QuanLyHangMay_log'
bằng tên file dữ liệu và log thực tế của database gốc. - Nếu database đích (
@TargetDB
) đã tồn tại, bạn cần xóa nó trước khi restore bằng lệnhDROP DATABASE [TuanLe_ThuongKPI]
.
5. Kết Luận
Với script này, bạn có thể dễ dàng sao lưu và phục hồi database SQL Server một cách tự động. Hy vọng bài viết này giúp bạn hiểu rõ hơn về quá trình backup và restore trong SQL Server.