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

标签 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 标记相同输出的一种方式。

谢谢。

最佳答案

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

关于sql - Ant <Sql> 和 <exec> sqlcmd - 不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763144/

相关文章:

mysql - 使用mysql中的触发器计算BLOB大小

sql-server - SQL Server 2005 会因为我使用 nvarchar(50) 而不是整数作为主键而惩罚我吗?

database - 左加入 influxDB

mysql - 由多列定义的唯一行

sql - 从列表中选择具有特定字符串值结尾的表中的行

sql - 在 SQL Select 语句中使用 If else

sql - 从 SQL 数据库中选择具有相似标签(多对多关系)的行

php - 如何显示数据库中的所有表名?

sql - 使用一个创建两个表

json - 在 SQL Server 中使用子项创建 JSON(Web 树的结构)