当 BCP 失败("BCP copy in failed")但不生成 -e 错误日志内容时,这意味着什么?

What does it mean when BCP fails ("BCP copy in failed"), but not -e error log contents generated?

在 CentOS7 上使用来自 mssql-tools 的 BCP 并尝试将一些 TSV 数据复制到本地 MSSQL 数据库中,BCP 无法执行复制并抛出错误 "BCP copy in failed"。命令是 运行 是:

TO_SERVER_ODBCDSN="-D -S MyMSSQLServer"
RECOMMEDED_IMPORT_MODE='-c' # makes a big difference, see 
/opt/mssql-tools/bin/bcp "$TABLE" in "$filename" \
        $TO_SERVER_ODBCDSN \
        -U $USER -P $PASSWORD \
        -d $DB \
        $RECOMMEDED_IMPORT_MODE \
        -t "\t" \
        -e ${filename}.bcperror.log

然而该命令创建的错误日志是空的。这是什么意思?有人有解决 "copy in failed" 错误的进一步调试技巧吗?

使用 -e 选项时创建的错误日志旨在捕获有关数据本身的错误。因此,当数据溢出时,错误日志将包含错误(字段中的字节太多,而列中的字节太少)。

执行错误或 BCP 应用程序本身的错误不会在 -e 选项创建的错误文件中捕获。

在自动化环境中,如果您想捕获或记录此类错误,您需要将 BCP 命令的输出重定向到一个文件以便稍后查看,甚至加载到 table 中的日志 table =16=] table.