Saya punya database dev SQL server 2005 yang merupakan salinan live 30GB. Kami telah menghapus beberapa data yang tidak diperlukan di dev, yang membawa ruang file data yang digunakan menjadi 20GB. Jadi kami memiliki sekitar 33% yang tidak digunakan.
Saya perlu merebut kembali ruang, yang akan memungkinkan kita untuk memiliki DB dev kedua di server (berdasarkan versi pengurangan); Namun, saya tidak bisa mendapatkan kembali ruang, saya telah melakukan hal berikut:
Ukuran awal file
SMS2_Data
adalah 30GB.DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY)
diikuti oleh
DBCC SHRINKFILE (N'SMS2_Data' , 19500)
Tidak ada sukacita Saya telah mencoba membuat cadangan, membuat DB baru dengan ukuran awal yang rendah kemudian memulihkan, tidak ada kesenangan karena ukuran awal akan ditimpa. Sudah juga mencoba:
ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000)
Ini salah, mengatakan:
MODIFIKASI FILE gagal. Ukuran yang ditentukan kurang dari ukuran saat ini.
Saya mencoba 20800 dan kemudian terus naik hingga 29000 (29GB) dan masih tidak akan membiarkan saya mengubahnya.
Telah melakukan menyusut kemudian mengubah mode pemulihan dari FULL
ke SIMPLE
dan kembali lagi. Tidak ada sukacita
Saya pikir itu ada hubungannya dengan beberapa TEXT
bidang. Kami memiliki sekitar 6 di seluruh sistem. Jadi sebagai ujian saya menjatuhkan mereka semua dan kemudian melakukan penyusutan file dan masih tidak ada perubahan.
Satu-satunya pilihan yang tersisa adalah mengimpor kembali data ke DB lain. Ini tidak praktis, karena harus dilakukan pada live DB, yang membawa terlalu banyak risiko. Kami semi-rutin mengambil salinan DB langsung dan menimpa dev / test. Kami memiliki sekitar 500 tabel. Saya ingin cara melakukannya yang tidak akan memiliki risiko mengekspor data ke DB baru.
Saya mencoba memindahkan data ke file lain, dan itu menyalin semua kecuali 5% dari data. Inilah yang membuat saya mencoba dan menjatuhkan semua kolom teks.
Server berada pada mode kompatibilitas 90, tetapi SP2. Saya sekarang telah melakukan 3 kali berikut: indeks ulang semua tabel, database cadangan, menyusut file, menyusutkan database. Masih tidak ada sukacita.
EXECUTE sp_spaceused
pengembalian:
database_name database_size unallocated space
SMS2Tests 31453.94 MB 13903.16 MB
reserved data index_size unused
16545568 KB 10602264 KB 4254360 KB 1688944 KB