Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Archiviare database SQL creando una copia
venerdì 07 dicembre 2012 - 18.28
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 4.0
|
Windows 7
|
Visual Studio 2010
|
SQL Server Express
alsa
Profilo
| Junior Member
66
messaggi | Data Invio:
ven 7 dic 2012 - 18:28
Salve ragazzi,
il quesito che vi pongo penso sia di facile soluzione.
In pratica ho un applicativo sviluppato con VB 2010 che lavora con un database SQL Express (che si chiama MMM), e vorrei, alla fine dell' anno, dare la possibilità all' utente, di archiviare il database effettuandone una copia (dal nome MMM2012) e azzerarlo per scrivere all' interno i dati del nuovo anno come se il database fosse nuovo.
Ovviamente però l' utente deve anche avere la possibilità di tornare a visualizzare i dati del database archiviato tramite un apposito tasto.
La domanda è: qual' è il comando che mi consente, tramite VB.Net di effettuare la copia del database, possibilmente mantenendo gli stessi Nome utente e Password?
Spero di essermi spiegato correttamente e ringrazio da subito chi vorrà aiutarmi.
renarig
Profilo
| Expert
517
messaggi | Data Invio:
dom 9 dic 2012 - 08:01
>il quesito che vi pongo penso sia di facile soluzione.
>La domanda è: qual' è il comando che mi consente, tramite VB.Net
>di effettuare la copia del database, possibilmente mantenendo .....
La soluzione non è cosi facile,
e non mi risulta che esista un comando specifico in VB.Net
__________________________________________________________________
Tu vorresti di una serie di comandi che facciano queste cose
1°) ___ Il BaclUp di MMM ( spero che non lo fai solo a fime anno ! )
2°) ___ archiviazione del BackUp
3°) ___ generazione di un nuovo DB ( MMM2012 ) dal BackUp
4°) ___ Azzeramento dei dati del DB MMM
__________ ( solitamente ci sono dentro delle tabelle che "scavallano" negli anni )
__________ esempio tipico un DB di ordini e la sua tabella Clienti
__________ gli ordini potranno essere annuali, ma i clienti "scavallano" negli anni
5°) ___ poi devi modificare la applicazione affinche a comando modifichi
la sua stringa di connessione da MMM a MMM2012
Tutto quanto sopra per dirti che ti SCONSIGLIO una soluzione simile
___________________________________________________________________________
Io farei cosi:
In ogni tabella del DB MMM aggiungi un campo ( Chiamiamolo DaCr )
con valore predefinito (getdate())
significa che SQL si occupa autonomamente di inserire ad ogni
nuovo record creato la sua data e ora di creazione.
nella tua applicazione aggiungi una casella ( chiamiamola AnCo ) dove scrivi l'anno considerato
poi in tutte le query della applicazione che estraggono dati dal DB aggiungi la clausola
___ WHERE YEAR(DaCr) = AnCo
___ Dove l'anno della data di creazione record sia uguale a Anno Considerato dalla applicazione
.
alsa
Profilo
| Junior Member
66
messaggi | Data Invio:
dom 9 dic 2012 - 11:36
Ok, in effetti mi sorgevano dubbi se la soluzione che avevo in mente fosse efficace, direi che la soluzione che mi hai proposto è molto valida ma a tal proposito mi sorge un dubbio.
C'è un limite, in SQL Express al numero di record che possono essere presenti in una tabella, oppure, rischio di rallentare l' esecuzione dell' applicazione se una o più tabelle raggiungono un numero di record considerevole?
Inoltre vorrei chiederti ancora una cosa, la mia idea è quella di impostare un backup del database dall' applicazione stessa, ma, qual'è il comando?
Grazie ancora!
renarig
Profilo
| Expert
517
messaggi | Data Invio:
dom 9 dic 2012 - 16:28
>C'è un limite, in SQL Express al numero di record che possono
>essere presenti in una tabella, oppure, rischio di rallentare
>l' esecuzione dell' applicazione se una o più tabelle raggiungono
>un numero di record considerevole?
SQL Express è molto molto molto piu forte di quanto immaginiamo
Rallentamenti solitamente dipendono piu dagli indici che dal numero di record
Comunque i limiti della versione express sono
__ 10 Gb per il DB
__ eccetera
( se fai una ricerca trovi tutto )
>Inoltre vorrei chiederti ancora una cosa, la mia idea è quella
>di impostare un backup del database dall' applicazione stessa,
>ma, qual'è il comando?
Ci sono diversi tipi di BackUp
__Vai in ManagementStudio
__Click Dx sul DB
__Attivita
__BackUp
__Selezioni le tue opzioni
__Prima di dare OK Clicca in alto a Sx ( Script )
__ Ti stampa a video il comando che cerchi ( senza eseguirlo )
.
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mer 26 dic 2012 - 18:43
1801_Backup.zip
io, fossi in te, farei uno script da eseguire non a discrezione dell'utente ma come funzione di manutenzione obbligatoria ad inizio anno, questo per evitare di avere dati riguardanti lo stesso anno su due database.
Queste soluzioni non mi piacciono molto, perché complicano sia la gestione che eventuali sviluppi futuri (es. gestione di un nuovo campo in una tabella comporta modifiche anche a tabelle dei db di anni precedenti), oltre a complicare la gestione di di funzioni di analisi su due periodi diversi, anche se può essere utilizzato la funzione Union.
Se lo scopo è non acquistare una licenza commerciale di SQL Server è possibile sempre utilizzare una versione Freeware ad esempio PostgreSQL.
In definitiva scegliere una soluzione facile (non credo) può portare delle complicazioni dopo (nuove funzioni ed es. di analisi dati) con sviluppi imprevedibili, questo lo dico per esperienza personale. Nella mia azienda ho fatto acquistare due licenze a Processore per evitare problemi di sviluppo, questo dopo aver esposto i pro ed i contro dell'utilizzo di MS SQL Server e PostgreSQL.
Ti posto delle classi che ho trovato su internet, ma non ricordo il link
Ciao e buone feste
Torna su
Stanze Forum
Elenco Threads
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 !