3

エラーが発生したときに NAnt にビルドを中止させることができないようです。多くのsqlcmd.exe実行の 1 つを次に示します。

<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 に設定しているようです。

コンマがないときにスクリプトが中止されるようにするためのアイデアはありますか?

4

2 に答える 2

8

オプションを設定してみました-bか?ERRORLEVELエラーが発生すると 1 に設定されます。ナントが決めるのを助けることができました。

于 2010-09-07T03:50:07.713 に答える
1

sqlcmd.exeのドキュメントには、Nant がエラーのチェックに使用する-rエラーを送信するスイッチを渡す必要があると記載されているようです。stderr

于 2010-09-02T08:11:18.187 に答える