Newsgroup: it.comp.lang.visual-basic
Titolo: Per Andrea Montanari e esperti

Volevo sapere una tua opinione su una mia Idea.
Siccome dovrň distribuire un db sql 7.0 costantemente
aggiornato viste le modifiche che i clienti vogliono, opero nel seguente
modo.
Mi salvo in un db access tutte le tabella, i tipi dei campi, le sp, ecc..
del db modificato.
Al cliente invio tamite posta elettronica l'Exe e il db Access.
Lui fa partire l'Exe, e questo gli aggiorna i campi del db, aggiunge
tabelle,
ecc; perň  non cancella niente di quello che c'č in piů.Secondo voi pň
funzionare?
Poi volevo chiedere se č possibile copiare anche il diagramma/i del db sql.
Visto che non ho trovato nessun oggetto Diagram o altro.
Aspetto tue/vostre notixie.
Ciao
Oz
--
Carč Walter SIA SOFTWORK S.R.L.
Via Zanardelli, 13/A - 25062 Concesio (BS) Italy
Tel. 0039-30-2008135/0039-30-2091057  Fax. 0039-30-2004911
Web: 
http://www.siasoftwork.it
 - E.mai:- 
ca...@siasoftwork.it

 Carè Walter SIA SOFTWORK S.R.L.


aggiornamento?
Mi faresti un esempio?
Ciao e grazie
Oz

CUT
Le stringhe Sql che t'intendi potrei prendere quelle generate
dal File di script di Sql?
Se modifico il valore di un campo aumentando ad esempio i suoi
caratteri, il file .sql ne tiene conto?
Ciao e grazie.
Oz

Puoi passare al cliente l' exe e per le modifice ti Crei un programmino che
non fa altro che connettersi al database ed eseguire delle stringe sql che
tu ti cri
Attenzione però! Non basta aggiungere le tabelle o modificare i campi !
Ricordati di settare anche i permessi e i diritti!
Il tutto ovviamente usando le transazioni!
Ciao!

...

Ok,grazie
Ciao
Oz

 Visto che non ho trovato nessun oggetto Diagram o altro.
