TIN VẮN:

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

07/08/2019 10:46:36 AM         

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 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.
Chung nhan Tin Nhiem Mang
Bản quyền ©2011 thuộc về Trung tâm Chuyển đổi số tỉnh Quảng Ngãi
Địa chỉ: 118 Hùng Vương, thành phố Quảng Ngãi, tỉnh Quảng Ngãi.
Điện thoại: Hỗ trợ chữ ký số: 0255 3828022  - Trung tâm Dữ liệu tỉnh: 02553 847768  - Hỗ trợ kỹ thuật: 0255 3 718 167 - Giám đốc: Di động: 0941.121.279 - Zalo: 0941.121.279
Email: trungtam-stttt@quangngai.gov.vn Website: nuian.vn
Số giấy phép: 02/GP-TTĐT cấp ngày 30/5/2018 của Sở Thông tin và Truyền thông Quảng Ngãi
 
THỐNG KÊ TRUY CẬP
  • 1088 Đang truy cập:
  • Tổng lượt: