Newsgroup: it.comp.lang.visual-basic
Titolo: Applicazione con DB SQL su HD USB

Salve
questa volta ho una domanda un po' particolare.
La mia applicazione memorizza i darti in un DB SQL e inoltre memorizza 
dei file che utilizza durante la sua esecuzione. Il percorso dei file è 
memorizzato all'interno del DB con altre informazioni che lo riguardano. 
Il mio problema è rendere tutto questo facilmente migrabile da un pc ad 
un altro. Avevo pensato di far risiedere il DB ed i file su un HD 
esterno USB così da poter cambiare computer agilmente. Ovviamente a 
questo punto il Server SQL sarebbe avviato a mano per evitare il rischio 
di avvio prima che WIn abbia montato l'hd usb. La cosa secondo voi 
potrebbe funzionare? Ci sono altri metodi? Il tutto dovrebbe essere 
semplice così da permettere a persone senza una preparazione specifica 
di poterlo fare. Per questo ho escluso detach di database o cose simili.
Su google ho trovato qualcosa riguardo le chiavi USB, ma in questo caso, 
essendo su HD, la situazione dovrebbe presentare vantaggi giusto?
Calcolando che questa operazione di cambio pc si verifica almeno un paio 
di volte al giorno voi come affrontereste il problema?
Ci sono altre idee o motivi per non agire così?
Le prestazioni di quanto scenderebbero?
Grazie a tutti!!!
Morrie

 Le prestazioni di quanto scenderebbero?
Umh...
Innanzitutto Sql-Server dovrebbe essere montato su tutte le macchine, 
ma questo potrebbe non essere un problema.
Il detach ed attach potrebbe anche avvenire mediante script, ma occorre 
tasstivamente ricordarsi di farlo prima di staccare la chiavetta.
In linea di principio, comunque, mi sembra una pratica tutt'altro che 
consigliabile.
Non conosco i motivi per cui hai inventato una cosa così arzigogolata, 
ma sei sicuro che con un banale file di Access, o anche di testo puro, 
o XML, non si riuscisse a fare tutto?
Alberto
-- 
seguiam la scia
se un meganoide ci spia

 Non conosco i motivi per cui hai inventato una cosa così arzigogolata,
Il problema è che queste chiavette potrebbero piantarti in asso molto 
presto.
Nota che da specifiche reggono fino a un tot di scritture e un DB non è 
proprio il modo migliore per non stressare il disco.
Ciao 

Il Mon, 11 Sep 2006 16:58:48 +0200, Morrie ha scritto:
[cut]
MS SQL Server non permette di installare i files dei devices su periferiche
"mobili", almeno con la versione 2000. Questo vale per chiavi usb o
percorsi di rete, anche mappati come unitą. Il motivo č semplice: questo
tipo di device non garantisce una sicurezza adeguata dei dati.
Ciao
-- 
Stefano "HappyMan"
http://www.sgr.info

 XML, non si riuscisse a fare tutto?
Il motivo è presto detto, in condizioni normali il programma gira in 
multiutenza in una configurazione client/server. Questa che mi trovo ad 
affrontare è una esigenza manifestata da un unico cliente (che in realtà 
opera in configurazione monopostazione). Tutto qui.
Cercavo di accontentarlo, ma da quello che mi dite la strada non è 
percorribile neanche su HD esterno. Dovrò persuaderlo ogni volta a 
lanciare una procedura di attach/detach del DB. Speriamo bene...
Ciao e grazie del "consulto".
Morrie

 Ciao
Ti ringrazio della dritta, convincerò il cliente ad affrontare soluzioni 
diverse...
Ciao, Morrie

 lanciare una procedura di attach/detach del DB. Speriamo bene...
E usare un HD su slitta estraibile?
In questo modo è portabile come un HD USB (se ha le slitte), e non hai i
limite dei dischi removibili.
-- 
DBMS Firebird
VB6 + Ado

 
Il tipo vuole usare anche dei portatili... quindi niente HD rimovibili...
Altre idee?
Grazie, Morrie


