2010-09-02 3 views
2

Я не могу заставить NAnt прервать мою сборку, когда она встречает ошибку. Вот один из многих sqlcmd.exe казни:NAnt, sqlcmd.exe и коды ошибок

<property name="test" value=""/> 
<exec program="sqlcmd.exe" resultproperty="test" failonerror="true" 
     basedir="${sqlcmd.dir}" commandline="${commandline.script}" verbose="true"> 
    <arg value="${filename}" /> 
    <arg value="-v databaseName=&quot;${Database.Name}&quot;" /> 
</exec> 
<echo message="Result: ${test}"/> 

Когда я попал на этот шаг, я в конечном итоге с ошибкой из-за (в данном случае) недостающую запятую. Вот результат:

[exec] Starting 'C:\...\sqlcmd.exe (-E -S (local) -e -d "Core" 
     -i "C:\...\Associations.sql" -v databaseName="Core")' 
     in 'C:\...\Scripts' 
[exec] <snip - lots of SQL> 
[exec] Msg 102, Level 15, State 1, Server <snip>, Line 7 
[exec] Incorrect syntax near 'CreatedDate'. 
[exec] Msg 319, Level 15, State 1, Server <snip>, Line 11 
[exec] Incorrect syntax near the keyword 'with'. If this 
     statement is a common table expression, an xmlnamespaces 
     clause or a change tracking context clause, the previous 
     statement must be terminated with a semicolon. 
[echo] Result: 0 

Довольно неприятная ошибка, и все же sqlcmd.exe появляется, чтобы установить код возврата 0.

Любые идеи, чтобы убедиться, что мой сценарий прерывается, когда я пропускаю через запятую ?

ответ

7

Вы попробовали установить -b вариант? Это приведет к ошибке ERRORLEVEL до 1. Может помочь Нэнту решить.

+0

Отлично, это было трюк. Спасибо! – ladenedge

1

documentation for sqlcmd.exe Предполагается, что вам необходимо передать переключатель -r, чтобы отправить ошибки stderr, которые Нант использует для проверки на наличие ошибок.

+0

К сожалению, передача '-r 1', кажется, не изменяет результат команды. – ladenedge