Katakanlah saya memiliki database SQL Server yang file datanya telah dibuat dengan ukuran awal 100 GB, tetapi hanya berisi 10 GB data. Cadangan basis data kemudian hanya berukuran 10 GB.
Saya ingin mengembalikan cadangan ini ke server yang berbeda (atau database yang berbeda di server yang sama), tetapi saya tidak ingin mengembalikan ruang disk yang sama dengan yang asli (100 GB), yang merupakan apa yang terjadi secara default.
Saya tidak dapat mengecilkan basis data asli sebelum mengambil cadangan (ini adalah basis data produksi, dan membutuhkan banyak ruang yang dialokasikan sebelumnya); Saya bisa mengecilkan database yang dipulihkan setelah pemulihan selesai, tetapi saya benar-benar lebih suka memilikinya tidak memakan waktu 100 GB saat melakukan itu; selain itu, dalam skenario khusus ini saya tidak memiliki banyak ruang disk kosong, sehingga pemulihan tidak ke mana-mana.
Apakah ada cara saya dapat mengembalikan database dan hanya mengambil ruang sebanyak data aktual yang dikandungnya ?
sumber
Jawaban:
Tidak, maaf - tidak mungkin. Pulihkan mengembalikan file saat berada di cadangan. Schinking harus dilakukan setelah itu atau sebelum mengambil cadangan.
sumber
Jika ruang hard disk Anda terbatas maka Anda dapat meletakkan file .bak di jaringan berbagi & mengembalikannya dari sana. Harus berfungsi jika server sql Anda berjalan dengan akun domain & berikan hak yang cukup bagi share untuk membaca file.
Opsi lain yang sebelumnya di dalam Anda adalah keranjang kacang (tetapi hanya berguna jika Anda menjalankan sql server 2008 r2) adalah bahwa SQL Server mendukung pembuatan file database langsung ke share tanpa harus menggunakan traceflag & saya dapat memberitahu dari pengalaman pribadi Anda itu berhasil! Jadi, Anda dapat melakukan restore WITH MOVE ke share.
sumber
Secara umum, tidak. Beberapa ide acak yang mungkin atau mungkin tidak membantu Anda:
Akhirnya, saya suka beberapa "ruang siku" di database produksi saya juga, tetapi 90GB bebas dari total 100GB terdengar agak ekstrem. Langkah-langkah berikut mungkin memberi Anda apa yang Anda butuhkan dan tidak boleh memengaruhi produksi:
DBCC SHRINKFILE ('myfile.MDF', TRUNCATEONLY)
pada file data produksi untuk sementara waktu melepaskan ruang kosong di akhir file (TRUNCATEONLY bukan IO intensif, dan tidak akan memecah indeks)DBCC SHRINKFILE
file log produksi pada saat aktivitas rendah, tepat setelah mengambil cadangan log.ALTER DATABASE MODIFY FILE
untuk menumbuhkan kembali file data produksi ke ukuran semula.Seharusnya tidak ada dampak produksi menggunakan langkah-langkah ini. Satu-satunya risiko adalah jika beberapa data kebetulan berada di bagian paling akhir dari file data 100GB, dalam hal ini Langkah (1) tidak akan merilis banyak jika ada ruang.
sumber