Yêu cầu: Tôi muốn backup tất cả Database trong hệ thống (hệ quản trị CSDL SQL Server 2008 làm ví dụ)
Hướng giải quyết: Bạn hãy xem tất cả DataBase trong hệ thống là một danh sách. Chúng ta sẽ duyệt danh sách này theo từng dòng và mỗi dòng bạn thực hiện thao tác Backup tương ứng với nó.
Phân tích:
-Nên đặt tên DataBase sẽ backup theo dạng:
TenDataBase_Ngay_+’.bak’
-Tạo một con trỏ duyệt danh sách các DataBase của hệ thống.
-Thực hiện BackupData tương ứng.
Mẫu code:
DECLARE @name VARCHAR(50) — Tên Databse sẽ duyệt
DECLARE @path VARCHAR(256) — đường dẫn file backup
DECLARE @fileName VARCHAR(256) — tên file backup
DECLARE @fileDate VARCHAR(20) — đường dẫn để đặt theo tên từng file backup
SET @path = ‘D:\ThuMucbackUp\’ — thu muc chua cac file duoc Backup
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)–ngay thang se backup
–Định nghĩa Cursor
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases –lấy danh sách tên DataBase từ hệ thống
WHERE name NOT IN (‘master’,’model’,’msdb’,’tempdb’) –những DataBase không cần backup, nếu bạn muốn backup hết thì bỏ dòng này
OPEN db_cursor –mở con trỏ để duyệt danh sách
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + ‘_’ + @fileDate + ‘.BAK’ — Tên Datase sẽ được lưu.
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name –duyet record kế tiếp
END
CLOSE db_cursor –đóng con trỏ
DEALLOCATE db_cursor — giải phóng con trỏ
Bạn có thể cài đặt 1 Job trong SQL SERVER để thực hiện tự động việc backup này.