Microsoft KB Archive/302477

= FIX: Cursor Created on Linked Server That Requests Meta-Data May Cause Handled Access Violation =

Article ID: 302477

Article Last Modified on 10/9/2003

-

APPLIES TO


 * Microsoft SQL Server 2000 Standard Edition

-



This article was previously published under Q302477



BUG #: 354284 (SHILOH_BUGS)

BUG #: 354764 (SHILOH_BUGS)



SYMPTOMS
If a cursor is created on a system stored procedure that returns schema information from a remote server, a handled access violation may occur in the XdesRMReadOnly::Init function causing only that client's connection to SQL Server to be terminated.



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:   File name    Platform ---  s80303i.exe  x86 - SQL Server 2000 original release fix s80426i.exe x86 - SQL Server Service Pack 1 fix NOTE: Due to file dependencies, the most recent hotfix or feature that contains the above files may also contain additional files.



WORKAROUND
Do not attempt to create cursors on the system stored procedures listed in the &quot;More Information&quot; section.



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



MORE INFORMATION
This problem can occur when the cursor is created on the following system stored procedures:
 * sp_table_privileges_ex
 * sp_column_privileges_ex
 * sp_tables_ex
 * sp_columns_ex
 * sp_primarykeys
 * sp_foreignkeys
 * sp_indexes
 * sp_catalogs

With the hotfix applied, SQL Server now returns the following error messages:

Server: Msg 16955, Level 16, State 2, Line 0

Could not create an acceptable cursor.

Server: Msg 16945, Level 16, State 1, Procedure sp_cursoropen, Line 57

The cursor was not declared.

Here are the first 13 functions from the short stack dump reported in the SQL Server error log file from the original released version of SQL Server 2000 (8.00.194): 004084FC Module(sqlservr+000084FC) (XdesRMReadOnly::Init(class DBTABLE *,class LockSpaceId,class XactDesc const *)+00000027) 004082C9 Module(sqlservr+000082C9) (ReadOnlyXactImp::GetXdes(class DBTABLE *)+00000137) 00405378 Module(sqlservr+00005378) (AutoSimpleXact::GetXdes(class DBTABLE *)+0000000C) 00405398 Module(sqlservr+00005398) (AutoSystemXact::GetXdes(unsigned short)+0000001C) 004204D9 Module(sqlservr+000204D9) (CSysScan::OpenScan(unsigned short,long,class XDES *,enum ESysScanMode)+00000150) 00420982 Module(sqlservr+00020982) (CSysScan::StartScan(unsigned short,long,short,int,class XDES *,enum ESysScanMode,int)+000000A3) 0045A2F8 Module(sqlservr+0005A2F8) (CColumnScan::FStartScan(struct OBJID const &,class XDES *,enum ESysScanMode)+000000F5) 005B1F87 Module(sqlservr+001B1F87) (CMetaBaseTable::Init(class IMemObj *,class CAlgTable *,unsigned long,unsigned short,int,class CMetaBaseTable const *,class CBrowseMode *,unsigned long)+0000028A) 005B454B Module(sqlservr+001B454B) (CMetaSelect::SetUpTables(class CAlgStmt *,unsigned short *,unsigned short *,int,class CBrowseMode *)+000001C0) 005C3798 Module(sqlservr+001C3798) (CMetaCursor::SetUpTables(class CAlgStmt *,unsigned short *,unsigned short *,int,class CBrowseMode *)+0000001A) 005B40FE Module(sqlservr+001B40FE) (CMetaSelect::Init(class CAlgStmt *,int,class CBrowseMode *)+0000029C) 005C32AB Module(sqlservr+001C32AB) (CMetaCursor::Init(class CAlgStmt *,enum CRS::ScrollOption)+00000446) 005B75CF Module(sqlservr+001B75CF) (CCursorDeclareStmt::Init(class CAlgStmt *,class CCompPlan *)+00000158)

Keywords: kbbug kbfix kbsqlserv2000presp2fix KB302477

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.