Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khắc phục:“Không cho phép câu lệnh BACKUP LOG trong khi mô hình khôi phục là ĐƠN GIẢN” trong SQL Server (và SQL Edge)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối MSSQL CodeIgniter

  2. Cách tìm vị trí tệp mặc định cho tệp dữ liệu và tệp nhật ký trong SQL Server

  3. SQL Server 2016:Chèn dữ liệu

  4. Lược đồ cơ sở dữ liệu, tự động tăng

  5. lỗi 'datetime2' khi sử dụng khung thực thể trong VS 2010 .net 4.0