Я не знаком с sqlcmd.exe
, но из описания ваших ожиданий я думаю, что sqlcmd отправляет информацию вниз по потоку ошибок. Это, казалось бы, странная, но обычная практика и, следовательно, появление.
Проблема заключается в том, что переменная $dump
будет собирать информацию только в выходной поток. То, что вы можете сделать, - перенаправить поток ошибок в выходной поток с помощью перенаправителя. Для получения дополнительной информации вы можете посмотреть на about_redirection
Таким образом, используя следующий будут выполнить следующее:
$dump = sqlcmd -S $server -Q $sqlCommand -t $queryTimeout -b -h -1 -W 2>&1
Связанный документ описывает 2>&1
, как
Посылает ошибки (2) и успех выход (1) к выходному потоку успеха.
В настоящее время $dump
должно содержать то, что вы ищете. Будьте осторожны, хотя он может содержать больше информации, чем вы ожидаете.
Ожидаете ли вы, что $ dump содержит ошибку? $ dump будет содержать только данные, отправляемые в выходной поток. Если из потока ошибок вам нужно перенаправить этот '$ dump = sqlcmd -S $ server -Q $ sqlCommand -t $ queryTimeout -b -h -1 -W 2> & 1' ... возможно, – Matt
SQLCMD - это странное существо , Я бы подтвердил, выполнив запрос в SQL и проверив, что вы действительно получаете результат, а затем беспорядок с коммутаторами. Я обычно запускаю полные скрипты, поэтому я использую '-i' и даю имя файла, но я мог бы заставить его работать с' & (SQLCMD) -s localhost -x -i $ file'. Попробуйте удалить все свои коммутаторы, и если вы получите результат, добавьте их обратно. –
Я ожидаю, что дамп будет содержать вывод файла sql, как если бы я запустил его в студии управления SQL –