Nếu bạn gặp lỗi có nội dung Câu lệnh BACKUP LOG không được phép trong khi mô hình khôi phục là ĐƠN GIẢN khi cố gắng sao lưu cơ sở dữ liệu trong SQL Server hoặc Azure SQL Edge, đó là do bạn đang cố gắng sao lưu nhật ký giao dịch trên cơ sở dữ liệu sử dụng mô hình khôi phục đơn giản.
Để khắc phục điều này, hãy thay đổi mô hình khôi phục thành ghi nhật ký toàn bộ hoặc hàng loạt.
Lỗi
Dưới đây là một ví dụ về mã T-SQL dẫn đến lỗi:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Kết quả:
Msg 4208, Level 16, State 1, Line 1 The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
Nguyên nhân
Như đã đề cập, lỗi xảy ra khi bạn cố gắng sao lưu nhật ký giao dịch trên cơ sở dữ liệu sử dụng mô hình khôi phục đơn giản.
Mô hình khôi phục đơn giản không hỗ trợ sao lưu nhật ký.
Giải pháp
Để khắc phục sự cố này, hãy đặt mô hình khôi phục cơ sở dữ liệu thành FULL
hoặc BULK_LOGGED
:
USE master;
ALTER DATABASE Music
SET RECOVERY FULL;
Ví dụ đó đặt cơ sở dữ liệu ở chế độ khôi phục hoàn toàn.
Tuy nhiên, bạn cũng sẽ cần thực hiện ít nhất một bản sao lưu cơ sở dữ liệu đầy đủ trước khi bắt đầu sao lưu nhật ký giao dịch của mình. Nếu bạn không làm điều này, bạn sẽ gặp phải lỗi 4214, báo rằng không thể thực hiện ĐĂNG NHẬP DỰ PHÒNG vì không có bản sao lưu cơ sở dữ liệu hiện tại .
Dưới đây là một ví dụ về việc thực hiện sao lưu toàn bộ cơ sở dữ liệu:
BACKUP DATABASE Music
TO DISK = '/var/opt/mssql/backups/Music.bak'
WITH FORMAT;
Giờ đây, các bản ghi giao dịch có thể được sao lưu theo yêu cầu:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
Kết quả:
Processed 3 pages for database 'Music', file 'Music_log' on file 1.
Sử dụng Azure SQL Edge?
Nếu bạn sử dụng Azure SQL Edge, bạn có thể thấy vấn đề này xảy ra rất nhiều. Đó có thể là do cơ sở dữ liệu được tạo bằng SQL Edge sử dụng mô hình khôi phục đơn giản theo mặc định. Và đó là bởi vì model
cơ sở dữ liệu sử dụng mô hình khôi phục đơn giản.
Bạn luôn có thể thay đổi mô hình khôi phục trên model
cơ sở dữ liệu thành FULL
, điều này sẽ dẫn đến các cơ sở dữ liệu tiếp theo sử dụng chế độ khôi phục hoàn toàn theo mặc định.