SQL System Class

Wie in den Basics zur PowerShell dargestellt haben wir natürlich auch Systemklassen derer wir uns bedienen können - hier handelt es sich sozusagen um die On-Bord-Mittel.

SQL-Klasse (als ein Beispiel): System.Data.SqlClient.SqlConnection

Beispielhafte Umsetzung: Beispiel (inkl. Video) auf GermanPowerShell

# Anlegen der Datenquelle, also Server\Instanz
$Datenquelle = "RESERVE\GPS"
# Benutzer zum Verbinden
$Benutzer = "Administrator"
# Passwort zum Verbinden
$Passwort = "Start1234"
# Datenbank zum Verbinden
$Datenbank = "Adventure"
# Befehl zum späteren Verbinden zum Server
$VerbindungString = "Server=$Datenquelle;uid=$Benutzer; pwd=$Passwort;Database=$Datenbank;Integrated Security=true;"

# Connection Objekt erstellen
$Verbindung = New-Object System.Data.SqlClient.SqlConnection
# ConnectionString übergeben an Connection Objekt
$Verbindung.ConnectionString = $VerbindungString
# Öffnen der Verbindung
$Verbindung.Open()

# SQL Query zum aufrufen
$Query = "SELECT * FROM [dbo].[DimCustomer]"

# Command Objekt für Befehle erstellen
$Befehl = $Verbindung.CreateCommand()
# Query als CommandText übergeben
$Befehl.CommandText = $Query

# Query als Reader ausführen
$Resultat = $Befehl.ExecuteReader()

# DataTable Objekt für die SQL Daten erstellen
$Tabelle = new-object System.Data.DataTable
# Resultate in die DataTable laden
$Tabelle.Load($Resultat)

# Verbindung zum SQL Server wieder trennen
$Verbindung.Close()

# Zeilen zählen
$Tabelle.Rows.Count
# Spalten zählen
$Tabelle.Columns.Count
# Ausgabe der Daten auf IndexWert 10
$Tabelle.Rows[10]
# Suchen nach CustomerKey
$Tabelle.Rows | where {$_.CustomerKey -eq 11004}
# Prüfen ob Fehler vorhanden sind
$Tabelle.HasErrors

Einmal mehr: mit der PowerShell greifen wir direkt auf die Techniken unter der Windows Haube zu.

Alternativ gibt es auch spezielle DB-Provider Klassen.

Auflistung der verfügbaren Datenprovider auf einem Windows: (hier als Beispiel auf einem Windows 10 Client)

[System.Data.Common.DbProviderFactories]::GetFactoryClasses()

Name                       Description                                InvariantName            AssemblyQualifiedName
----                       -----------                                -------------            ---------------------
Odbc Data Provider         .Net Framework Data Provider for Odbc      System.Data.Odbc         System.Data.Odbc.OdbcFactory, ...
OleDb Data Provider        .Net Framework Data Provider for OleDb     System.Data.OleDb        System.Data.OleDb.OleDbFactory, ...
OracleClient Data Provider .Net Framework Data Provider for Oracle    System.Data.OracleClient System.Data.OracleClient.OracleClientFactory, ...
SqlClient Data Provider    .Net Framework Data Provider for SqlServer System.Data.SqlClient    System.Data.SqlClient.SqlClientFactory, ...

Und natürlich gibt es für die Rubrik ODBC dann wieder einzelne Unterstützungen für unterschiedliche Anbindungen: dBase, Excel, Access, …