a dire il vero puoi benissimo creare database su hd esterni usb, e questo 
fin dalla versione 7.0..
i percorsi di rete vanno invece abilitati tramite apposito trace flag..
che poi sia il problema della sicurezza che della performance entrino in 
gioco, questo e' chiaramente scontato..
anche inserendo una "chiavetta", SQL Server Management Studio ed anche 
Enterprise Manager listano il "disco" come utilizzabile, ed infatti la 
creazione avviene con successo..
personalmente preferirei sicuramente un hd esterno usb ad una chiavetta... 
(e sicuramente imposterei l'opzione autoclose per il database [cosi' da 
penalizzare ulteriormente le performance :D])
leggo qui le "specifiche" di una S3, S3+ usb pen drive 2.0:
"...
memory chip write cycleup to 100.000 times.
.."
e mi pare veramente molto poco quando un dbms entra in gioco...
se non altro un hd, seppur esterno ed usb, ha delle caratteristiche 
fisico/tecniche piu' affidabili..
saluti
-- 
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz
 
http://italy.mvps.org
DbaMgr2k ver 0.20.0 - DbaMgr ver 0.64.0 and further SQL Tools
--------- remove DMO to reply 

 Altre idee?
Bhe se il tuo DBMS non permette di avere dischi su periferiche removibili
non mi viene in mente altro se non cambiare DB.
Altrimenti mi pare esistano dischi che si collegano in rete (come un
printer server), ma non so se funzionerebbero.


Morrie ha pensato forte :

Come ti dicevo, Attach/Detach puoi benissimo eseguirli tu 
dall'applicativo (all'avvio controlli che esista il db, se non esiste 
ne fai l'attach, e alla chiusura ne fai il detach).
Ma il punto è che uno può togliere la chiavetta senza fare il detach, 
oppure la chiavetta dopo un tot di operazioni muore, oppure tutte le 
volte ti cambia lettera, ecc...
Piuttosto, se ritieni che l'esigenza sia concreta, puoi riprodurre il 
db in formato FoxPro in una cartella dell'applicativo.
Il motore SQL di FoxPro supporta una sintassi quasi identica a 
SqlServer, per cui la migrazione dell'applicativo verso tale ambiente 
non dovrebbe essere pesantissima.
Ciao


 printer server), ma non so se funzionerebbero.
In effetti quella del disco di rete non č una cattiva idea, magari se 
riesco a metterci le mani su la provo... anche se ormai mi sono 
preparato all'idea di convincere il cliente a fare un paio di operazioni 
in piů e quindi a fare l'attach ogni volta
Grazie per i suggerimenti!!!
Morrie

 non dovrebbe essere pesantissima.
FoxPro non l'ho mai utilizzato, quindi dovrei vederlo per bene. Però 
l'esigenza di un unico cliente (rompiba@@e) non vorrei mi costringesse 
ad una cosa del genere.
Grazie a tutti per l'aiuto!!!
Morrie

 Messa così può funzionare?
No.
In caso di mancata riuscita del detach per assenza della periferica, il 
file del db sarà nella migliore delle ipotesi 'Suspect', nella peggiore 
perso per sempre.


 Messa così può funzionare?
Per la lettera se gli assegni da Gestione Disco una lettera "lontana"
*dovrebbe* tenertela sempre.
Tieni presente che ad ogni crash della tua apps non verrà aggiornato il DB
su disco esterno. Casomai prevedi di fare un utility per copiare da locale
verso il disco removibile.


 perso per sempre.
Intendevo questi passi:
- Verifica della destinazione
- Se la destinazione non esiste (l'hd esterno è scollegato) non fa il 
detach ma dice di collegare l'hd
- Se la destinazione esiste fa prima un backup sul PC e poi il detach
Così sono al sicuro... o ci sono altre possibilità non prese in esame?
Grazie infinite ragazzi, siete troppo preziosi!!!
Morrie

 verso il disco removibile.
Penso ormai di mettere la procedura automatica di detach 
nell'applicazione così da essere a posto. Così lavoro in locale e poi 
attacco e stacco ogni volta (a questo punto i file li faccio risiedere 
nel pc di lavoro). Implemento un backup aggiuntivo prima di ogni detach 
così da evitare ogni problema. Devo solo personalizzare un po' 
l'applicativo. Nulla di grave.
Penso di essere a posto o sbaglio?
Ciao e grazie infinite!!!
Morrie


O tu hai confuso il detach con l'attach, o io non ho capito 
assolutamente niente.
