Grazie al provider per Sql Server fornito con la powershell di Sql Server 2008 è possibile navigare all'interno della gerarchia degli oggetti di un'istanza Sql come se si trattasse di un file system.

Di seguito un piccolo esempio su come vedere la lista delle tabelle all'interno del database AdventureWorks :

Per avviare la powershell basta fare tasto destro sul nome dell'istanza e cliccare su "Start PowerShell"

StartPowershell

Per vedere la lista delle tabelle è sufficiente eseguire i classici comandi MS-DOS per posizionarsi all'interno del percorso richiesto :

  1. cd databases\AdventureWorks2008\Tables (per posizionarsi all'interno della collection delle tabelle)
  2. dir (per vedere la lista delle tabelle)

dir_powershell

 

Per effettuare azioni sugli oggetti di Sql Server usiamo SMO . Proviamo ora a creare una tabella all'interno del database AdventureWorks.

Prima di tutto registriamo (se necessario) l'assembly Microsoft.SqlServer.Smo.dll di Sql Server 2008 RC0 nella GAC. Il file si trova nella cartella \Program Files (x86)\Microsoft Sql Server\100\SDK\Assemblies\ .

Per effettuare la registrazione nella GAC sono necessari  i tools SN e Gacutil reperibili nell'SDK del .NET Framework 2.0. La versione a 64 bit è reperibile qui.

 

I comandi da digitare sono i seguenti :

1) sn –Vr Microsoft.SqlServer.Smo.dll

2) gacutil –i Microsoft.SqlServer.Smo.dll

 

E ora da powershell creiamo la tabella "Tabella_di_test" all'interno del database AdventureWorks2008 :

"

$srv = New-Object Microsoft.SqlServer.Management.Smo.Server(".")

$db = $srv.Databases["AdventureWorks2008"]

$tbl = New-Object Microsoft.SqlServer.Management.Smo.Table

$tbl.Parent = $db

$tbl.Name = "Tabella_di_test"

$col = New-Object Microsoft.SqlServer.Management.Smo.Column

$col.Parent = $tbl

$col.Name = "Colonna_di_test"

$col.DataType = ([Microsoft.SqlServer.Management.Smo.DataType]::VarChar(50))

$tbl.Columns.Add($col)

$tbl.Create()

"

 

Risorse aggiuntive

http://msdn.microsoft.com/en-us/library/cc281947(SQL.100).aspx

http://msdn.microsoft.com/en-us/library/cc281962(SQL.100).aspx

http://msdn.microsoft.com/en-us/library/cc281939(SQL.100).aspx