FreeTDS doesn't seem to be returning the general error number any more, but the actual error number.  This means that you get no useful error messages whatsoever.  This change shows the message handler's string instead of the error string, whenever the severity > 0