Or at least, according to dblib documentation the application is responsible for calling dbnextrow() before calling dbspr1row(). Maybe everyone already knows this. When I link my isql-replacement 'is' against dblib I get twice as many rows using dblib than I do when linked with freetds.