Sql Server 2005 - Snapshot Parziali

sabato 15 marzo 2008 - 10.23

lolic Profilo | Newbie

Ciao a tutti!
Nell'applicazione che sto sviluppando è emersa l'esigenza di poter effettuare delle variazioni ad database ed eventualmente annullare le modifiche ripristinando la situazione. (Non sto parlando a livello di Transazione)

La base di dati attuale è SqlServer Express Edition (v. 2005).

Ho visto che tra le funzionalità di SqlServer 2005 vi è la possibilità di effettuare degli Snapshot di un DB ed di utilizzarli per ripristinare la base di dati.

Essendo l'applicazione parzialmente utilizzata putroppo non posso usare snapshot a livello di DB ma piuttosto mi servirebbe qualcosa table level. Immagino una funzionalità che possa permettere di creare degli snapshot di un gruppo di tables.
Non ho capito però se questo è attualmente fattibile.

Se non è possibile come posso risolvere il problema?(Possibilmente che impieghi mezzi già esistenti e funzionalità presenti già nella base di dati)

Ringrazio Anticipatamente

lbenaglia Profilo | Guru

>Essendo l'applicazione parzialmente utilizzata putroppo non posso
>usare snapshot a livello di DB ma piuttosto mi servirebbe qualcosa
>table level. Immagino una funzionalità che possa permettere di
>creare degli snapshot di un gruppo di tables.
>Non ho capito però se questo è attualmente fattibile.

Ciao Andrea,

i Database Snapshot introdotti con SQL Server 2005 lavorano a livello di data page. Prima che una pagina venga modificata per la prima volta nel database sorgente, viene copiata nel database snapshot.
Lo snapshot memorizza la pagina originale, preservando le righe al momento della creazione dello snapshot stesso. Gli aggiornamenti successivi alla stessa pagina non vengono trasferiti nello snapshot.
L'intero processo viene ripetuto per tutte le pagine modificate per la prima volta.

Capisci bene che non è possibile attivare uno snapshot a livello di tabella, visto che si introdurrebbero dei gravi problemi di consistenza dei dati.

>Se non è possibile come posso risolvere il problema?(Possibilmente
>che impieghi mezzi già esistenti e funzionalità presenti già
>nella base di dati)
Potresti definire dei triggers sulle tabelle interessate che vadano a copiare i dati prima che vengano modificati in apposite tabelle di log. Nel caso volessi ripristinare i dati originali dovresti semplicemente sovrascrivere le tabelle originali con i valori precedentemente archiviati.

>Ringrazio Anticipatamente
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5