PowerShell, el poder

Escrito por qwalgrande 27-02-2010 en General. Comentarios (0)

Aunque desde hace tiempo me llama la atención, nunca he podido meterme con PowerShell para SQL Server. Esta semana he empezado, he hecho tres cositas bajadas de internet en su mayor parte y me he quedado boquiabierto. Mira que me habían dicho que con PowerShell, lo que quieras, pero aún así hasta que no lo ves por ti mismo no empiezas a comprender ese poder.

 

Os dejo aquí mi "Hola, mundo", que no es más que un script que te permite, a su vez, crear un script de sql server con todos los objetos de una base de datos, algo que ha surgido un par de veces en el foto esta semana. Este sería el script:

 

 

# Script all tables in the AdventureWorks2008 database
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null
 
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') $args[0]
$db = $s.Databases[$args[1]]
 
$scrp = new-object ('Microsoft.SqlServer.Management.Smo.Scripter') ($s)
 
$scrp.Options.AppendToFile = $True
$scrp.Options.ClusteredIndexes = $True
$scrp.Options.DriAll = $True
$scrp.Options.ScriptDrops = $False
$scrp.Options.IncludeHeaders = $True
$scrp.Options.ToFileOnly = $True
$scrp.Options.Indexes = $True
$scrp.Options.WithDependencies = $True
 
$scrp.Options.FileName = $args[2]
 
$scrp.Script($db.Tables)


 

 

Este texto, copiado a un notepad, guardado con un nombre y extensión ".ps1", por ejemplo "CreateTables.ps1", guardado en una carpeta C:\Scripts.

 

Para llamarlo, hay que abrir la consola de PowerShell (por ejemplo) y tras posicionarse en la carpeta en la que alojamos nuestro script (en el ejemplo, "cd C:\scripts"), ejecutarlo, pasándole los tres parámetros (servidor, base de datos y nombre y ruta del fichero que queremos generar:

 

.\CreateTables.ps1 'NOMBRE_INSTANCIA' 'BASE_DE_DATOS' 'C:\Scripts\BASE_DE_DATOS.sql'

 

Como decía, es mi modesto "Hola, Mundo". Los límites, pues pocos, muy pocos.