Wywołaj sqlcmd z PowerShell

Zadanie jest proste: mamy skrypt z poleceniami SQL, który chcemy wywołać przez sqlcmd. Ale – w skrypcie wykorzystujemy zmienną, która na dodatek zawiera ścieżkę do katalogu. Jako przykład niech posłuży taki fragment zapisany w pliku SELECT.sql:

SELECT Imie = 'Bartek', Zmienna = '$(ScriptPath)'

Wywołanie z poziomu cmd nie stwarza problemów:

C:\> cd tmp
C:\tmp> sqlcmd -r1 -v ScriptPath="C:\tmp" -i SELECT.sql -S Serwer-f 1250
Bartek Zmienna
------ -------
Bartek C:\tmp

Poszczególne przełączniki oznaczają:

  • -r1 – chcę zobaczyć błędy na ekranie
  • -v – przekazuję zmienną o nazwie ScriptPath z wartością zawierającą jakąś ścieżkę
  • -i – nazwa skryptu wejściowego
  • -S – mój serwer
  • -f – strona kodowa

I super, a jeśli potrzebujemy uruchomić w PowerShell?

PS C:\tmp> sqlcmd -r1 -v ScriptPath="C:\tmp" -i SELECT.sql -S Serwer -f 1250
Sqlcmd: ':\tmp': Invalid argument. Enter '-?' for help.PS C:\tmp>

Czemu tak?
Czytaj dalej