При запуске SQLCMD.exe и предоставлении аргументов командной строки для переменных сценариев я ожидаю, что значения, указанные в командной строке, переопределяют значения, определенные в файле SQL script.
например.
Учитывая следующий SQL Script:
:setvar XXX "SQL script"
print '$(XXX)'
И в командной строке:
sqlcmd.exe -S <Server> -d <Database> -E -b -i <Script> -v XXX="Batch script"
Я ожидаю, что вывод будет:
Пакет script
Однако вывод:
SQL script
Это намерение или должны быть удалены операторы :setvar
в SQL script?
Я представил операторы :setvar
в script, поэтому я могу редактировать/тестировать script в SQL Management Studio в режиме SQLCMD, но запускать сценарии из командной строки в тестовых и производственных средах.