3

antを使用して実行される.sqlファイルが1つあります。タグを使用して実行すると、「sqlcmd」を呼び出したときとは異なる出力を受け取りました。

SQLタグの出力:

  [sql] Executing resource: C:\SqlTesting\TestScriptDependencies\Executor.sql
  [sql] Failed to execute:  Use Library Exec CallSelectSP
  [sql] com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name'Libraty.dbo.libraryDocumentType'.
  [sql] 0 of 1 SQL statements executed successfully

execタグの出力:

 [exec] First SP
 [exec] Msg 208, Level 16, State 1, Server MyPC-PC, Procedure getFirstDocumentType, Line 3
 [exec] Invalid object name 'Libraty.dbo.libraryDocumentType'.
 [exec] Second SP
 [exec] Msg 208, Level 16, State 1, Server MyPC-PC, Procedure badSP, Line 3
 [exec] Invalid object name 'Libraty.dbo.libraryDocumentType'.

そしてこれは.sqlファイルです。

Print 'First SP'
Exec getFirstDocumentType
Print 'Second SP'
Exec badSP
Go

SQLタグがEXECタグと同じ出力を再現する方法なのだろうか。

ありがとう。

4

1 に答える 1

1

最初のものは、jdbc を介してスクリプト全体を単一のバッチとして送信しているようです。2番目はsqlcmdを介して各sqlステートメントを送信しているように見えます-したがって、printステートメントは成功します(そして、同期された出力が得られます-これは常に印刷で保証されるとは限りませんraiserror(str, 10, 1)-nowaitを使用します;タイムリーなメッセージングの唯一の保証です)、両方のsp呼び出しが試行されます、それぞれ独自の (sql) エラーを生成します。

于 2013-01-30T13:53:59.813 に答える