SQL Abfrage mit PowerShell

Written By Johannes Huber  |  Coding, PowerShell  |  6 Comments

Windows PowerShell ist inzwischen schon sehr mächtig. Unter anderem ist es möglich eine SQL Abfrage mit PowerShell abzusetzen, ohne das SQL Server Modul zu installieren. SQL ist eine Datenbanksprache, welche in der heutigen Zeit kaum mehr wegzudenken ist. Alle komplexeren Softwaresysteme oder Webserver verwenden im Hintergrund Datenbanken. Um nun Datensätze aus der Datenbank zu lesen, oder andere SQL Querys abzusetzen, kann Windows PowerShell verwendet werden. Wie man SQL Abfragen mit PowerShell absetzen kann, lest ihr in diesem Beitrag.

SQL Abfrage mit PowerShell
mcmurryjulie / Pixabay

SQL Abfrage mit PowerShell

Mit der Hilfe dieser kleinen PowerShell Funktion kann ganz einfach ein SQL Query, beziehungsweise eine SQL Abfrage mit PowerShell abgesetzt werden. Hierzu wird eine Funktion namens “Perform-SQL” gebaut, mit der sich dann ein Befehl absetzen lässt.

# Beispiel 1 (auth integriert):
Perform-SQL -sqlhost 192.168.10.20\instanzname -DB YOURDATABASE -sqlQuery 'Select * from yourdatabase'

# Beispiel 2 (auth mit user + passwort):
Perform-SQL -sqlhost 192.168.10.20\instanzname -DB YOURDATABASE -user YOURUSER -password YOURPASSWORD -sqlQuery 'Select * from yourdatabase'


function Perform-SQL {
    Param(
        [string]$sqlHost,
        [string]$DB,
        [string]$SqlQuery,
        [string]$User,
        [string]$Password
    )
    if (($User) -and ($Password)) {
        $connectionParam = "Data Source=$sqlHost;User ID=$User;Password=$Password;Initial Catalog=$DB"
    } else { 
        $connectionParam = "Data Source=$sqlHost;Integrated Security=SSPI;Initial Catalog=$DB"
     }
    $sqlconnection = new-object system.data.SqlClient.SQLConnection($connectionParam)
    $command = new-object system.data.sqlclient.sqlcommand($sqlQuery,$sqlconnection)
    $sqlconnection.Open()
    $sqlDataAdapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    $sqlDataAdapter.Fill($dataSet) | Out-Null
    $sqlconnection.Close()
    $dataSet.Tables
}

Natürlich müssen nach dem “Perform-SQL” Kommando noch weitere Parameter übergeben werden:

  • -Host
  • -DB (database)
  • -user
  • -password
  • -sqlQuery

Nach dem Parameter “-sqlQuery” folgt der eigentliche SQL Befehl, der abgesetzt werden soll. In Zeile 01-05 habe ich zwei Beispiele für euch, wie eine solche SQL Abfrage mit PowerShell gemacht werden kann. Ich hoffe wir konnten euch weiterhelfen! 🙂

Auch interessant?!

[thrive_link color=’blue’ link=’https://www.itnator.net/wordpress-sql-befehle-uebersicht/’ target=’_blank’ size=’medium’ align=”]Wordpress SQL Befehle[/thrive_link]

  • Hallo Johannes,

    vielen Dank für diesen tollen Beitrag – ich wusste tatsächlich noch nicht, dass das mit der PowerShell möglich ist.

    Meine Frage: Lassen sich die Ergebnisse der SQL-Abfrage auch direkt in eine csv-Datei speichern?

    Viele Grüße
    René

  • Lieber Johannes,
    danke für die Artikel und Dein Bemühen. Der Code wurde aber nicht per CopyPaste aus einem laufenden System übernommen, denn er funktioniert nicht. Ich weiß, einem geschenkten Gaul ….

    Nach einer Stunde habe ich dann endlich gemerkt, dass die Variable “sqlHost” gefüllt, in data source aber “Host” verwendet wird. Danach hatte ich keine Lust mehr.

    • Hallo Wolfgang,

      danke für deine offenen Worte.
      Leider ist uns dieser Fehler unterlaufen – aber bereits ausgebessert.

      Danke für den Hinweis. Gruß Johannes

      • Komme leider jetzt erst dazu, zu antworten.
        1 Stunde, das ist eine nette Reaktionszeit, Respekt.

        Beste Grüße
        Wolfgang

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >