Việc sao lưu cơ sở dữ liệu là một phần quan trọng trong việc bảo vệ dữ liệu và đảm bảo tính toàn vẹn của hệ thống. Trong hướng dẫn này, bạn sẽ học cách sao lưu tất cả các cơ sở dữ liệu trên SQL Server (ngoại trừ các cơ sở dữ liệu hệ thống) vào một thư mục cụ thể trên hệ thống của bạn.
Bước 1: Xác định Đường Dẫn Thư Mục Lưu Backup
Đầu tiên, bạn cần xác định đường dẫn thư mục nơi bạn muốn lưu các tệp sao lưu. Trong ví dụ này, đường dẫn được đặt là C:\Backup\
.
Bước 2: Viết Mã SQL Backup
Dưới đây là mã SQL hoàn chỉnh để sao lưu tất cả các cơ sở dữ liệu:
DECLARE @BackupPath NVARCHAR(255) = 'C:\Backup\'; -- Đường dẫn thư mục lưu file backup
DECLARE @DBName NVARCHAR(255);
DECLARE @BackupFile NVARCHAR(500);
DECLARE @CurrentDate NVARCHAR(10) = CONVERT(NVARCHAR(10), GETDATE(), 120); -- Lấy ngày hiện tại theo định dạng YYYY-MM-DD
DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb'); -- Loại bỏ các database hệ thống
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @DBName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @BackupFile = @BackupPath + @DBName + '-' + @CurrentDate + '.bak';
DECLARE @SQL NVARCHAR(MAX) = 'BACKUP DATABASE [' + @DBName + '] TO DISK = ''' + @BackupFile + ''' WITH INIT, FORMAT';
EXEC sp_executesql @SQL;
FETCH NEXT FROM db_cursor INTO @DBName;
END
CLOSE db_cursor;
DEALLOCATE db_cursor;
PRINT N'Backup hoàn tất cho tất cả database!';
Giải Thích Mã SQL:
- Khởi tạo biến:
@BackupPath
: Xác định đường dẫn thư mục mà các tệp sao lưu sẽ được lưu vào.@DBName
: Dùng để chứa tên của từng cơ sở dữ liệu.@BackupFile
: Dùng để chứa tên tệp sao lưu của mỗi cơ sở dữ liệu.@CurrentDate
: Lấy ngày hiện tại theo định dạngYYYY-MM-DD
để thêm vào tên tệp sao lưu.
- Tạo con trỏ (cursor):
- Sử dụng con trỏ để duyệt qua tất cả các cơ sở dữ liệu trong hệ thống, ngoại trừ các cơ sở dữ liệu hệ thống (
master
,tempdb
,model
,msdb
).
- Sử dụng con trỏ để duyệt qua tất cả các cơ sở dữ liệu trong hệ thống, ngoại trừ các cơ sở dữ liệu hệ thống (
- Lặp qua từng cơ sở dữ liệu:
- Với mỗi cơ sở dữ liệu, tạo một câu lệnh
BACKUP DATABASE
và thực thi nó để sao lưu cơ sở dữ liệu vào thư mục đã chỉ định. - Mỗi tệp sao lưu sẽ có tên theo cấu trúc:
[Tên Cơ Sở Dữ Liệu]-[Ngày Hiện Tại].bak
.
- Với mỗi cơ sở dữ liệu, tạo một câu lệnh
- Đóng con trỏ:
- Khi đã sao lưu xong tất cả các cơ sở dữ liệu, đóng và giải phóng con trỏ.
Bước 3: Chạy Mã SQL
Sau khi đã chuẩn bị mã SQL, bạn có thể chạy trực tiếp trên SQL Server Management Studio (SSMS) hoặc bất kỳ công cụ nào hỗ trợ SQL Server. Khi thực thi mã SQL, hệ thống sẽ tự động sao lưu tất cả các cơ sở dữ liệu (ngoại trừ các cơ sở dữ liệu hệ thống) vào thư mục đã chỉ định.
Bước 4: Kiểm Tra Kết Quả
Sau khi quá trình sao lưu hoàn tất, bạn sẽ thấy thông báo:
'Backup hoàn tất cho tất cả database!'.
Đi đến thư mục C:\Backup\
(hoặc đường dẫn bạn đã chỉ định) và kiểm tra các tệp sao lưu đã được tạo.
Với phương pháp này, bạn có thể tự động sao lưu tất cả các cơ sở dữ liệu trên SQL Server mà không cần phải sao lưu từng cơ sở dữ liệu một cách thủ công.