Risposte:
La risposta è no, per qualunque software di backup venga utilizzato.
Un backup è un'operazione fisica, non un'operazione logica. Legge tutte le estensioni contenenti pagine allocate (ovvero anche se è allocata una sola pagina da un'estensione di 8 pagine, eseguirà il backup dell'intera estensione 64 KB) e lo fa in ordine fisico.
Un ripristino è un'operazione fisica, non un'operazione logica. Stabilisce le estensioni nelle loro posizioni legittime nei file di dati.
Ricostruire un indice (o qualcosa del genere) è un'operazione logica, che deve essere registrata. Il backup e il ripristino manipolano direttamente i file di dati, senza passare attraverso il pool di buffer, motivo per cui non è possibile farlo. Un altro motivo per cui non è possibile farlo è che il backup e il ripristino non hanno alcuna comprensione di ciò che è contenuto nei dati sottoposti a backup.
Il motivo principale per cui non è possibile farlo, tuttavia, è che lo spostamento delle pagine durante un'operazione di ripristino interromperebbe i puntatori b-tree. Se la pagina A punta alla pagina B, ma la pagina A viene spostata dal processo di ripristino, come viene aggiornata la pagina B per puntare alla pagina A? Se viene aggiornato immediatamente, potrebbe essere sovrascritto dal resto del processo di ripristino. Se viene rinviato aggiornato, cosa succede se il processo di ripristino ripristina un registro delle transazioni che rimuove la pagina A o la pagina B? Semplicemente non può essere fatto.
In conclusione: backup e ripristino sono operazioni fisiche che non modificano mai i dati.
Spero che sia di aiuto!
PS Sebbene non affronti direttamente questa domanda, consulta l'articolo che ho scritto per la rivista TechNet di luglio che spiega come funzionano internamente i vari backup: Comprensione dei backup di SQL Server . La rivista di settembre avrà il prossimo della serie sulla comprensione dei restauri.
Un backup SQL nativo è solo un dump pagina per pagina dei file di backup, quindi la risposta è "no". Un backup Quest della velocità della luce probabilmente utilizza una sorta di algoritmo di compressione della compressione, ma non "ricostruirà" i file di dati o gli indici, il che richiederebbe una quantità orribile di tempo in un database di grandi dimensioni.
Il backup viene eseguito regolarmente e molto spesso (spero). Quindi i progettisti si sono assicurati che il backup fosse il più rapido possibile. Qual è l'I / O più veloce? Sequenziale. Leggi i blocchi dai dischi nell'ordine fisico esatto, hai le migliori prestazioni.
Perché mai il database dovrebbe eseguire ingombranti operazioni di I / O casuali ogni singola notte , distruggendo le teste dei dischi dappertutto? La differenza sarebbe intorno a due ordini di grandezza. Non vi è alcun guadagno possibile in questo.
Hmmm. BradC, hai già lavorato con Firebird / Interbase - dove l'utilità / API di backup / ripristino principale è più simile al "Copia database ..." di SSMS / EM? In tal caso, sapere che MS SQL Server NON è simile.
Un backup di SQL Server è più un dump del database che viene ripristinato "COSÌ COM'È", quindi è più come un comodo collegamento online per un'operazione "staccare-copiare-ricollegare su altro luogo". Il database ripristinato è quasi una copia esatta del file di database originale (quasi perché è possibile modificare il posizionamento dei file di database di un database ripristinato) ...