SqlUP
SqlUP (SqlServer-UPdate) è una semplice libreria .NET che ho sviluppato per l'esecuzione di script t-sql su database SqlServer 2005; SqlUP è orientata all'esecuzione di script di aggiornamento del database, da effettuare contestualmente all'aggiornamento di un applicativo.
Particolare attenzione è stata dedicata al mantenimento dell'integrità dei dati da aggiornare e alla flessibilità dell'aggiornamento stesso.
Per questo scopo, sono supportate le seguenti caratteristiche:
- esecuzione di uno o più script contenenti più statement t-sql e provenienti da qualunque origine (non solo file di testo).
- esecuzione di uno o più script in un'unica sessione di aggiornamento transazionale.
- possibile esecuzione in background con metodi asincroni, per non bloccare l'applicativo che utilizza la libreria.
Ultimo ma non ultimo, SqlUP è disponibile in formato binario e sorgente ed è liberamente utilizzabile (vedi licenza inclusa nella distribuzione).
Scenari di impiego
SqlUP può essere utilizzata dall'applicativo da aggiornare, da un applicativo ad hoc che si occupi dell'aggiornamento, magari scaricabile via ClickOnce, oppure in qualunque altro contesto che consenta l'utilizzo di librerie .NET (un servizio Windows creato appositamente per aggiornare il database, un task MSBuild per eseguire script nell'ambito del processo di compilazione, ...).
E' inoltre possibile usare l'applicazione a linea di comando SqlUPConsole.exe inclusa nella distribuzione, anche se questa ha principalmente scopo dimostrativo.
Ambiente di sviluppo
La libreria SqlUP è stata sviluppata con .NET Framework 2.0, linguaggio C#.
Sono stati inoltre utilizzati alcuni tool di terze parti:
- NUnit per l'esecuzione automatica di test.
- Microsoft SandCastle e Sandcastle Help File Builder per generare la documentazione dal codice.
- MSBuildTasks, una libreria di task MSBuild per l'automazione di alcuni processi di compilazione.
Nota: non è necessario installare nessuno dei tool citati per utilizzare la distribuzione binaria o per ricompilare il codice sorgente.
Esempi di utilizzo
Per l'utilizzo della libreria, fare riferimento ai codici sorgenti: contengono due semplici applicazioni di esempio e i test NUnit.
Ecco un estratto:
ScriptCollection scripts = new ScriptCollection();
scripts.AddFile("script1.sql");
scripts.AddFile("script2.sql");
ScriptExecutorController controller =
new ScriptExecutorController(new SmoScriptExecutor(connString));
controller.ExecuteInTransaction = true;
ScriptCollectionExecutionResult result =
controller.ExecuteScriptCollection(scripts);
Console.WriteLine(result.ShortOutput);
Per ulteriori informazioni è disponibile la documentazione (vedi sotto).
Documentazione
La documentazione di SqlUP è disponibile on-line o all'interno delle distribuzioni in formato chm.
Download
Versione Alpha - Windows
SqlUP-1.3.1.344-bin.zip
Distribuzione binaria con applicativi di esempio e documentazione in formato chm.
SqlUP-1.3.1.344-src.zip
Distribuzione completa con sorgenti, test NUnit, script di build e documentazione in formato chm e html.
Sviluppi futuri
La versione 1.3 di SqlUP verrà migliorata nella gestione del tracing e nel dispose delle risorse (al momento la connessione va rilasciata dal chiamante).
La versione 1.4 supporterà un motore di aggiornamento incrementale che selezioni gli script da eseguire.
Sarà così possibile aggiornare un database copiando di volta in volta i nuovi file di script in una directory predefinita e lasciando che SqlUP identifichi quelli ancora da eseguire (ad esempio memorizzando nel database stesso le informazioni necessarie).

twitter
linkedIn
github