Newsgroup: it.comp.lang.visual-basic
Titolo: [NET] Script SQL

Ciao a tutti,
prima di tutto mi scuso se la mia domanda è già stata fatta... ma ho
letto un po' di post e non sono riuscita a capire come risolvere il
mio problema.
Io ho un progetto in Visual Basica .NET con Db in Sql Server.
Il mio utente quando effettua una configurazione il sistema deve
creare un database SQL. Attualmente io ho una tabella che contiene
tante istruzioni SQL di creazione tabelle/stored procedure/viste
etc... ma vorrei ottimizzare il tutto per evitare che ogni volta che
vado a modificare una tabella debba aggiornare quella di "crazione".
Per reperire le sintassi di creazione tabella utilizzo la creazione
Script di Sql Server che genera file .sql (pulsante destro sul
database, All Tasks --> Generate Sql Script).
La mia domanda è questa, c'è un modo via codice utilizzando ADO Net di
far eseguire i miei file .sql e quindi creare il db per l'utente.
Grazie a tutti
Giulia

 Giulia
-- 
.A
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org
Read my blog at: 
http://www.ugidotnet.org/4.blog

 ha scritto nel messaggio
news:c1aec230.04052...@posting.google.com...

Ciao Giuliana,
leggi il tuo file .sql come un normale file di Testo accumulando le righe in
una variabile stringa, ad ogni GO che incontrerai invierai al server la
stringa con il metodo execute dell'oggetto connection. Ovviamente prima
dovrai creare il database e poi collegandoti ad esso invierai le stringhe
con le DLL. La riga con il GO non è da inviare.
Ciao Giorgio

...

Ciao a tutti, vi ringrazio tanto per le risposte...
ho ancora qualche dubbio:
per giorgio... in che senso invio le stringhe con la DLL? e se volessi
creare il database usando sempre lo script?
per andrea... perchè devo usare namespace System.IO? non basta usare
una
replace di CHR10 e CHR13 con '' --> tolgo a capo 
e poi Split(stringa, "GO") e carico in array ogni istruzione (il
separatore è GO) ?
io ho creato un file .sql dove ci sono alcune istruzioni all'inizio
exec sp_dboption N'PROVA_GIULIA', N'autoclose', N'true'
...
cosa devo fare... le tolgo a mano?
grazie
ciao
giulia

 cosa devo fare... le tolgo a mano?
Dipende se vuoi mantenere le opzioni del tuo db originale, io sconsiglio
l'autoclose in quanto rallenta le query perchè il database viene chiuso
automaticamente a fine connessione quindi
------------
exec sp_dboption N'PROVA_GIULIA', N'autoclose', N'false'
-----------
la stessa cosa vale per l'autoshrink
------------
exec sp_dboption N'PROVA_GIULIA', N'autoshrink', N'false'
-----------
Ciao Giorgio

...

Ciao Giorgio,
grazie ancora per la disponibilità...
Ti disturbo ancora per chiederti una cosa. (Scusa ma non sono molto
esperta in SQL...) che cosa significa "il dtabase viene chiuso
automaticamente a fine connessione"? Io ho una funzione che, letta la
stringa di connessione, apre la connessione stessa e quando eseguo un
SQL command la chiude subito dopo.
Per il datareader uso
"MyCm.ExecuteReader(CommandBehavior.CloseConnection)" e quindi quando
chiudo il datareader che sto usando chiude e fa il dispose della
connessione.
Per lo script provo e poi se mi funziona posto il pezzetto di
codice...
Grazie ancora 
Giulia

 Giulia
Ciao Giulia,
con l'opzione Autoclose=true Sql Server chiude fisicamente i files MDF e LDF
del database quando non ci sono connessioni attive.
Nel tuo caso aprendo e chiudendo la connessione ad ogni comando provochi
l'apertura e la chiusura del database con un notevole calo di prestazioni.
Ti consiglio vivamente di impostare la proprietà autoclose a false, il
database verrà chiuso quando il servizio viene arrestato.
--------------------
exec sp_dboption N'PROVA_GIULIA', N'autoclose', N'false'
--------------------
Ciao Giorgio