Kembalikan file bak ke file database mdf dan ldf yang lebih kecil

11

Saya memiliki basis data warisan yang kurang mimpi buruk desain saya tidak akan masuk ke sini, tetapi file pada server (relatif) sangat besar. Saya sudah:

MyDatabase.mdf: 24.8GB
MyDatabase.ldf: 114.6GB

Basis data ini dicadangkan ke file .bak setiap malam dan dikirimkan ke server pelaporan kami, tempat file itu dipulihkan. File .bak jauh lebih kecil dengan hanya 1,8GB.

Namun, ketika saya mencoba mengembalikannya di server pelaporan, gagal karena ruang yang tidak mencukupi. Ada sekitar 100GB gratis di server, dan mencoba memakan seluruh 139,4GB yang dikonsumsi oleh file di server asli. Kecuali jika pengetahuan saya tentang kompresi salah, saya cukup yakin bahwa file 1.8GB tidak benar-benar berkembang sebesar 7400%.

Pertanyaan Saya: Apakah ada cara untuk memberitahu SQL Server untuk mengembalikan file cadangan ini tanpa menyimpan ruang di muka? Saya tidak peduli dengan salah satu log; Saya hanya perlu data untuk berada di sana. Saya mengerti basis data dari perspektif pengembangan dan skema, tapi saya sama sekali bukan DBA.

Ini pada SQL Server 2008 R2. Terima kasih atas bantuan atau saran.

eouw0o83hf
sumber

Jawaban:

11

Cadangan berisi dua informasi:

Data aktual dalam cadangan adalah 1,8 GB tersebut. Tetapi metadata menggambarkan tata letak file seperti pada server produksi asli. Meskipun terlihat seperti kompresi, bukan kompresi yang sebenarnya. Hanya metadata vs konten. masalahnya adalah bahwa selama RESTORE mesin pelaporan menciptakan tata letak seperti yang dijelaskan dalam metadata, oleh karena itu 114.6GB + 24.8GB. Sekarang untuk pertanyaan sebenarnya: dapatkah Anda mengembalikannya tanpa membuat ulang tata letak file DB asli? Tidak. Namun, ada solusi lain untuk masalah Anda: bawa kembali DB asli. Menyusutkan Log Transaksi mencakup langkah-langkah yang perlu Anda lakukan, karena log adalah titik sakit utama Anda. Selanjutnya saya akan menggunakan pengiriman log daripada backup / restore.

Remus Rusanu
sumber
Terima kasih; menyusutkan log transaksi berhasil dengan sempurna.
eouw0o83hf
1
Log pengiriman sebagai pengganti cadangan log ??
Thomas Stringer
4
@ Hiu: pengiriman log alih-alih cadangan lengkap , sebagai sarana untuk mengirimkan DB ke mesin pelaporan.
Remus Rusanu
Oh oke saya benar-benar merindukan bagian dari pertanyaan itu. Terimakasih atas klarifikasinya!!
Thomas Stringer
0

SQL Server 2012 memungkinkan untuk menggunakan hanya file database mdf dan melampirkannya ke SQL Server: http://msdn.microsoft.com/en-us/library/ms174385.aspx . SQL Server membuat file ldf baru di mana Anda dapat menentukan ukurannya. Kemudian:

  • gunakan model pemulihan sederhana untuk menjaga file log Anda tumbuh, atau
  • menggunakan model pemulihan penuh dan membuat cadangan log transaksi reguler. Ini juga akan menjaga file log dari tumbuh
Carol Baker Barat
sumber