Updates 1499 Published by

Cursor Type and Column Updatability May Change with Some Sort Orders

Microsoft has released a new fix for MS SQL Server 7.0



SYMPTOMS
A cursor declared as DYNAMIC is actually open as KEYSET/OPTIMISTIC.

An ODBC application may receive the following error message when SQL Server updates a result set:

...runtime error 40038, can't assign value to non-updatable field

A call to the SQLColAttribute SQL_DESC_UPDATABLE property made on the column present in the ORDER BY clause returns SQL_ATTR_READWRITE_UNKNOWN (#define SQL_ATTR_READWRITE_UNKNOWN 2). Any subsequent update attempt on the result set column returns the error message mentioned earlier.

The error message occurs if all of the following conditions are true:
SQL Server is installed with a case and accent insensitive sort order (for instance, sort order 44 and sort order 54) or with a Cyrillic case-insensitive sort order (sort order 106).

A post Microsoft SQL Server 7.0 Service Pack 3 (SP3), Sqlservr.exe, hotfix with a product version between 7.00.979 and 7.00.1019 is installed.

The SELECT statement involved is of type SELECT ORDER BY.

The column involved in the ORDER BY clause is a char or a varchar data type.
Read more