当从我的 Java 应用程序运行 BCP 时,它以状态代码 0 退出,而预期状态代码为 1。 我使用无效的数据和格式化文件组合运行 bcp,bcp 给出以下错误:
Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid character value for cast specification
BCP copy in failed
然而,正如我所怀疑的那样,BCP 以退出代码 0 而不是 1 退出。现在很难在运行 BCP 时查看是否出现故障。一旦它们在某种程度上匹配(如相同的分隔符),使用正确的代码退出即可。
命令
PS C:\Users\feh\Desktop> bcp integrate_test.dbo.AS_LOADER_DELIMITED in .\data.dat -S "10.0.0.161\SQL2K5,1048" -U user -P pass -f .\formatting.ctl -m 1
Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unexpected EOF encountered in BCP data-file
0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1
PS C:\Users\feh\Desktop> $lastexitcode
0
我如何验证数据的格式化文件并在它们不匹配时获得退出代码 1?
最佳答案
如果 bcp“在”考虑使用 BULK INSERT .这与 bcp 相同,但可以使用 SQL Server TRY/CATCH 或正常异常处理来捕获
否则,您是在捕获 %ERRORLEVEL%
而不是其他代码吗?
关于java - BCP 以代码 0 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6595016/