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
Compattazione db da vb.net
mercoledì 12 novembre 2014 - 19.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
mer 12 nov 2014 - 19:51
Salve a tutto il forum, avrei il seguente problema:
Per compattare un db di access da vb faccio uso sel JRO
Dim jro As JRO.JetEngine
jro = New JRO.JetEngine
jro.CompactDatabase("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Aziendale 2012\Aziendale 2012.mdb;Jet OLEDB:Engine Type=5", _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Aziendale 2012\Aziendale 2012 compact.mdb;Jet OLEDB:Engine Type=5")
My.Computer.FileSystem.DeleteFile("C:\Aziendale 2012\Aziendale 2012.mdb")
My.Computer.FileSystem.RenameFile("C:\Aziendale 2012\Aziendale 2012 compact.mdb", "Aziendale 2012.mdb")
Ma per compattare un db di sql?
A parte poi i riferimenti che bisogna aggiungere al progetto.
Distinti Saluti
Fabio Messina
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 13 nov 2014 - 00:19
>Salve a tutto il forum, avrei il seguente problema:
ciao
>Ma per compattare un db di sql?
A differenza di access ci sono varie considerazioni da fare. Ad esempio, è importante capire il recovery model del tuo database. In base ad esso potrebbe essere necessario prima fare il backup del log delle transazioni e poi la compattazione (in modo da guadagnare più spazio possibile, senza includere il log delle transazioni stesso).
L'operazione ti serve per risparmiare spazio oppure per avere un backup compresso del tuo database?
Perché lo shrink dovrebbe essere un'operazione straordinaria, poiché una delle best practice è quella di pre-dimensionare i file di database e di non lasciarli praticamente mai crescere (in modo da sapere fin dall'inizio la dimensione massima che vorrai coprire). Diciamo che non è un'operazione da fare a regime, e se così fosse, o il caso è particolare o, probabilmente si sta sbagliando qualcosina..
Vediamo di capire la tua situazione reale prima di tutto
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
gio 13 nov 2014 - 14:14
L' operazione mi serve per risparmiare spazio .
Ribadisco che di sql non sò nulla, sono alle prime, quindi consigliatemi anche voi.
Distinti Saluti
Fabio Messina
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 14 nov 2014 - 18:20
>L' operazione mi serve per risparmiare spazio .
ok, ma è un'operazione che devi fare una volta o è a regime?
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
ven 14 nov 2014 - 20:06
Con vb e access lo faccio ad ogni avvio dell' applicazione
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 14 nov 2014 - 23:25
>Con vb e access lo faccio ad ogni avvio dell' applicazione
ok, con sql server questo è meglio evitarlo.
Considera che la crescita del database non dipende solo dai dati ma anche di quanto deve tenere nel log delle transazioni.
A mio avviso come primo punto dovresti controllare il modello di recupero del tuo database.
Andiamo per passo, dimmi qual è il modello di recupero del tuo database e quale esigenza hai in termini di disaster recovery (fino a che punto vuoi poter ripristinare la situazione del tuo database).
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
dom 16 nov 2014 - 16:11
Ascolta, non puoi dirmi le cose con parole più semplici, perchè di sql non sò nulla, sono alle prime.
dimmi qual è il modello di recupero del tuo database e quale esigenza hai in termini di disaster recovery (fino a che punto vuoi poter ripristinare la situazione del tuo database).
A livello di compattazione vorrei fare solo la cosa più giusta.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
dom 16 nov 2014 - 19:59
Sapere il modello di recupero é il punto primo per darti una soluzione semplice. Come già ti dicevo, in sql server la compattazione non andrebbe nemmeno fatta a regime, ma solo per esigenze straordinarie.
Controlla nelle proprietà del tuo database (tasto destro-->proprieta, opzioni) il modello di recupero.
Se é full(completo), il file di log crescerà sempre, e quindi dovrai procedere con dei backup del log
Se é simple(semplice), puoi tenere sempre il log della stessa dimensione(e quindi l'operazione di compattazione risulta superflua).
L'obbiettivo é quello di predimensionare il tuo database per non far mai crescere i file. Di conseguenza lo spazio occupato sarà sempre lo stesso.
Più semplice di così non so come spiegarlo.
Spero possa andare meglio.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
lun 17 nov 2014 - 19:17
Ciao, anche se non conosco le differenze, sta messo su REGISTRAZIONE MINIMA.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 17 nov 2014 - 20:22
>Ciao, anche se non conosco le differenze, sta messo su REGISTRAZIONE MINIMA.
perfetto, è sinonimo di simple. Come le due parole indicano, il tuo database sta scrivendo sul file di log delle transazioni (.ldf) riusandolo di continuo, facendo, di fatto, una registrazione delle operazioni minimale, solo per poter annullare le operazioni che fa in caso di errore durante l'esecuzione. Di conseguenza, se trovi una dimensione per la quale non cresce mai (basta tenerlo controllato per un paio di giorni di traffico ufficiale) la compattazione non ti serve. Ti consiglio quindi di non compattare il tuo database e di dare una dimensione fissa, lasciando un po' di margine per l'inserimento di nuovi dati (e anche in questo caso, devi sapere quante informazioni arrivano ogni giornata lavorativa per fare un rapido calcolo dello spazio polmone che ti serve).
Alla fine dovrai dare una dimensione al file dei dati (ipotizzo l'unico mdf che il tuo database ha) ed una al file del log delle transazioni (ldf) e sei a posto, poichè il secondo file non crescerà mai (se ben dimensionato) e il primo crescerà in maniera controllata in base ai dati che verranno inseriti nel tempo.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
jekisi
Profilo
| Senior Member
460
messaggi | Data Invio:
lun 17 nov 2014 - 20:43
Ok, grazie per la risposta.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 17 nov 2014 - 20:47
>Ok, grazie per la risposta.
Se hai bisogno di una mano per le stime o altro, chiedi pure.
So che eri abituato ad altro, ma vedrai che se dimensioni tutto come si deve, non te ne preoccuperai più per molto dello spazio
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
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 !