分离sqlcmd的stdout和stderr
我需要在Linux上使用sqlcmd实现Azure SQL数据仓库的测试工具。在测试中,我希望捕获sqlcmd遇到的任何错误消息,但使用-o参数将查询结果发送到/dev/null。在回顾中,似乎如果使用-o,-r1是没有意义的分离sqlcmd的stdout和stderr,sqlcmd,azure-sqldw,Sqlcmd,Azure Sqldw,我需要在Linux上使用sqlcmd实现Azure SQL数据仓库的测试工具。在测试中,我希望捕获sqlcmd遇到的任何错误消息,但使用-o参数将查询结果发送到/dev/null。在回顾中,似乎如果使用-o,-r1是没有意义的 -r[0 | 1] Redirects the error message output to the screen (stderr). If you do not specify a parameter or if you specify 0, only er
-r[0 | 1]
Redirects the error message output to the screen (stderr). If you do not specify a parameter or if you specify 0, only error messages that have a severity level of 11 or higher are redirected. If you specify 1, all error message output including PRINT is redirected. Has no effect if you use -o. By default, messages are sent to stdout.
无法理解为什么stdout和stderr会以这种方式混合
在将stdout+stderr写入命名管道时,我唯一的办法是在后台运行sqlcmd,然后从命名管道的结果中删除错误消息吗
我不希望在写入输出时产生任何延迟,但希望将完整的结果返回给客户端。sqlcmd-I debug_dir/test2.sql-r12>/tmp/2.out 1>/tmp/1.out对您有效吗 我在本地的盒子上试过: $>cat debug_dir/test2.sql 从test1中选择*; 去 从test1中选择*i='a'; 去 从test2中选择*; 去 $>sqlcmd-sxxx-N-uyyy-pzzz-daaa-I-I调试目录/test2.sql-r12>/tmp/2.out 1>/tmp/1.out $>cat/tmp/1.out i j k 3行受影响 a、b、c $>cat/tmp/2.out Msg 245,16级,状态1,服务器XXX,第1行 将varchar值“a”转换为数据类型int时,转换失败。 Msg 104309,16级,状态1,服务器XXX,第1行 输入脚本中没有批处理 您可以重定向到/dev/null而不是/tmp/1.out
我希望这有帮助。sqlcmd-I debug_dir/test2.sql-r12>/tmp/2.out 1>/tmp/1.out对您有用吗 我在本地的盒子上试过: $>cat debug_dir/test2.sql 从test1中选择*; 去 从test1中选择*i='a'; 去 从test2中选择*; 去 $>sqlcmd-sxxx-N-uyyy-pzzz-daaa-I-I调试目录/test2.sql-r12>/tmp/2.out 1>/tmp/1.out $>cat/tmp/1.out i j k 3行受影响 a、b、c $>cat/tmp/2.out Msg 245,16级,状态1,服务器XXX,第1行 将varchar值“a”转换为数据类型int时,转换失败。 Msg 104309,16级,状态1,服务器XXX,第1行 输入脚本中没有批处理 您可以重定向到/dev/null而不是/tmp/1.out 我希望这有帮助
2 1 3
1 2 3
2 1 4
2 1 4
11 12 4
11 12 3
2 1 3