riguardo ai diagrammi mi trovi spiazzato, non ci ho guardato molto, e Dmo
non implementa tale oggetto (o almeno non l'ho trovato)..
non saprei neanche dirti in che tabella vengono salvati, e mi sembra siano
utilizzabili solo da Enterprise Manager..
questa e' una domanda da girare a Neil Pike o Gert Draperts
prova a guardare anche su
www.red-gate.com
o
www.ssw.com.au/SSW/default.htm
il primo e' proprio uno strumento di manutenzione/aggiornamento strutture, i
secondi hanno parecchi tool (anche free)..
altri commenti e suggerimenti sono graditi
saluti
Andrea Montanari
a_mon...@libero.it
http://utenti.tripod.it/a_montanari/dbamgr.html
(my vb6+sql-dmo little try to provide M$ MSDE a visual interface) ver 0.0.14

sorry I CUT
Sei un grande........
Ti ringrazio tantissimo.
Ciao
Oz


Secondo te è meglio modificare il db attraverso gli oggetti di Sql-dmo
oppure,
dopo aver attivato una connessione fare molte chiamate sql del tipo
ALTER TABLE nometabella
ALTER COLUMN nomecolonna Tipo ...................
DROP COLUMN  nomecolonna
CREATE TABLE ecc.......
Gradirei un tuo consiglio sia da esperto che da programmatore medio....
Ti dico che non ho mai usato db Sql, ma imparerò......
Da quello che ho capito io, con gli oggetti sqldmo la cosa è più semplice,
mentre con le chiamate sql il codice diventerebbe un pochino meno leggibile,
ma visto che esistono i parametri è bene usarli,
mi potrei creare una funzione che mi modifica una colonna passando tutti
i vari parametri, una funz che mi crei una tabella, una che mi crei un
database,
un'altra che mi crei un pianeta, così ci vado a vivere..........
A parte gli scherzi, consigliami una strada, quella del cammina di nostra
vita.....
Ciao
Grazie
Oz

 un'altra che mi crei un pianeta, così ci vado a vivere..........
Master of the Universe....
il thread mi piace.... chi piu' ne ha.... e' invitato a partecipare,
potrebbe scapparne fuori un tool di aggiornamento db...



Perfettamente d'accordo.
ciao
ugo

 e' meglio un approccio di test oggetto per oggetto..
E' vero.
E' altresì vero che la conoscenza della struttura è implicita se tu
distribuisci un aggirnamento e questo viene SEMPRE eseguito.
Tuttavia non è impraticabile neppure la strada degli aggiornamenti graduali.
Ovvero, il tuo upgrade può testare la release dell'applicativo client e in
funzione di questa eseguire una serie di update codificate in file query
sql.
Cosa questa che ti permette di scrivere virtualmente "un" programma di
aggiornamento generico e solo le query personalizzate per applicativo.
Altro è il caso in cui la tua procedura giri in situazioni tra loro diverse,
vedi, ad esempio in situazioni in cui siano state implementate modifiche di
un certo livello per personalizzare le esigenze di un cliente. In questo
caso, è forse più conveniente usare un database master da confrontare con la
configurazione correntemente installata.
Anche in questa situazione si mantiene il vantaggio della generalizzabilità
del metodo, con però lo svantaggio distributivo ed operativo di dover
attachare database e confrontare strutture, indici, triggers ecc...
in fondo sono solo due approcci diversi, uno struttura e poi confronta,
l'altro confronta e poi struttura...
ciao
ugo

...

E' proprio qui che volevo arrivare, se infatti come dici tu, girano diverse
strutture
del mio db a seconda del cliente, è meglio strutturarmi un Db da confrontare
con il
db Cliente, e al massimo poi lancio dei comandi Sql. Perchè se mi genero un
file di
testo  che contiene al suo interno 500 righe di Create Table, Alter Table,
ecc.
uno rischia con molta facilità di spedire al cliente un file di testo
errato, sputtanando magari
qualche dato.....
Quindi, ritornando a noi, se mi genero il mio applicativo che, premendo un
bottone mi azzerra
le tabelle di un db access, poi le riempie come la struttura del famigerato
db Sql.
Poi mando al cliente il db access. Lui lancia l'Exe che tramite Sql-Dmo va a
controllare se ci sono
i campi, tabelle, ecc. se trova qualche tabella che manca, campo che manca,
triggers, sp, lancia
comandi sql di aggiornamento, se c'è "roba" in più non fa nessun Drop.
Secondo voi?
Ciao e grazie della partecipazione...
Oz

 wrote:
Aggiungo la mia: personalmente non devo aggiornare un DB Sql ma un
semplice DB access.
Nel database c'č registrata la versione dell'archivio che indica alla
procedura di aggiornamento quali operazioni devono essere effettuate
sul database (modifica o aggiunta di campi, operazioni automatiche sui
dati, aggiunta o rimozione di tabelle).
Questo č importante perchč i clienti non sempre installano tutti gli
aggiornamenti e non mi sembra gentile costringerli ad eseguire n
procedure di aggiornamento per passare dalla versione x alla versione
x+n! Finora l'aggiornamento ha sempre funzionato: speriamo continui
cosě! P:-)
Remove CUTME from E-Mail address to reply!
Visit Hardware Tips: 
http://www.hardwaretips.com

Sì, l'approccio è giusto.
Ti aggiungo però quello che secondo me è spesso il "vero" problema: i
triggers.
Mi spiego meglio:
è chiaro che la struttura delle tabelle deve essere quanto meno coerente con
le operazioni eseguite dal tuo applicativo, ma questo è facile da ottenere
con entrambi gli approcci, sia quello SQL, sia quello del confronto di
oggetti.
La presenza o meno di indici, a meno che non si tratti di chiavi primarie e
che nel tuo applicativo non ci siano già tecniche di mantenimento
dell'integrità, è un problema -generalmente- secondario, in quanto la sua
influenza si fa sentire solo a livello di prestazioni SQL, problema non
indifferente, ma non tale da mandare in crash nessuno.
Viceversa non si può dire della presenza o meno di triggers, specialemnte in
realtà presso il cliente in cui sia presente un Responsabile Edp che ha
libero accesso al tuo database e che gli applica "qualche ritocco" di
personalizzazione. Qui è chiaro che le possibilità di crash possono essere
notevoli e che, tutto sommato, la possibilità per il Responsabile Edp
interno di esaminare le tue query Sql ed eventualmente ritoccarle può essere
in alcuni casi risolutivo.
E' anche vero naturalmente che se le tue query di aggiornamento sono 500 per
volta, il compito si fa arduo...
Insomma, come per quasi tutto in informatica, non credo esista "La"
soluzione, ma una soluzione ottimale a seconda delle esigenze.
Tra l'altro vi apro una quaestio:
qualcuno di voi sa se è possibile, lavorando direttamente sugli oggetti
SqlDmo, effettuare un aggiornamento di un database pubblicato in replica
SENZA interrompere la pubblicazione del database?
ciao
ugo

 SENZA interrompere la pubblicazione del database?
ahia.... non saprei... prova magari a postare su
microsoft.public.sqlserver.programming,
li ne sanno sicuramente di piu'...
saluti
Andrea