In der RTP-Version (11.0.1790.0) ist der -v
switch erscheint nicht in der Liste der Parameter, wenn sqlcmd -?
ausgeführt wird . Anscheinend wird diese Option von der Linux-Version des Tools nicht unterstützt.
Soweit ich das beurteilen kann, funktioniert das Importieren von Parameterwerten aus Umgebungsvariablen auch nicht.
Wenn Sie eine Problemumgehung benötigen, besteht eine Möglichkeit darin, einen oder mehrere :setvar
zu verketten Anweisungen mit der Textdatei, die die Befehle enthält, die Sie in einer neuen Datei ausführen möchten, und führen Sie dann die neue Datei aus. Basierend auf Ihrem Beispiel:
echo :setvar param1 DUMMYVALUE > param_input.sql
cat input.sql >> param_input.sql
sqlcmd -S server -d database -U user -P pass -i param_input.sql
Sie können die Variable in Linux exportieren. Danach müssen Sie die Variable nicht mehr in sqlcmd
übergeben . Ich habe jedoch bemerkt, dass Sie Ihr SQL-Skript ändern und den :setvar
entfernen müssen Befehl, wenn er keinen Standardwert hat.
export dbName=xyz
sqlcmd -Uusername -Sservername -Ppassword -i script.sql
:setvar dbName --remove this line
USE [$(dbName)]
GO
Sie müssen keine Variablen an sqlcmd übergeben. Es wählt automatisch aus Ihren Shell-Variablen aus:z. B.
export param1=DUMMYVALUE
sqlcmd -S $host -U $user -P $pwd -d $db -i input.sql