2013-11-26 4 views
2

Я столкнулся с нечетной проблемой, которая, я уверен, легко объясняется и исправляется.Запуск SQLCMD из пакетного файла после установки SQLServer

Я использую .bat-файл для установки большого количества программ, одним из которых является SQL-сервер 2012 года (если это имеет значение, другие установки - это просто .net framework, OPOS-драйверы и программное обеспечение POS, которое использует SQL-сервер) ,

Я могу получить командный файл, чтобы тихо установить все, включая SQL (с SSMS), что отлично. Но как только SQL Server установлен, я хотел бы запустить несколько SQL-скриптов для создания/прикрепления баз данных.

Я знаю, что установка работает (если я не пытаюсь сделать ничего, кроме установки), и я знаю, что SQLCMD работает (если я запускаю его отдельно, после установки), но если я попытаюсь запустить SQLCMD после установки, в том же командном файле он не работает со стандартным «SQLCMD не распознается как внутренняя или внешняя команда ...»

Я поставил это на необходимость перезапустить CMD, чтобы получить его recoginise новую команду (то есть SQLCMD), поэтому я решил, что я разделил команды SQLCMD в отдельный командный файл и назову его, но он все равно не работает. Я должен физически закрыть мой оригинальный пакетный файл до того, как CMD.exe подберет новые команды.

Итак ... возможно ли «обновить» cmd.exe, чтобы вновь установленные команды SQLCMD можно было использовать из исходного пакетного файла?

Здесь (некоторые из) моего сценария. (Обратите внимание, что я удалил все другие до установки SQL Server)

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

"%~dp0SQLServer.exe" /QS /INDICATEPROGRESS /ACTION=install /FEATURES=SQL,SSMS /INSTANCENAME=Datasym /SECURITYMODE=SQL /SAPWD=Welcome21ST /IACCEPTSQLSERVERLICENSETERMS 
echo. 
echo SQL Server installed 

sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

В %script% изменения переменных (как я уже сказал, есть несколько сценариев, которые я хотел бежать). И я знаю, что сами скрипты работают.

Почему CMD не распознает SQLCMD как команду?

Я попытался заменить строку:

sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

с

call sqlscript.bat 

, как я думал, что будет открыть еще один CMD, EXE (что он делает), поэтому я предположил, что второй CMD будет см. команду ew (SQLCMD), но это не похоже на.

Любая помощь по поводу того, как я могу получить SQLCMD для работы в исходном пакетном файле, будет с благодарностью оценена.

+1

просто используйте полный путь к sqlcmd. –

+0

Я согласен с тем, что говорит Мэтт. Причина в том, что установка SQL, вероятно, изменяет переменную среды PATH, чтобы обеспечить путь к SQLCMD. Это НЕ доступно для этой сессии CMD. – RGuggisberg

ответ

1

Как вы уже нашли, текущее окно CMD не будет отображать новые изменения в переменной среды PATH системы. Если по какой-то причине вы не хотите вводить полный путь к sqlcmd (который я считаю лучшим решением), вы можете попробовать сделать это вместо этого.

start /wait cmd /c sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

Это породит новое окно и ждать SQLCMD вызова, чтобы закончить, прежде чем вернуться к исходному сценарию.

+0

Полный путь к SQLCMD работает отлично, поэтому я пойду с этим. –

+0

Рад, что вы нашли решение. Не забывайте отмечать это как ответ. :-) – Mark

Смежные вопросы