'Bersihkan' file database SQL Server yang dibuat dengan Inisialisasi File Instan diaktifkan?

8

Saya memiliki Inisialisasi File Instan yang diaktifkan di SQL Server kami, jadi bagian 'kosong' dari file database tidak diunggulkan sebelum dialokasikan. Pemahaman saya adalah ini berarti bahwa file tersebut dapat berisi data yang 'dihapus'.

Jadi sekarang saya ingin mengirim salinan database (mungkin file cadangan) di luar perusahaan. Tapi ada semua data 'dihapus' yang berpotensi sensitif yang ada di dalam file. Sekarang saya ingin nol bagian file yang tidak terpakai.

Apakah itu mungkin? Saya membayangkan saya bisa membuat database baru dan menyalin semuanya, atau mungkin mengembalikan salinan database ke server lain tanpa Inisialisasi File Instan diaktifkan dan kemudian menjadi agresif dengan perintah ShrinkFile untuk menghapus sebagian besar atau semua bagian yang tidak terpakai dari file database , tetapi adakah metode yang kurang manual dan memakan waktu? Idealnya sebuah perintah untuk memberi tahu SQL pada nol file seperti yang akan dilakukan jika Inisialisasi File Instan tidak diaktifkan.

paH
sumber
Untuk referensi umum, inisialisasi file data instan dapat dinonaktifkan sementara tanpa mengacaukan dengan izin akun layanan dengan menggunakan jejak bendera 1806 seperti yang dituliskan oleh blog Paul Randal di sini .
Jon Seigel

Jawaban:

5

CADANGAN SQL Server hanya mencadangkan luasan yang sedang digunakan untuk menyimpan data. Cakupan yang tidak digunakan ditinggalkan oleh cadangan. Ketika halaman digunakan untuk data, itu akan diformat untuk digunakan sesuai kebutuhan, sehingga halaman itu akan bebas dari data lama.

Karena itu, yang harus Anda lakukan adalah membuat cadangan basis data dan memulihkannya di tempat lain. File yang dipulihkan akan memiliki ukuran yang sama dengan database asli, tetapi luasan yang tidak digunakan akan dibuat menggunakan kemampuan server target. Ini dapat diinisialisasi penuh atau langsung diinisialisasi menggunakan blok disk pada server target.

Namun, karena luasan adalah tingkat di mana cadangan terjadi, halaman yang tidak digunakan sejauh mungkin masih berpotensi mengekspos beberapa data ketika dipulihkan pada server lain. Tidak sebanyak yang bisa diekspos di server sumber, karena luasan yang tidak digunakan tidak dipulihkan.

RLF
sumber
1
Sebenarnya luasan yang tidak digunakan . Secara teoritis bahkan beberapa luasan yang digunakan masih dapat berisi ruang dengan 'data lama', yang tidak berarti menggiring bola untuk SQLServer tetapi mungkin menjadi harta karun bagi pesaing yang dipersenjatai dengan hex editor dan banyak waktu luang. Jika data Anda sangat sensitif, bukankah Anda akan mem-zeroing semua file?
John Alan
@JohnAlan - Dimodifikasi untuk mengakui paparan dalam luasan.
RLF
Data itu bukan barang GCHQ - itu hanya data dasar pelanggan dan sejenisnya, jadi tidak mungkin ada orang yang akan berusaha terlalu keras untuk mengambilnya. Saya tidak menyadari bahwa cadangan berfungsi seperti itu, meskipun masuk akal bahwa itu harus dilakukan. Jika tidak ada solusi cepat dan sederhana lainnya maka itu mungkin akan dilakukan.
paulH
1

Sudahkah Anda mempertimbangkan untuk mengembalikan salinannya, mengaktifkan TDE yang akan memaksanya keluar, lalu menonaktifkan TDE lagi? Saya belum menguji ini tetapi saya pikir itu akan berhasil, kita harus mengujinya.

Hal lain juga, sudahkah Anda mempertimbangkan untuk mengembalikan salinannya dengan IFI dinonaktifkan, membuat grup grup baru dengan file-file baru, mempresentasikannya, membangun kembali indeks berkerumun dan lainnya pada filegroup baru, kemudian menjatuhkan filegroup yang ada (Jika itu adalah filegroup utama Anda harus mengecilkannya karena Anda tidak dapat menghapus yang utama)

Ali Razeghi
sumber
Menggunakan TDE terdengar seperti pendekatan yang menarik, meskipun saya tidak yakin apakah itu akan menghapus data yang tidak diinginkan daripada metode pencadangan dan pemulihan. Jika ada yang tahu informasi lebih lanjut tentang itu maka saya akan tertarik untuk mengetahuinya.
paulH