分离 sqlcmd 的标准输出和标准错误
Separating sqlcmd's stdout and stderr
我需要在 Linux 上使用 sqlcmd 为 Azure SQL 数据仓库实施测试工具。在我的测试中,我想捕获 sqlcmd 遇到的任何错误消息,但将查询结果发送到 /dev/null(使用 -o 参数)。复习中https://msdn.microsoft.com/en-us/library/ms162773.aspx,好像用了-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 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 吗?
我不想在写入输出时造成任何延迟,但确实希望 return 向客户提供完整的结果。
"sqlcmd -i debug_dir/test2.sql -r1 2> /tmp/2.out 1> /tmp/1.out"对你有用吗?
我在本地盒子上试过了:
$> 猫 debug_dir/test2.sql
select * 来自测试 1;
去
select * 来自 test1,其中 i = 'a';
去
select * 来自测试 2;
去
$> sqlcmd -S XXX -N -U YYY -P ZZZ -d AAA -I -i debug_dir/test2.sql -r1 2> [=43= .out 1> /tmp/1.out
$> 猫 /tmp/1.out
我j k
2 1 3
1 2 3
2 1 4
(3 行受影响)
a b c
2 1 4
11 12 4
11 12 3
2 1 3
$> 猫 /tmp/2.out
消息 245,级别 16,状态 1,服务器 XXX,第 1 行
将 varchar 值 'a' 转换为数据类型 int 时转换失败。
消息 104309,级别 16,状态 1,服务器 XXX,第 1 行
输入脚本中没有批次。
您可以重定向到 /dev/null 而不是 /tmp/1.out
希望对您有所帮助。
我需要在 Linux 上使用 sqlcmd 为 Azure SQL 数据仓库实施测试工具。在我的测试中,我想捕获 sqlcmd 遇到的任何错误消息,但将查询结果发送到 /dev/null(使用 -o 参数)。复习中https://msdn.microsoft.com/en-us/library/ms162773.aspx,好像用了-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 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 吗?
我不想在写入输出时造成任何延迟,但确实希望 return 向客户提供完整的结果。
"sqlcmd -i debug_dir/test2.sql -r1 2> /tmp/2.out 1> /tmp/1.out"对你有用吗?
我在本地盒子上试过了:
$> 猫 debug_dir/test2.sql
select * 来自测试 1; 去
select * 来自 test1,其中 i = 'a'; 去
select * 来自测试 2; 去
$> sqlcmd -S XXX -N -U YYY -P ZZZ -d AAA -I -i debug_dir/test2.sql -r1 2> [=43= .out 1> /tmp/1.out
$> 猫 /tmp/1.out 我j k
2 1 3
1 2 3
2 1 4
(3 行受影响) a b c
2 1 4
11 12 4
11 12 3
2 1 3
$> 猫 /tmp/2.out 消息 245,级别 16,状态 1,服务器 XXX,第 1 行 将 varchar 值 'a' 转换为数据类型 int 时转换失败。 消息 104309,级别 16,状态 1,服务器 XXX,第 1 行 输入脚本中没有批次。
您可以重定向到 /dev/null 而不是 /tmp/1.out
希望对您有所帮助。