Backup

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:

  1. 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ạng YYYY-MM-DD để thêm vào tên tệp sao lưu.
  2. 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).
  3. 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.
  4. Đó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.

Leave a Reply

Your email address will not be published. Required fields are marked *