6

SQL Abfrage mit PowerShell

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?!

Wordpress SQL Befehle
Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

  • 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é

  • Super, vielen Dank. Werde ich ausprobieren.

  • Wolfgang sagt:

    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.

  • sidebar
    >