Índice

SMO y PowerShell

El lenguaje de script PowerShell está presente en los servidores Windows y permite a los administradores trabajar con scripts. Sin dar una visión detallada de PowerShell, es bueno recordar que este lenguaje accede de manera nativa al framework .NET y se beneficia de todas sus capacidades.

Por lo tanto, PowerShell se beneficia del acceso al API de programación SMO (SQL Server Management Objects). Este API, muy potente, contiene todos los elementos que permiten reproducir las funcionalidades presentes en SQL Server Management Studio, usando programación. Como contrapartida, esta potencia tiene un problema de complejidad de uso. No siempre es fácil identificar los elementos que se desean en SMO.

1. SMO

Casi todos los scripts que usan SMO tienen que realizar algunas acciones de base de datos:

  • Cargar el espacio de nombres que corresponde a SMO.

  • Conectarse a una instancia SQL Server.

  • Posicionarse en una base de datos.

El espacio de nombres que contiene SMO se llama Microsoft.SqlServer.SMO. Se carga con la instrucción PowerShell: [System.Reflection.Assembly]::LoadWithPartialName( "Microsoft.SqlServer.SMO" ).

SMO tiene un objeto de tipo Microsoft.SqlServer.Management.Smo.Server, que representa a los servidores. Para acceder a una instancia, hay que crear un objeto de tipo server y pasarle como argumento el nombre de la instancia.

Los objetos de tipo Microsoft.SqlServer.Management.Smo.Server tienen una propiedad llamada Databases. Esta propiedad es una lista de las bases de datos definidas en esta instancia.

Ejemplo ...