Tự động sao lưu database trong Microsoft SQL Server theo đặt lịch

12:12 Chiều - 02/06/2018
3 Bình luận
2902
bởi CỔ Ý Concept

Hôm nay, mình sẽ giới thiệu với các bạn một phương pháp sao lưu tất cả cơ sở dữ liệu tự động vào khung giờ thấp điểm trong ngày, mà không phải sao lưu bằng tay đối với Microsoft SQL Server Express 2008 & 2012 (Phiên bản miễn phí không tích hợp SQL Server Agen).

Hiện tại trên mạng có rất nhiều bài hướng dẫn sao lưu dữ liệu cơ sở dữ liệu(database) nhưng đa phần là hướng dẫn sử dụng dịch vụ SQL Server Agen tích hợp trong phiên bản SQL Server trả phí. Đối với phiên bản Microsoft SQL Server Express(Miễn phí) vẫn có dịch vụ SQL Server Agen đi kèm(bạn có thể nhìn thấy trong service.msc) nhưng khi “start service” này sẽ nhận thông báo lỗi sau:

Tự động sao lưu database Microsoft SQL Server(automatic backup database) - Hình 2
Lỗi này làm mình mất khá nhiều thời gian tìm hiểu nguyên nhân, nguyên nhân đơn giản là bạn đang dùng bản miễn phí, chỉ như vậy thôi.

Môi trường thử nghiệm :

  • Microsoft SQL Server Express 2012
  • Sử dụng cơ chế xác thực Windows Authentication

Sau đây mình xin hướng dẫn bạn sao lưu tự động cơ sở dữ liệu (auto backup database) với Microsoft SQL Server Express 2008 & 2012 phiên bản không hổ trợ SQL Server Agen :

  • Bước 1: Mở SQL Server Management Studio và chọn “New Query” sau đó chép và dán script bên dưới.

DECLARE @name VARCHAR(50) —database name
DECLARE @path VARCHAR(256) —duong dan file backup
DECLARE @fileName VARCHAR(256) —ten file backup
DECLARE @fileDate VARCHAR(20) —lay ngay backup

SET @path = ‘C:\backupDB\DB\’

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

Các bạn khi copy trên web có thể sẽ bị lỗi dấu nháy và gạch ngang, các bạn có thể vào đây lấy script trên chính xác nhất : https://goo.gl/EmYEq4

Script trên sẽ sao lưu tất cả database của bạn vào ổ  “C:\backupDB\DB\”, bạn chọn “Execute” để chạy thử. Bạn có thể thay đổi đường dẫn lưu file backup sao cho phù hợp với hệ thống của bạn.

Sau khi “Execute” thành công, bạn lưu lại file SQL với nội dung trên. Ở đây mình sẽ lưu tại “C:\backupDB\” với tên là backup.sql .

  • Bước 2: Tạo batch script thực thi file SQL vừa tạo ở Bước 1.

Bạn mở notepad với nội dung bên dưới sau đó lưu  lại thành một file đuôi .bat ở đây mình tạo một file backup.bat cùng với thư mục chứa file backup.sql

sqlcmd -S WIN-ABCD1234\MSSQLSERVER2012 -i C:\backupDB\backup.sql

Bạn cần thay đổi “WIN-ABCD1234\MSSQLSERVER2012” thành Server name tại trang truy cập SQL Server Management Studio, và thay đổi C:\backupDB\backup.sql cho phù hợp đường dẫn file SQL bên trên.

Tự động sao lưu database Microsoft SQL Server(automatic backup database) - Hình 2

Giao diện đăng nhập SQL Server Management Studio.

  • Bước 3: Kích hoạt đặt lịch sao lưu tự động với Windows Task Scheduler (auto backup database).

Start > Seach > Task Scheduler

Action > Create Task > Đặt tên “Task” > Thêm mô tả công việc(Description)

Chọn “Run whether user is logged on or not” (Công việc vẫn tiến hành khi bạn không truy cập server)

Triggers > Tạo mốc thời gian bạn cần “Task” chạy ( Ở đây mình đặt chạy auto backup database mỗi ngày vào 2h sáng)

Actions > New > Action : Start a program > Settings > Trỏ đường dẫn đến file backup.bat (Ở đây của mình sẽ là C:\backupDB\backup.bat )

Ok

Các bạn có thể chạy thử Task Scheduler đã hoạt động chưa bằng cách nhấn nút “Run”  như hình sau, nếu mọi thứ hoạt động bình thường sẽ có những file .bak sinh ra tại đường dẫn C:\backupDB\DB\ .Tự động sao lưu database Microsoft SQL Server(automatic backup database) - hình 1

Như vậy bạn đã đặt lịch thành công rồi. Chúc các bạn thực hiện thành công.

Các bài viết nên xem thêm nếu sử dụng hệ thống chạy Directadmin:

Cài đặt OPcache Directadmin chạy CustomBuild 2.0

Thay đổi cấu hình OPcache Directadmin(config opcache directadmin)

Bật tính năng chạy nhiều phiên bản PHP trên Server/VPS Directadmin

Directadmin Phân vùng /var/lib/mysql/ chiếm nhiều dung lượng

Kiểm tra phiên bản CustomBuild đang sử dụng (check custombuild version)

Nâng cấp phiên bản CustomBuild từ 1.x lên 2.0

Tác giả: Cổ Ý Concept

Theo: Nguyên Bảo

Nguồn: gocit.vn

trưởng 05:56Chiều - 30/11/2018

Cho mình hỏi là làm thế nào để backup lại dữ liệu của một vài năm trước (không backup toàn bộ thời gian)

    CỔ Ý Concept 01:43Chiều - 26/04/2019

    Ca này khó quá 🙁 Chắc chờ cao nhân vào trả lời.

IT 07:18Sáng - 26/06/2019

minh thực hiện backup vẫn bị ghi chồng lên file có Bác nào biết tách hoặc ghi đè lên cho đỡ tốn dung lượng k ạ

*
*

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Scroll Top