Một ví dụ về cursor trong SQL Server

Xin chào tất cả các bạn, những ai đang theo học môn CSDL thì cũng đã từng hoặc sẽ học qua Cursor. Để hiểu rõ hơn về vấn đề này chúng ta theo dõi bài toán sau:

Yêu cầu: Tôi muốn backup tất cả Database trong hệ thống (hệ quản trị CSDL SQL Server 2005 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ỏ

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: