Обзор #
После недавних обновлений mssql-tools При использовании этого пакета пользователи могут столкнуться с неожиданным поведением при выполнении запросов. sqlcmdТипичный пример команды:
/usr/local/relianoid/app/libexec/sqlcmd -S -U -П -Q "select count(*) from TABLE_0;"
В некоторых случаях ошибки запросов некорректно отображаются как сбои команд, что может повлиять на работу скриптов, автоматизации или процессов мониторинга (например, проверок работоспособности FarmGuardian), использующих коды завершения.
Вызывать #
Эта проблема вызвана изменение поведения в sqlcmd утилита, включенных в mssql-tools пакет.
По умолчанию sqlcmd:
- Выводит ошибки SQL в стандартный поток вывода (stdout).
- Есть ли не возвращать ненулевой код завершения когда запрос завершается неудачей
Это означает, что даже если SQL-запрос выдаст ошибку, команда всё равно может выглядеть как успешная с точки зрения скрипта.
Решение #
Для обеспечения надлежащей обработки ошибок SQL-запросов и их возврата в виде сбоев команд, включите следующее: -b Параметр в sqlcmd команда.
Обновленная команда:
/usr/local/relianoid/app/libexec/sqlcmd -b -С -U -П -Q "select count(*) from TABLE_0;"
Как это работает #
-b опция изменяет sqlcmd поведение следующим образом:
- Причины
sqlcmdв завершить работу с ненулевым кодом состояния если возникает ошибка - Отправляет сообщения об ошибках в стандартная ошибка (stderr) вместо стандартного вывода
- Обеспечивает корректное обнаружение ошибок в скриптах и инструментах автоматизации.
Почему это важно #
Без -b флаг:
- Системы мониторинга могут не обнаруживать неудачные запросы.
- Скрипты автоматизации могут продолжать выполнение, несмотря на ошибки.
- Устранение неполадок становится сложнее из-за вводящих в заблуждение состояний успешного выполнения.
Добавлением -b, вы гарантируете:
- Точная обработка ошибок
- Надежное поведение скриптов
- Надлежащая интеграция с системами мониторинга и оповещения.
Дополнительные примечания #
- Такое поведение характерно именно для этого.
sqlcmdинструмент из mssql-tools пакет - Существующие скрипты следует проверить и соответствующим образом обновить.
- Никаких изменений на стороне SQL Server не требуется.
Резюме #
Изменение в sqlcmd Такое поведение может препятствовать корректному отображению ошибок SQL. Добавление -b Этот параметр гарантирует корректное распространение ошибок запросов через коды завершения и вывод ошибок, обеспечивая надежную автоматизацию и мониторинг.