Powershell: Wykonanie zapytania w SQL

9-Kwi-2014

Załóżmy, że chcesz w Powershell wykonać zapytanie do serwera SQL i coś zrobić z wynikiem. Oto moja propozycja:

function RunQuery ([string]$computer,[string]$instance,[string]$database,[string]$query)
{
  try
  {
    #determine the name of instance (for default instance – simply the server name and for named instance servername\instancename
    if($instance -eq „MSSQLSERVER”)
    {
       $SQLServer = $computer
    }
    else
    {
      $SQLServer = „$computer\$instance”
    }
  $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = „Server = $SQLServer; Database = $database; Integrated Security = True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $query
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) | Out-Null
$SqlConnection.Close()
  #return value
$DataSet.Tables[0]
}
catch {}
return false
}

Teraz korzystanie z tej funkcji poniżej. do zmiennej $table zostanie wpisany wynik polecenia wykonanego w instancji domyślnej na serwerze serverName. Jeśli chodzi o nazwaną instancję, to podaj jej nazwę zamisat MSSQLSERVER.

$table = RunQuery ‚serverName’ ‚MSSQLSERVER’ „master” ‚select name, user_access_desc from sys.databases’

A teraz iteracja po wierszach zwróconej tabeli:

foreach ($record in $table)
{
   $col1 = $record.Item(0)
  $col2 = $record.Item(1)
  echo „$col1 $col2”
}
 

Dodaj komentarz:

Autor: Rafał Kraik