---
title: sqlcmd behavior change affecting query error handling
description: "## Overview After recent updates to the **mssql-tools** package, users may experience unexpected behavior when executing queries with `sqlcmd`. A typical command example: ``` /usr/local/relianoid/app/libexec/sqlcmd -S -U -P -Q \"select count(*) from TABLE_0;\" ``` In some cases, query errors are…"
url: "https://www.relianoid.com/resources/knowledge-base/troubleshooting/sqlcmd-behavior-change-affecting-query-error-handling/"
updated: "2026-05-05"
category: Troubleshooting
---

# sqlcmd behavior change affecting query error handling

## Overview

After recent updates to the **mssql-tools** package, users may experience unexpected behavior when executing queries with `sqlcmd`. A typical command example:

```
/usr/local/relianoid/app/libexec/sqlcmd -S <SERVER IP ADDRESS> -U <DB USER> -P <DB PASSWORD> -Q "select count(*) from TABLE_0;"
```

In some cases, query errors are not properly returned as command failures, which can impact scripts, automation, or monitoring processes (such as farmguardian health checks) relying on exit codes.

## Cause

This issue is due to a **behavior change in the `sqlcmd` utility**, included in the **mssql-tools** package.

By default, `sqlcmd`:

- Outputs SQL errors to standard output (stdout)
- Does **not return a non-zero exit code** when a query fails

This means that even if the SQL query encounters an error, the command may still appear as successful from a scripting perspective.

## Solution

To ensure that SQL query errors are properly handled and returned as command failures, include the `-b` parameter in the `sqlcmd` command.

Updated command:

```
/usr/local/relianoid/app/libexec/sqlcmd -b -S <SERVER IP ADDRESS> -U <DB USER> -P <DB PASSWORD> -Q "select count(*) from TABLE_0;"
```

## How It Works

The `-b` option modifies `sqlcmd` behavior as follows:

- Causes `sqlcmd` to **exit with a non-zero status code** if an error occurs
- Sends error messages to **standard error (stderr)** instead of standard output
- Enables proper error detection in scripts and automation tools

## Why This Matters

Without the `-b` flag:

- Monitoring systems may not detect failed queries
- Automation scripts may continue execution despite errors
- Troubleshooting becomes more difficult due to misleading success states

By adding `-b`, you ensure:

- Accurate error handling
- Reliable scripting behavior
- Proper integration with system monitoring and alerting

## Additional Notes

- This behavior is specific to the `sqlcmd` tool from the **mssql-tools** package
- Existing scripts should be reviewed and updated accordingly
- No changes are required on the SQL Server side

## Summary

A change in `sqlcmd` behavior may prevent SQL errors from being properly reported. Adding the `-b` parameter ensures that query failures are correctly propagated via exit codes and error output, maintaining reliable automation and monitoring.

### 📄 Download this document in PDF format
