SQLServer-Tabelle(n) lesen mit PowerShell
Hallo,
ich habe ein PowerShell-Script erstellt um eine Tabelle aus einer SQLServer (Express) Datenbank zu lesen.
#
import-module sqlserver
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$serverObj = new-object Microsoft.SqlServer.Management.Smo.Server("(localdb)\mssqllocaldb")
$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database ($serverObj, "powershellDB")
#$SQLOutput =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Objekte" `
-columnname objId,Name,Pfad -outputas datarows
#
#$sqloutput
Das klappt auch ...
Jetzt will ich aber auch noch eine 2.Tabelle aus dieser Datenbank lesen ... und das klappt nicht, es wird nur der Inhalt der 1. Tabelle ausgegeben
#
import-module sqlserver
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$serverObj = new-object Microsoft.SqlServer.Management.Smo.Server("(localdb)\mssqllocaldb")
$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database ($serverObj, "powershellDB")
#$SQLOutput =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Objekte" `
-columnname objId,Name,Pfad -outputas datarows
#
#$sqloutput
"trennen"
#
#$SQLOutput1 =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Attribute" `
-columnname Attrid,Attribut,AttributArt -outputas datarows -topn 3
#
#$sqloutput1
"ende"
Interessanterweise erscheinen zwischen "trennen" und "ende" 3 Leerzeilen (vermutlich wegen TopN=3)
Wenn ich die 3 Zeilen des ersten read-sqltabledata-Aufrufs auskommentiere, dann kommen zwischen "trennen" und "ende" genau die erwarteten 3 rows aus der Tabelle
Hat jemand eine Idee was ich falsch mache?
Danke und viele Grüße Nobby
ich habe ein PowerShell-Script erstellt um eine Tabelle aus einer SQLServer (Express) Datenbank zu lesen.
#
import-module sqlserver
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$serverObj = new-object Microsoft.SqlServer.Management.Smo.Server("(localdb)\mssqllocaldb")
$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database ($serverObj, "powershellDB")
#$SQLOutput =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Objekte" `
-columnname objId,Name,Pfad -outputas datarows
#
#$sqloutput
Das klappt auch ...
Jetzt will ich aber auch noch eine 2.Tabelle aus dieser Datenbank lesen ... und das klappt nicht, es wird nur der Inhalt der 1. Tabelle ausgegeben
#
import-module sqlserver
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$serverObj = new-object Microsoft.SqlServer.Management.Smo.Server("(localdb)\mssqllocaldb")
$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database ($serverObj, "powershellDB")
#$SQLOutput =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Objekte" `
-columnname objId,Name,Pfad -outputas datarows
#
#$sqloutput
"trennen"
#
#$SQLOutput1 =
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' `
-Databasename powershellDB -schemaname "dbo" -tablename "Attribute" `
-columnname Attrid,Attribut,AttributArt -outputas datarows -topn 3
#
#$sqloutput1
"ende"
Interessanterweise erscheinen zwischen "trennen" und "ende" 3 Leerzeilen (vermutlich wegen TopN=3)
Wenn ich die 3 Zeilen des ersten read-sqltabledata-Aufrufs auskommentiere, dann kommen zwischen "trennen" und "ende" genau die erwarteten 3 rows aus der Tabelle
Hat jemand eine Idee was ich falsch mache?
Danke und viele Grüße Nobby
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3682039509
Url: https://administrator.de/forum/sqlserver-tabellen-lesen-mit-powershell-3682039509.html
Ausgedruckt am: 23.12.2024 um 05:12 Uhr
6 Kommentare
Neuester Kommentar
Moin Nobby1805,
eigentlich sollte es vereinfacht bereits schon so funktionieren.
Gruss Alex
P.S. Du hast jetzt aber nicht rein zufällig am 18.05 Geburtstag, oder?
eigentlich sollte es vereinfacht bereits schon so funktionieren.
import-module sqlserver
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Objekte" -columnname objId,Name,Pfad -outputas datarows
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Attribute" -columnname Attrid,Attribut,AttributArt -outputas datarows -topn 3
Gruss Alex
P.S. Du hast jetzt aber nicht rein zufällig am 18.05 Geburtstag, oder?
Moin Nobby,
ähm, das ist jetzt kein Witz, als ich vorhin auf der Schüssel gessesen bin, ist mir genau das in den Sinn gekommen. 🤪
So ist das nun zu 100% korrekt. 😎
Den Grund kann ich dir auch nennen.
Ohne das FT, versucht PS die Ausgabe der zweiten Zeile in der Darstellungsstruktur der ersten Zeile auszugeben.
Ja, ich weiss -->😵💫, MS halt eben.
Und mit FT (Format-Table), erzwingst du quasi, dass die Ausgabe jeder Befehlszeile, immer neu formatiert wird. 😉
Das ist mir ähnlich schon kräftig mal auf die Füsse gefallen, aber eben noch nicht beim SQL.
SQL's schreibe ich normalerweise nativ und nicht per PS, dann flutschen diese auch etwas schneller. 🤪
Beste Grüsse aus BaWü
Alex
oder besser gesagt ... war es.
Ich war nicht untätig und habe nur gewartet ob mir jemand eine Lösung liefert, sondern weiter gesucht und irgendwann dann etwas gefunden
(in Zeile 4 ganz hinten schauen)
jetzt muss ich nur noch irgendwo oder von irgendwem eine Erklärung finden, warum das so ist
Ich war nicht untätig und habe nur gewartet ob mir jemand eine Lösung liefert, sondern weiter gesucht und irgendwann dann etwas gefunden
import-module sqlserver
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Objekte" -columnname objId,Name,Pfad -outputas datarows
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Attribute" -columnname Attrid,Attribut,AttributArt -outputas datarows -topn 3 | format-table
(in Zeile 4 ganz hinten schauen)
jetzt muss ich nur noch irgendwo oder von irgendwem eine Erklärung finden, warum das so ist
ähm, das ist jetzt kein Witz, als ich vorhin auf der Schüssel gessesen bin, ist mir genau das in den Sinn gekommen. 🤪
import-module sqlserver
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Objekte" -columnname objId,Name,Pfad -outputas datarows | FT -AutoSize
read-sqltabledata -ServerInstance '(localdb)\mssqllocaldb' -Databasename powershellDB -schemaname "dbo" -tablename "Attribute" -columnname Attrid,Attribut,AttributArt -outputas datarows -topn 3 | FT -AutoSize
So ist das nun zu 100% korrekt. 😎
jetzt muss ich nur noch irgendwo oder von irgendwem eine Erklärung finden, warum das so ist
Den Grund kann ich dir auch nennen.
Ohne das FT, versucht PS die Ausgabe der zweiten Zeile in der Darstellungsstruktur der ersten Zeile auszugeben.
Ja, ich weiss -->😵💫, MS halt eben.
Und mit FT (Format-Table), erzwingst du quasi, dass die Ausgabe jeder Befehlszeile, immer neu formatiert wird. 😉
Das ist mir ähnlich schon kräftig mal auf die Füsse gefallen, aber eben noch nicht beim SQL.
SQL's schreibe ich normalerweise nativ und nicht per PS, dann flutschen diese auch etwas schneller. 🤪
Beste Grüsse aus BaWü
Alex