Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Poprawka:„Oświadczenie BACKUP LOG jest niedozwolone, gdy model odzyskiwania jest PROSTY” w SQL Server (i SQL Edge)

Jeśli pojawi się błąd, który brzmi Instrukcja BACKUP LOG jest niedozwolona, ​​gdy model odzyskiwania jest PROSTY gdy próbujesz wykonać kopię zapasową bazy danych w SQL Server lub Azure SQL Edge, dzieje się tak, ponieważ próbujesz wykonać kopię zapasową dzienników transakcji w bazie danych, która korzysta z prostego modelu odzyskiwania.

Aby to naprawić, zmień model odzyskiwania na pełne lub zbiorcze rejestrowanie.

Błąd

Oto przykład kodu T-SQL, który powoduje błąd:

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

Wynik:

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.

Przyczyna

Jak wspomniano, błąd jest powodowany podczas próby wykonania kopii zapasowej dzienników transakcji w bazie danych, która korzysta z prostego modelu odzyskiwania.

Prosty model odzyskiwania nie obsługuje kopii zapasowych dziennika.

Rozwiązanie

Aby rozwiązać ten problem, ustaw model odzyskiwania bazy danych na FULL lub BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

W tym przykładzie baza danych została ustawiona w tryb pełnego odzyskiwania.

Jednak przed rozpoczęciem tworzenia kopii zapasowych dzienników transakcji konieczne będzie wykonanie co najmniej jednej pełnej kopii zapasowej bazy danych. Jeśli tego nie zrobisz, otrzymasz błąd 4214, który stwierdza, że ​​LOGU KOPII ZAPASOWEJ nie można wykonać, ponieważ nie ma bieżącej kopii zapasowej bazy danych .

Oto przykład wykonania pełnej kopii zapasowej bazy danych:

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

Teraz można wykonać kopię zapasową dzienników transakcji zgodnie z wymaganiami:

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

Wynik:

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

Korzystasz z Azure SQL Edge?

Jeśli korzystasz z usługi Azure SQL Edge, może się okazać, że ten problem występuje często. Dzieje się tak prawdopodobnie dlatego, że bazy danych utworzone za pomocą SQL Edge domyślnie korzystają z prostego modelu odzyskiwania. A to dlatego, że model baza danych używa prostego modelu odzyskiwania.

Zawsze możesz zmienić model odzyskiwania na model baza danych do FULL , co spowoduje, że kolejne bazy danych będą domyślnie korzystać z pełnego trybu odzyskiwania.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Scal nakładające się interwały dat

  2. Jak usunąć tagi HTML z ciągu w SQL Server?

  3. Pobieranie tylko Miesiąca i Roku z SQL DATE

  4. Nie można połączyć się z serwerem SQL za pomocą PHP

  5. Jak przechowywać obrazy w kolumnie varbinary(max)?