Ant <sql>和<exec> sqlcmd - 不同的输出</exec> </sql>

时间:2012-12-07 12:29:52

标签: sql sql-server database ant sqlcmd

我有一个使用ant执行的.sql文件,当我用标签执行它时我收到了不同的输出,就像我使用调用“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标记相同的输出。

感谢。

1 个答案:

答案 0 :(得分:1)

看起来第一个是通过jdbc将整个脚本作为单个批处理提交。而第二个似乎是通过sqlcmd发送每个sql语句 - 因此print语句成功(并导致同步输出 - 这并不总是保证print - raiserror(str, 10, 1) with nowait;是及时消息的唯一保证)和尝试进行两次sp调用,每次调用都会产生自己的(sql)错误。