Мне нужно реализовать тестовую обвязку для хранилища данных SQL Azure с помощью sqlcmd в Linux. В своем тесте я хочу перехватить все сообщения об ошибках, обнаруженные 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 будут смешиваться таким образом.
Является ли мой единственный выход запускать sqlcmd в фоновом режиме при записи «stdout + stderr» в именованный канал, а затем удалять сообщения об ошибках из результатов именованного канала?
Я не хочу задерживать запись вывода, но хочу вернуть полные результаты клиенту.