Backup/Restore dati da database solo per singolo utente

martedì 19 aprile 2011 - 10.37
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows Server 2003  |  Visual Studio 2008  |  SQL Server 2008

igorbaldacci Profilo | Newbie

Salve a tutti,
ho realizzato un sito in cui gli utenti iscritti hanno una propria area riservata e con il proprio pannello di controllo possono fare tutte le loro operazioni di gestione. Tutto si poggia su DB MS SQL Server 2008.

Volevo ora offrire la possibilità agli utenti di poter fare in autonomia un proprio backup/ripristino del database MA SOLO PER I DATI CHE LI RIGUARDANO.

Mi spiego meglio: invece di fare un backup/ripristino di TUTTO il database (che inevitabilmente coinvolgerebbe i dati di TUTTI gli utenti) vorrei poter far eseguire queste operazioni solo sui dati dell'utente che le vuole fare. In questo modo, se l'utente X fa il ripristino dei suoi dati non ripristina anche i dati di tutti gli altri utenti.

Qual è la strada migliore da seguire per fare una cosa del genere? Come si imposta la questione?

Grazie per ogni consiglio.
Igor

alx_81 Profilo | Guru

>Salve a tutti,
Ciao

>Qual è la strada migliore da seguire per fare una cosa del genere?
Con le normali operazioni di backup e restore non c'è modo. Per fortuna aggiungerei
Questo tipo di operazioni sono a carico di amministratori di sistema, non degli utenti i cui dati sono salvati in anagrafiche all'interno del database stesso (tipici end user).
Di conseguenza, l'unica strada che percorrerei è quella dell'implementazione di un export di dati dedicato sul server. L'esportazione, che farei batch se i dati sono tanti (altrimenti anche un servizio, ma rischi di richiedere troppo tempo per la risposta ed una conseguente occupazione di banda enorme sul client e sul server), potrebbe ad esempio essere un file flat di testo in cui rispetti un formato comune.
L'utente finale poi potrebbe reimportare il file con una ulteriore procedura scritta apposta per fare merge dei dati.

>Grazie per ogni consiglio.
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

igorbaldacci Profilo | Newbie

Ciao, e grazie per la tua risposta.

Guarda a cosa ho pensato:

BACKUP
---------
- SE NON ESISTE: creo "onfly" una tabella di backup con un nome del tipo "ID_DATA_NOMETABELLA", dove ID è l'ID dell'utente che fa il backup dei suoi dati, DARA è la data del backup, NOMETABELLA è la tabella da backuppare.
- SE GIA' ESISTE: elimino tutti i dati della tabella
- Copio i dati dalla tabella master alla tabella di backup

RESTORE
-----------
- Cancello i dati dalla tabella master di quell'utente
- Copio i dati dalla tabella di backup alla tabella master

L'unico cruccio è che utilizzo lo stesso database per eseguire il backup, ma poi facendo il backup giornaliero DI TUTTO IL DATABASE sto tranquillo.

Che dici, può andare come procedura? In fondo è quello che mi suggerisci anche tu di far con un file di testo di appoggio se non ho capito male.

PS: che intendi per procedura batch?

GRAZIE

alx_81 Profilo | Guru

>Che dici, può andare come procedura? In fondo è quello che mi
>suggerisci anche tu di far con un file di testo di appoggio se
>non ho capito male.
Sì, il file di testo ti consente di controllare i dati anche dopo tempo, una volta prodotti sono quelli. La tabella, trattata come dici tu, rischia di essere un inutile perdita di spazio e risorse su database, ma alla fine il concetto è il medesimo

>PS: che intendi per procedura batch?
schedulata, non on demand, ogni "tot", per non appesantire l'operatività del database e garantire un accesso monoprocesso e non multiutente.


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5