sql >> Databáze >  >> RDS >> Sqlserver

Oprava:„Příkaz BACKUP LOG není povolen, když je model obnovy JEDNODUCHÝ“ v SQL Server (a SQL Edge)

Pokud se zobrazí chyba, která zní Příkaz BACKUP LOG není povolen, když je model obnovy JEDNODUCHÝ když se pokoušíte zálohovat databázi na SQL Server nebo Azure SQL Edge, je to proto, že se pokoušíte zálohovat protokoly transakcí v databázi, která používá jednoduchý model obnovy.

Chcete-li tento problém vyřešit, změňte model obnovy na úplné nebo hromadné protokolování.

Chyba

Zde je příklad kódu T-SQL, který vede k chybě:

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

Výsledek:

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.

Příčina

Jak již bylo zmíněno, chyba je způsobena při pokusu o zálohování protokolů transakcí v databázi, která používá jednoduchý model obnovy.

Jednoduchý model obnovy nepodporuje zálohy protokolů.

Řešení

Chcete-li tento problém vyřešit, nastavte model obnovy databáze buď na FULL nebo BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Tento příklad nastavil databázi do režimu úplné obnovy.

Před zahájením zálohování protokolů transakcí však také budete muset provést alespoň jednu úplnou zálohu databáze. Pokud to neuděláte, zobrazí se chyba 4214, která říká, že ZÁLOHOVÁNÍ LOG nelze provést, protože neexistuje žádná aktuální záloha databáze .

Zde je příklad provedení úplné zálohy databáze:

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

Nyní lze protokoly transakcí zálohovat podle potřeby:

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

Výsledek:

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

Používáte Azure SQL Edge?

Pokud používáte Azure SQL Edge, možná zjistíte, že k tomuto problému dochází často. Je to pravděpodobně proto, že databáze vytvořené pomocí SQL Edge používají ve výchozím nastavení jednoduchý model obnovy. A to proto, že model databáze používá jednoduchý model obnovy.

Model obnovy můžete kdykoli změnit na model databáze FULL , což povede k tomu, že následné databáze budou ve výchozím nastavení používat režim úplné obnovy.


  1. přístup odepřen pro načtení datového vstupního souboru v MySQL

  2. O SQLite

  3. Pattern Matching:Více zábavy, když jsem byl dítě

  4. SQL Server – chybí NATURAL JOIN / x JOIN y USING (pole)