Benutzer mit den meisten Antworten
Powershell SQL Script aufrufen

Frage
-
Hi, ich weiß nicht ob das hier das richtige Forum ist, aber ich habe folgendes Problem
Ich rufe mittels der Powershell folgendes auf
Invoke-Sqlcmd -InputFile $ExecuteSqlScript -Database $Database -ServerInstance $ServerInstance -Username "$Username" -Password "$Password" -v Zahl=4711
mit dem -v Parameter übergebe ich eine Zahl einem SQL Script
im SQL Script habe ich
DECLARE @MeineZahl int;
SET @MeineZahl = '$(Zahl)'
bekomme aber
Fehler beim Konvertieren des varchar-Werts "$(Zahl)" in den int-Datentyp.
Wie bekomme ich die Variable MeinZahl richtig gesetzt?
Antworten
-
Hallo Thomas,
sorry, dass es etwas gedauert hat. Bei mir funktioniert folgendes Problemlos.
[SQL]
DECLARE @MeineZahl int; SET @MeineZahl = $(Zahl); SELECT $(Zahl) AS Parameter, @MeineZahl AS Variable;
[Powershell]
Invoke-Sqlcmd -InputFile "X:\Ordner\Test.sql" -Variable Zahl=4711
Wenn Du mehrere Parameter übergeben willst, dann bspw. so:
$Variables = "Var1='Zeichenfolge'", "Var2=123" Invoke-Sqlcmd -InputFile "X:\Ordner\Test.sql" -Variable $Variables
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan Falz Donnerstag, 15. September 2022 07:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 19. September 2022 06:20
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 29. September 2022 07:52
Alle Antworten
-
Hallo Thomas,
abgesehen davon, dass eine Zahl eine Zahl und kein String ist, die Hochkommata bei '$(Zahl)' also fehl am Platz sind, leitet das Back-Tick Zeichen (`=> accent grave) die Variablenerkennung bzw. -ersetzung ein. Siehe dazu:
Invoke-Sqlcmd - Example 3: Invoke a script and pass in variable values from a string
The $ signs in the SELECT statement that identify the SQLCMD variables are escaped using the back-tick (`) character.
Schau dir auch mal diesen SO Thread an.
Need help getting Invoke-Sqlcmd, -InputFile & -Variable working nicely together
HTH
Falls es nicht hilft, meld dich nochmal hier.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan Falz Freitag, 9. September 2022 13:52
-
Hallo Thomas,
sorry, dass es etwas gedauert hat. Bei mir funktioniert folgendes Problemlos.
[SQL]
DECLARE @MeineZahl int; SET @MeineZahl = $(Zahl); SELECT $(Zahl) AS Parameter, @MeineZahl AS Variable;
[Powershell]
Invoke-Sqlcmd -InputFile "X:\Ordner\Test.sql" -Variable Zahl=4711
Wenn Du mehrere Parameter übergeben willst, dann bspw. so:
$Variables = "Var1='Zeichenfolge'", "Var2=123" Invoke-Sqlcmd -InputFile "X:\Ordner\Test.sql" -Variable $Variables
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan Falz Donnerstag, 15. September 2022 07:10
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Montag, 19. September 2022 06:20
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 29. September 2022 07:52
-
Hallo Thomas,
Ich gehe davon aus, dass Stefans Codebeispiele Dir weitergeholfen haben. Solltest Du noch Rückfragen haben, gib bitte Bescheid.
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.