Change in the Handling of ‘SQL_NO_DATA (100)’ in ODBC Responses
As part of aligning with the ODBC 3 specification, some SQL Server ODBC drivers (i.e. v13 onward, including v17/18) now return ‘SQL_NO_DATA (100)’ when an SQL UPDATE or DELETE succeeds but affects no rows. Previously, these cases returned ‘SQL_SUCCESS ( 0)’ which could result in an unintended AbtError.
Reason for change
The ODBC 3.x specification mandates returning ‘SQL_NO_ DATA (100)’ when DML operations affect no rows. SQL Server’s newer ODBC drivers comply with this requirement, and most modern client libraries in Python, C#, Node.js, and Java treat RC = 100 as a successful outcome and do not raise exceptions. The VAST implementation should align with this standard behavior. Aligning with standard behavior avoids unexpected ‘AbtError’ responses when upgrading from older drivers.
Action required
Revise your logic to stop checking whether the result is an AbtError with RC = SQL_NO_DATA. Instead, you can query the row count in the database connection.
As a workaround, you can preserve the old behavior by disabling handling ‘SQL_NO_ DATA (100)’ as success, to do so you can toggle it off by sending AbtOdbcDatabaseManager sqlNoDataFoundAsSuccess: false.
Last modified date: 07/25/2025