Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbaiki:"Pernyataan BACKUP LOG tidak diizinkan saat model pemulihan SEDERHANA" di SQL Server (dan SQL Edge)

Jika Anda mendapatkan kesalahan yang berbunyi Pernyataan LOG CADANGAN tidak diizinkan saat model pemulihan SEDERHANA saat mencoba mencadangkan database di SQL Server atau Azure SQL Edge, itu karena Anda mencoba mencadangkan log transaksi di database yang menggunakan model pemulihan sederhana.

Untuk memperbaikinya, ubah model pemulihan menjadi logging penuh atau massal.

Kesalahan

Berikut ini contoh kode T-SQL yang menghasilkan kesalahan:

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

Hasil:

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.

Penyebabnya

Seperti disebutkan, kesalahan ini disebabkan ketika Anda mencoba untuk membuat cadangan log transaksi pada database yang menggunakan model pemulihan sederhana.

Model pemulihan sederhana tidak mendukung pencadangan log.

Solusinya

Untuk mengatasi masalah ini, setel model pemulihan basis data ke FULL atau BULK_LOGGED :

USE master;  
ALTER DATABASE Music 
SET RECOVERY FULL;

Contoh tersebut mengatur database ke mode pemulihan penuh.

Namun, Anda juga perlu melakukan setidaknya satu pencadangan basis data lengkap sebelum Anda mulai mencadangkan log transaksi Anda. Jika Anda tidak melakukan ini, Anda akan mendapatkan kesalahan 4214, yang menyatakan bahwa LOG CADANGAN tidak dapat dilakukan karena tidak ada cadangan database saat ini .

Berikut ini contoh melakukan pencadangan basis data lengkap:

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

Sekarang log transaksi dapat dicadangkan sesuai kebutuhan:

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

Hasil:

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

Menggunakan Azure SQL Edge?

Jika Anda menggunakan Azure SQL Edge, Anda mungkin menemukan masalah ini sering terjadi. Itu mungkin karena database yang dibuat dengan SQL Edge menggunakan model pemulihan sederhana secara default. Dan itu karena model database menggunakan model pemulihan sederhana.

Anda selalu dapat mengubah model pemulihan pada model database ke FULL , yang akan menghasilkan database berikutnya menggunakan mode pemulihan penuh secara default.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server REPLACE() vs TRANSLATE():Apa Perbedaannya?

  2. SQLException :String atau data biner akan terpotong

  3. Dapatkan garis bujur dan garis lintang terdekat dari tabel database MSSQL?

  4. SQL Server COALESCE () Dijelaskan

  5. Kembalikan Daftar Semua Pemicu Server di SQL Server