Cấp bậc tác giả:

DATABASE

Sao lưu tất cả database của SQL Server

Được viết bởi QuangIT ngày 08/07/2012 lúc 10:59 AM
Đôi khi nhiều thứ dường như có vẻ phức tạp thì lại đơn giản hơn những gì bạn nghĩ và đây là sức mạnh của việc sử dụng câu lệnh T-SQL để thực hiện những công việc lặp đi lặp lại.
  • 0
  • 7098
Tải tệp tin: Click ở đây

Sao lưu tất cả database của SQL Server

Đôi khi nhiều thứ dường như có vẻ phức tạp thì lại đơn giản hơn những gì bạn nghĩ và đây là sức mạnh của việc sử dụng câu lệnh T-SQL để thực hiện những công việc lặp đi lặp lại. Một trong những công việc này có lẽ là việc backup tất cả các cơ sở dữ liệu trong server của bạn. Điều này không có gì lớn nếu như bạn chỉ có một vài cơ sở dữ liệu, nhưng có những server chứa tới hàng trăm cơ sở dữ liệu trên một instance của SQL Server thì vấn đề bắt đầu nảy sinh. Bạn có thể sử dụng tiện ích Enterprise Manager để backup các cơ sở dữ liệu, hoặc thậm chí dùng Maintenance Plans để lên kế hoạch bảo trì, songT-SQL vẫn cho phép bạn thực hiện dễ dàng và nhanh chóng hơn nhiều.
Với việc sử dụng của T-SQL bạn có thể tạo ra các lệnh dự phòng của bạn và với việc sử dụng con trỏ, bạn có thể trỏ qua tất cả các cơ sở dữ liệu của bạn để backup chúng từng cái một. Đây là một quá trình thẳng tiến và bạn chỉ cần một số ít các lệnh để làm điều này.
Đây là script cho phép bạn sao lưu mỗi cơ sở dữ liệu trong instance SQL Server của bạn. Bạn cần thay đổi biến @path để dẫn tới thư mục dự phòng phù hợp và các tập tin sao lưu sẽ đưa vào tên có dạng "DBnameYYYDDMM.BAK".


DECLARE @name VARCHAR(50) -- database name 
DECLARE @path VARCHAR(256) -- path for backup files 
DECLARE @fileName VARCHAR(256) -- filename for backup 
DECLARE @fileDate VARCHAR(20) -- used for file name 
SET @path = 'C:\Backup\' 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb') 
OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name 
WHILE @@FETCH_STATUS = 0 
BEGIN 
SET @fileName = @path + @name + '_' + @fileDate + '.BAK' 
BACKUP DATABASE @name TO DISK = @fileName 
FETCH NEXT FROM db_cursor INTO @name 
END 
CLOSE db_cursor 
DEALLOCATE db_cursor 
Trong script này chúng ta bỏ qua các cơ sở dữ liệu hệ thống, nhưng những cơ sở dữ liệu này cũng có thể đưa vào dễ dàng như vậy. Bạn cũng có thể hay đổi script này thành một thủ tục được lưu trữ và truyền vào tên cơ sở dữ liệu hoặc nếu để là NULL thì nó sẽ sao lưu tất cả các cơ sở dữ liệu.

Nguồn bài viết: hmweb.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML