lunes, 16 de junio de 2014

Consultas a SQLServer desde Powershell

Si necesitas lanzar una consulta a una base de datos de SQLServer y que además permita cambiarla rápidamente, puedes utilizar Powershell y la clase System.Data.SqlClient.SqlConnection de .NET de la siguiente manera:

$consulta = "SELECT Name FROM sys.databases"
$srv = "nombreServidor"
$db = "master"

$conex = New-Object System.Data.SqlClient.SqlConnection
$conex.ConnectionString = "Server=$srv;Database=$db;Integrated Security=True"
$conex.Open()
$adaptadorSQL = New-Object System.Data.SqlClient.SqlDataAdapter
$resultado = New-Object System.Data.DataTable
$cmdSQL = New-Object System.Data.SqlClient.SqlCommand
$cmdSQL.CommandText = $consulta
$cmdSQL.Connection = $conex
$adaptadorSQL.SelectCommand = $cmdSQL
$contador = $adaptadorSQL.Fill($resultado)

$resultado

  • La variable $consulta contiene la cadena con la consulta que queramos realizar.
  • La variable $srv indica el nombre del servidor SQLServer en cuestión donde se realizará la consulta.
  • La variable $db es el nombre de la base de datos a consultar en el servidor indicado.
  • La variable $resultado contiene el resultado de la consulta en formato DataTable.

El resultado de esta consulta lista todas las bases de datos del servidor indicado.

Si la base de datos en cuestión está contenida en una instancia nombrada, la variable $servidor debe incluir el nombre de la instancia de la siguiente manera: nombreServidor\nombreInstancia.

Este tipo de scripts es especialmente útil para incluirlos en alguna tarea programada y recibir información con un intervalo determinado.