FIX: Use of a Dynamic API Server Cursor with a NOLOCK Hint Causes Error 1047 (310935)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions) 8.0

This article was previously published under Q310935
BUG #: 355759 (SHILOH_BUGS)

SYMPTOMS

If you open a Dynamic API server cursor with a NOLOCK optimizer hint, this error message occurs:
Server: Msg 1047, Level 15, State 1, Line 1
Conflicting locking hints specified.

RESOLUTION

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

Hotfix

NOTE: The following hotfix was created prior to Microsoft SQL Server 2000 Service Pack 2.

The English version of this fix should have the following file attributes or later:
   Date         Time       Version    Size      File name
   ----------------------------------------------------------
   10/21/2001   11:45 pm   8.00.459   7237 KB   Sqlservr.exe  
				
NOTE: Due to file dependencies, the most recent hotfix or feature that contains the preceding files may also contain additional files.


WORKAROUND

To work around the problem, use any one of the following methods:
  • Use a Transact-SQL cursor (Declare Cursor) instead of the API Server cursor to open the cursor.
  • Set the Isolation Level to "Read Uncommitted" instead of using a NOLOCK optimizer hint.
  • Select a Keyset cursor type instead of a Dynamic cursor type.

STATUS

Microsoft has confirmed that this is a problem in Microsoft SQL Server 2000. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 2.

The problem does not occur in Microsoft SQL Server 7.0.

Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbbug kbfix kbSQLServ2000preSP2Fix KB310935