Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Поправка:„Изявлението BACKUP LOG не е разрешено, докато моделът за възстановяване е ПРОСТО“ в SQL Server (и SQL Edge)

Ако получите грешка, която гласи Изявлението BACKUP LOG не е разрешено, докато моделът за възстановяване е ПРОСТО когато се опитвате да архивирате база данни в SQL Server или Azure SQL Edge, това е, защото се опитвате да архивирате регистрационните файлове на транзакциите в база данни, която използва прост модел за възстановяване.

За да коригирате това, променете модела за възстановяване на пълно или групово регистриране.

Грешката

Ето пример за T-SQL код, който води до грешката:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Резултат:

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.

Причината

Както споменахме, грешката се причинява, когато се опитате да архивирате регистрационните файлове на транзакциите в база данни, която използва прост модел за възстановяване.

Простият модел за възстановяване не поддържа архивиране на регистрационни файлове.

Решението

За да преодолеете този проблем, задайте модела за възстановяване на базата данни на FULL или BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Този пример настрои базата данни в режим на пълно възстановяване.

Въпреки това ще трябва да извършите поне едно пълно архивиране на базата данни, преди да започнете да архивирате вашите регистрационни файлове за транзакции. Ако не направите това, ще получите грешка 4214, която гласи, че BACKUP LOG не може да се изпълни, защото няма текущо архивиране на базата данни .

Ето пример за извършване на пълно архивиране на база данни:

BACKUP DATABASE Music 
    TO DISK = '/var/opt/mssql/backups/Music.bak' 
    WITH FORMAT;

Сега регистрационните файлове на транзакциите могат да бъдат архивирани според нуждите:

BACKUP LOG Music 
TO DISK = '/var/opt/mssql/backups/Music.trn';

Резултат:

Processed 3 pages for database 'Music', file 'Music_log' on file 1.

Използвате Azure SQL Edge?

Ако използвате Azure SQL Edge, може да откриете, че този проблем се случва често. Това вероятно е защото базите данни, създадени с SQL Edge, използват простия модел за възстановяване по подразбиране. И това е защото model база данни използва прост модел за възстановяване.

Винаги можете да промените модела за възстановяване на model база данни до FULL , което ще доведе до последващи бази данни, използващи режим на пълно възстановяване по подразбиране.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да напиша UTF-8 знаци с помощта на групово вмъкване в SQL Server?

  2. Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи

  3. 6 начина за конвертиране на низ в стойност на дата/час в SQL Server

  4. Променете паролата за вход в SA в SQL Server (пример за T-SQL)

  5. Променете формата на датата за текущата сесия в SQL Server