3

我有一个使用 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] 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 将整个脚本作为一个批次提交。而第二个似乎是通过 sqlcmd 发送每个 sql 语句 - 因此打印语句成功(并导致同步输出 - print 并不总是保证 -raiserror(str, 10, 1)使用 nowait;是及时消息传递的唯一保证)并且两个 sp 调用都被尝试,每个产生自己的(sql)错误。

于 2013-01-30T13:53:59.813 回答