FIX: sqlcursorfetch AVs on Select w/ "Order By," No Join (153920)



The information in this article applies to:

  • Microsoft SQL Server 6.5

This article was previously published under Q153920

SYMPTOMS

The use of the FETCH operation on a cursor to select from multiple tables, including sysobjects table, with no join and using an "order by" clause causes a handled access violation (AV).

RESOLUTION

In most application environments, this is not a problem since the system table sysobjects is not involved in user queries. In cases where sysobjects is involved, avoid using extraneous tables in select statements, especially those involving cursor operations. It is generally a sound programming practice to include in select statements only the tables actually involved in the statement.

STATUS

Microsoft has confirmed this to be a problem in Microsoft SQL Server version 6.5. This problem was first corrected in Microsoft SQL Server version 6.5 Service Pack 1.

MORE INFORMATION

The AV happens during the FETCH operation.

The following conditions have to be true for the AV to occur:
  1. The column list selected should include at least 1 column from sysobjects
  2. The table "sysobjects" should be included in the FROM clause. The other tables in the from clause can be system tables or user tables.
  3. The query should involve an "order by" clause.
  4. No join should be done. The where clause seems to be immaterial, and the AV occurs whether or not a where clause is involved.


Modification Type:MinorLast Reviewed:2/14/2005
Keywords:kbBug kbfix KB153920