[freetds] Attempt to initiate a new SQL Server operation with results pending

Simon Matthews sam at knowledgepool.com
Wed Oct 19 06:38:17 EDT 2005


James Lowden Wrote:


> Yours is a plausible explanation.  Without seeing the source 
> code and a log of the session, it's hard to say for sure.  
> 
> TDS is half-duplex protocol.  The client libraries maintain 
> state information i.e., they keep track of whether the server 
> is expecting something from the client or vice versa.  
> 
> The error message actually means -- and this is very 
> important -- that the server has not yet indicated it is 
> finished replying.  It might or might not have more data to 
> send, but the client has not yet seen the DONE packet that 
> tells it the server is ready for the next request.  
> 
> With FreeTDS, the client must always check for pending 
> results to every query, even if none are anticipated.  That's 
> how the API is specified, even though some versions of the 
> vendors' libraries tolerate not checking in some circumstances.  
> 
> If the problem is related to cancellation, it's certainly 
> possible that the message could stem from the client not 
> reading "en route" data. After sending the cancel request, 
> the client is obliged to read any rows the server continues 
> to send until the DONE packet arrives (which the client 
> library will represent as NO_MORE_RESULTS or similar).  
> 

I have also seen this in SQL server connections when a stored procedure is
returning result sets when the client is only expecting and handling one.  

HTH 

S



More information about the FreeTDS mailing list