2016-12-21 2 views
0

So habe ich eine sehr einfache Tabelle in SQL Server (3 Spalten) und ich benutze 'Invoke-Sqlcmd', um die Tabelle für Informationen abzufragen und in verschiedene Formularfelder zu setzen. Das funktioniert gut, daher scheint die Grundvoraussetzung für die Verbindung mit einer Datenbank mit der Syntax im Einsatz zu sein.Powershell Studio 2016 und SQL Updates | SQL-Abfragen mit Joins

Allerdings finde ich dann, wenn ich den Abfrageteil des Cmdlet zu "UPDATE" -Werte ändern, wo auch immer ... die Datenbank nicht aktualisiert. Wenn ich jedoch den gleichen Code in Powershell ISE ausführe, wird es korrekt aktualisiert.

Ähnlich, wenn ich versuche, Daten aus einer Reihe von Tabellen mit Joins zu ziehen, funktioniert die Abfrage in PS ISE, aber im Code für PS Studio füllt sie keine Variable mit Ergebnissen wie meine vorherige erfolgreiche Invoke-Sqlcmd.

Code, der in PS Studio funktioniert:

$QueryResult = Invoke-Sqlcmd -ServerInstance 'server\instance' -Database 'Hardware' -Query "SELECT * FROM allocation where empno = $emp" 

Code, die Arbeit in PS Studio tut aber funktioniert in ISE:

Invoke-Sqlcmd -ServerInstance 'Server\instance' -Database 'Hardware' -Query "Update dbo.allocation set MaxAllowed = $updateinputint where empno = $emp" 

Code, der in ISE arbeitet aber nicht in PS Studio mit Verknüpfungen :

Zuerst die letzte Abfrage funktionierte nicht in ISE, bis ich Aliase entfernte, dann hat es gut funktioniert. Hat PS Studio einige Einschränkungen? Oder fehlt mir ein Trick? Es gibt keine Fehlermeldungen, das Debugging läuft über die Zeilen, aber die Variablen zeigen nichts an oder die Datenbank wird nicht aktualisiert.

Vielen Dank im Voraus für eine Beratung.

+0

Ich entschuldige mich für die Formatierung sah es viel besser in der Vorschau. – Dan

+2

Was meinst du mit * funktioniert * eigentlich nicht? – Rahul

+0

Das $ queryresult2 erhält keine Daten, es ist nur Null. – Dan

Antwort

0

Es war wegen "Leerraum", auch wenn ich die Abfrage bearbeitet, um auf einer Zeile zu sitzen, um keine Wagenrückläufe oder Tabbed Space wegzulassen, würde es immer noch nicht funktionieren. Anscheinend mag Powershell Studio keine langen Strings. Das Einkapseln der Abfragezeichenfolge mit @ querytext @ hat es funktioniert. Der Inhalt von Debug-Variablen zur Laufzeit sah identisch mit und ohne die @ -Symbole aus, aber mit dem es funktionierte.