Jawaban:
Jawabannya adalah tidak, untuk perangkat lunak cadangan apa pun yang digunakan.
Cadangan adalah operasi fisik, bukan operasi logis. Itu membaca semua luasan yang berisi halaman yang dialokasikan (yaitu meskipun hanya satu halaman dari tingkat 8 halaman dialokasikan, itu akan mencadangkan seluruh tingkat 64K), dan melakukannya dalam urutan fisik.
Pemulihan adalah operasi fisik, bukan operasi logis. Itu meletakkan luasan di tempat yang selayaknya dalam file data.
Membangun kembali indeks (atau semacamnya) adalah operasi logis, yang harus dicatat. Cadangkan dan pulihkan memanipulasi file data secara langsung, tanpa melalui kumpulan buffer, yang merupakan salah satu alasan mengapa hal ini tidak dapat dilakukan. Alasan lain ini tidak dapat dilakukan adalah cadangan dan pemulihan tidak memiliki pemahaman tentang apa yang terkandung dalam data yang didukung.
Alasan utama ini tidak dapat dilakukan, bagaimanapun, adalah bahwa memindahkan halaman sekitar selama operasi pemulihan akan merusak pointer b-tree. Jika halaman A menunjuk ke halaman B, tetapi halaman A dipindahkan oleh proses pemulihan, bagaimana cara halaman B diperbarui untuk menunjuk ke halaman A? Jika segera diperbarui, maka mungkin akan ditimpa oleh sisa proses pemulihan. Jika ditangguhkan diperbarui, bagaimana jika proses pemulihan mengembalikan beberapa log transaksi yang menghapus halaman A, atau halaman B? Itu tidak bisa dilakukan.
Intinya - cadangan dan pemulihan adalah operasi fisik yang tidak pernah mengubah data.
Semoga ini membantu!
PS Meskipun tidak secara langsung menjawab pertanyaan ini, lihat artikel yang saya tulis untuk July TechNet Magazine yang menjelaskan bagaimana berbagai backup bekerja secara internal: Memahami SQL Server Backups . Majalah September akan memiliki seri berikutnya tentang pemahaman mengembalikan.
Sebuah asli cadangan SQL hanya dump halaman page-by-file backup, sehingga jawabannya "tidak ada". Pencadangan lightspeed Quest kemungkinan menggunakan semacam algoritma kompresi kompresi, tetapi masih tidak akan "membangun kembali" file data atau indeks, yang akan memakan waktu sangat banyak pada database besar.
Pencadangan dilakukan secara teratur dan sangat sering (saya harap). Jadi desainer memastikan cadangan secepat mungkin. Apa I / O tercepat? Sekuensial. Anda membaca blok dari disk dalam urutan fisik yang tepat, Anda memiliki kinerja terbaik.
Mengapa di Bumi database harus melakukan operasi I / O acak rumit setiap malam , menghancurkan kepala disk di semua tempat? Perbedaannya akan sekitar dua urutan besarnya. Tidak ada untung dalam hal ini.
Hmmm. BradC, apakah Anda pernah bekerja dengan Firebird / Interbase sebelumnya - di mana utilitas backup / restore / API lebih mirip dengan "Copy Database ..." dari SSMS / EM? Jika demikian, ketahuilah bahwa MS SQL Server TIDAK menyukainya.
Cadangan SQLServer lebih merupakan dump basis data yang dipulihkan "SEBAGAIMANA ADANYA" - jadi ini lebih seperti jalan pintas online yang nyaman untuk operasi "lepaskan-salin-pasang kembali di tempat lain". Basis data yang dipulihkan hampir merupakan salinan tepat dari file basis data asli (hampir karena Anda dapat mengubah penempatan file basis data dari basis data yang dipulihkan) ...