Mengapa ukuran file .bak bertambah / dua kali lipat dengan setiap cadangan berturut-turut pada SQL Server?

10

Saya menjalankan DB sederhana pada SQL Server 2012 Express.

Baru hari ini, ketika saya membuat cadangan basis data, .bakukuran file berlipat ganda dari cadangan sebelumnya hanya beberapa menit sebelumnya. Saya telah melakukan beberapa pencadangan hari ini (melalui SQL Server Management Studio -> jenis cadangan: penuh), dan dengan masing-masing satu .bakfile tersebut terus berlipat ganda.

Di SQL Server Mgmt Studio, ketika saya klik kanan pada DB saya -> 'Laporan' -> 'Cadangkan dan Kembalikan acara' -> rentangkan 'Operasi Pencadangan yang Sukses':

Laporan di sini menunjukkan bahwa ukuran cadangan terbaru tercatat sebagai 55MB, tetapi ketika saya pergi ke .bakfile yang sebenarnya adalah 260MB. Setiap cadangan lainnya hari ini dicatat juga sebagai ukuran 55MB, sementara .bakfile yang sesuai beberapa kali lebih besar (dan tumbuh dengan setiap operasi cadangan).

Apa yang salah? Saya belum membuat perubahan pada database sejak ini mulai terjadi.

full_prog_full
sumber

Jawaban:

14

File cadangan berisi banyak salinan dari basis data karena tidak "diinisialisasi" atau "diformat" dengan setiap cadangan.

Buka tab 'Opsi' pada kotak dialog "Cadangkan Basis Data", dan pilih "Timpa semua set cadangan yang ada":

masukkan deskripsi gambar di sini

Max Vernon
sumber
8

Saya berasumsi Anda mencadangkan ke file yang sama setiap kali. Ada opsi untuk INITatau NOINITketika Anda menjalankan cadangan. NOINIT(yang merupakan default) memberitahukannya untuk hanya menambahkan cadangan tambahan ke file.

Per BOL:

{NOINIT | INIT}

Mengontrol apakah operasi pencadangan menambahkan atau menimpa set cadangan yang ada pada media cadangan. Standarnya adalah menambahkan set cadangan terbaru pada media (NOINIT).

Jadi setiap kali Anda menjalankan cadangan 55MB, file menjadi ~ 55MB lebih besar.

Jika Anda memasukkan INITklausa dalam perintah cadangan Anda maka itu akan menimpa cadangan yang ada setiap kali.

Pilihan lain tentu saja adalah menjalankan backup Anda ke file baru setiap kali dan membersihkan file lama. Ini sering merupakan ide bagus jika salah satu cadangan saat ini buruk, atau Anda perlu memulihkan ke riwayat.

Kenneth Fisher
sumber
2

Jika Anda melakukannya langsung dalam SQL tidak menggunakan sql server studio manajemen wizard. Anda harus menentukan "NOINT" atau "INIT" saat membuat cadangan untuk mengatakan tambahkan ke file atau timpa masing-masing.

Ini SQL untuknya

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
Muhammad Abdulwanis
sumber