March 2009 Blog Posts

Dovendo interagire direttamente con SQL Server, e senza usare script, ci si può trovare in difficoltà.

Poi però ho pensato “…ma non esisteva un sistema per interfacciarsi direttamente a SQL Server senza uscirne pazzi?” Beh la risposta è si. E si chiama SMO.

SQL Server Management Objects è una serie di oggetti fatti in modo tale da permettere interazione programmatica con ogni funzionalità del DB: ci si possono creare database, scrivere stored procedures, ma anche configurare SQL Server, assegnare permessi etc etc.
Tramite codice posso avere il controllo totale dell’RDBMS, senza neanche troppi sforzi :)

Ad esempio, per creare un database:

Imports Microsoft.SqlServer
Imports Microsoft.SqlServer.Management
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo

Dim srv as New Server(".\SQLEXPRESS")

Private Sub CreaDB()
    Dim db As New Database(srv, "Nome del DB")
    db.Create()
End Sub

Pensiamo invece di voler creare una semplicissima tabella con due colonne, ID (che avrà anche la Primary Key) e Nome:

Private Sub CreaTabella()
    Dim db As Database = srv.Databases("Nome del DB")
    Dim tbl As New Table(db, "Clienti")
    Dim ID As New Column(tbl, "ID")
    With ID
        .DataType = DataType.Int
        .Nullable = False
        .Identity = True
        .IdentityIncrement = 1
        .IdentitySeed = 1
    End With
    Dim Nome As New Column(tbl, "Nome")
    With Nome
        .DataType = DataType.VarCharMax
        .Nullable = False
    End With
    tbl.Columns.Add(ID)
    tbl.Columns.Add(Nome)
    Dim index As New Index(tbl, "PK_Clienti"
    index.IndexKeyType = IndexKeyType.DriPrimaryKey
    index.IndexedColumns.Add(New IndexedColumn(index, "ID"))
    tbl.Indexes.Add(index)
    tbl.Create()
End Sub

In questo modo, da codice,  con poco sforzo si ha la possibilità di creare db e tabelle in maniera universale, cioè non vincolata da versioni o localizzazioni del db (mi viene in mente Program Files o Programmi, oppure Program Files e Program Files (x86)).

Ieri sono stati rilasciati rispettivamente l’SDK del Live Framework ed i relativi tools per lo sviluppo.

Qui il Live Framework SDK e qui i tools.

Purtroppo domani non sarò presente all'evento ALM Day, causa febbre improvvisa :(

E' davvero un peccato, sarebbe stata un ottima occasione per reincontrare tanta gente...

Speriamo che quella gente venga all'AfterHour della BASTA! :D