Eseguire gli script SQL in .NET

 
27 mag 2014

Quando si lavora con SQLServer (dalla versione 2005 in su) è buona norma attivare nel Management Studio l'opzione per autogenerare gli script di aggiornamento. Questo ci permetterà poi di eseguire tali script sul server di produzione per allinearlo con pochi clic agli ultimi nostri sviluppi.

Tuttavia, molto spesso, non abbiamo accesso (per ragioni di sicurezza o di semplice logistica) all'interfaccia del Management Studio del cliente. A questo punto il problema si complica, perchè l'oggetto .NET SQLCommand (dal namespace SQLClient) non permette l'esecuzione degli script autogenerati da MSSE, in quanto essi contengono svariati costrutti non facenti parte dello standard T-SQL.

Molti siti che potete facilmente trovare con Google, suggeriscono di implementare la libereria SMO. Tuttavia ciò comporta di dover star attenti a quale versione di SQLServer viene utilizzata, nonchè il deployment di tale libreria con tutte le relative dipendenze

Per superare tutto ciò possiamo semplicemente richiamare SQLCMD da shell con poche righe di codice:

Dim p1 As New System.Diagnostics.ProcessStartInfo
Dim p3 As System.Diagnostics.Process
p1.FileName = "sqlcmd" p1.RedirectStandardError = True p1.RedirectStandardOutput = True p1.UseShellExecute = False p1.Arguments = "-d " & [NOME DEL DATABASE] & " -i " & [NOMEFILE.SQL] p3 = System.Diagnostics.Process.Start(p1) p3.WaitForExit()

Questo breve snippet di VB.NET si collega a un database sul server locale (connessione integrata, ma è possibile passare anche le credenziali) ed esegue in blocco uno script contenuto in un file .SQL. A questo link la documentazione completa di tale utility. Essa è in ogni caso inclusa con l'installazione di SQLServer, quindi siamo certi della sua presenza.

© Gabriele Pala, 2012-2014. All rights reserved. P.IVA 01137470314 - C.F. PLAGRL77S16L424T | Cell: 320 3334704 | Mail: info@fvg-informatica.it | Strada delle Acacie, 5/A - Staranzano (GO) | Privacy & Cookies
Questo sito non utilizza cookie di profilazione propri. Sono invece utilizzati cookie tecnici e di terze parti per fini operativi, statistici e pubblicitari. Per sapere a cosa servono i cookie e per impostare le proprie preferenze visitare la pagina Privacy & Cookies. Continuando la navigazione o chiudendo questo avviso, acconsenti all'uso dei cookie e ai termini riportati alla pagina Privacy Policy.
OK