我有一个使用 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 标记相同输出的一种方式。
谢谢。
最佳答案
看起来第一个是通过 jdbc 将整个脚本作为一个批处理提交。而第二个似乎是通过 sqlcmd 发送每个 sql 语句 - 因此打印语句成功(并导致同步输出 - 打印并不总是保证 - raiserror(str, 10, 1)
with nowait ; 是及时消息传递的唯一保证)并且尝试了两个 sp 调用,每个调用都会产生自己的(sql)错误。
关于sql - Ant <Sql> 和 <exec> sqlcmd - 不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763144/