2012-12-07 46 views
3

我有一個.sql文件是使用ant執行的,當我使用標籤執行它時,我收到了不同的輸出,就像我使用調用「sqlcmd」時一樣。Ant <Sql> and <exec> 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

看起來像第一個通過jdbc將整個腳本作爲單個批處理提交。而第二個似乎是通過sqlcmd發送每個sql語句 - 因此打印語句成功(並導致同步輸出 - 打印時並不總能保證 - raiserror(str, 10, 1) with nowait;是及時消息的唯一保證)並且兩個sp調用都是嘗試,每個產生自己的(SQL)錯誤。