Microsoft KB Archive/330307

= FIX: Cross Database Query Fails with Error 3624 and an Assertion Occurs in the Dbtable.cpp File =

Article ID: 330307

Article Last Modified on 9/5/2007

-

APPLIES TO


 * Microsoft SQL Server 2000 Standard Edition

-



This article was previously published under Q330307



BUG #: 362593 (Shiloh_bugs)



SYMPTOMS
If you run a cross-database query, a retail assertion may occur and the statement may not run. If you run a cross-database query in SQL Query Analyzer, the query fails, and you may receive the following error message:

Server: Msg 3624, Level 20, State 1, Line 1

Location: dbtable.cpp:2608

Expression: status

SPID: 51

Process ID: 2068

Connection Broken

You may see the following short stack in the SQL Server error log:

* Short Stack Dump 2002-10-17 11:23:26.49 spid51   SQL Server Assertion: File: , line=2608 Failed Assertion = 'status'. When SQL Server tries to clean up the connection that caused the original assertion, the error is followed by various exceptions and symptom dumps.
 * 0085CF85 Module(sqlservr+0045CF85) (CStackDump::GetContextAndDump+0000002E Line 1855+00000000)
 * 0085EB58 Module(sqlservr+0045EB58) (stackTrace+00000216 Line 4139+00000000)
 * 00919D41 Module(sqlservr+00519D41) (utassert_fail+000002E3 Line 452+00000010)
 * 007F0D41 Module(sqlservr+003F0D41) (DBLockCache::ReleaseDBLock+000000C6 Line 2608+0000001B)
 * 007F0ED9 Module(sqlservr+003F0ED9) (unlockdb+00000024 Line 2781+00000000)
 * 0084C2CA Module(sqlservr+0044C2CA) (XdesRMReadOnly::~XdesRMReadOnly+00000075 Line 8233+0000000A)
 * 0083F0C5 Module(sqlservr+0043F0C5) (ReadOnlyXactImp::Rollback+0000009B Line 853+0000000C)
 * 0083EF94 Module(sqlservr+0043EF94) (ReadOnlyXactImp::Commit+00000030 Line 778+00000007)
 * 004D3E68 Module(sqlservr+000D3E68) (CMsqlReadOnlyXact::Commit+0000000F Line 2719+00000000)
 * 004D2C2B Module(sqlservr+000D2C2B) (CMsqlXact::Commit+0000009E Line 670+00000000)
 * 004D3B16 Module(sqlservr+000D3B16) (CAutoMsqlXact::CommitNestedXact+00000062 Line 2154+00000000)
 * 0048AACA Module(sqlservr+0008AACA) (CProchdr::FCompile+000011B6 Line 1300+00000000)
 * 004A3C73 Module(sqlservr+000A3C73) (CSQLSource::FTransform+0000034C Line 885+00000012)
 * 004A4AE8 Module(sqlservr+000A4AE8) (CSQLStrings::FTransform+000001A1 Line 1644+0000000A)
 * 004A41D9 Module(sqlservr+000A41D9) (CSQLSource::Execute+0000015B Line 1136+0000000B)
 * 0053A208 Module(sqlservr+0013A208) (language_exec+000003E1 Line 690+00000000)
 * 0053B0B1 Module(sqlservr+0013B0B1) (process_commands+000000EC Line 1711+00000006)
 * 41073379 Module(ums+00003379) (ProcessWorkRequests+0000024A)
 * 41073071 Module(ums+00003071) (ThreadStartRoutine+000000BD)
 * 7800C9EB Module(MSVCRT+0000C9EB) (beginthread+000000CE)
 * 77E887DD Module(KERNEL32+000087DD) (GetModuleFileNameA+000001D1)



CAUSE
To improve performance and avoid excessive locking operations, SQL Server 2000 caches database locks for each connection. The cache size for storing database locks is fixed. If a cross-database query holds several database locks, the additional database locks are not cached. However, in some cases, when the cache is available, the database locks that are not cached in the first place can be put back in the cache again. That is what causes the retail assertion to occur.



RESOLUTION
Note The following hotfix was created before the release of Microsoft SQL Server 2000 Service Pack 3.

To resolve this problem, obtain the latest service pack for 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

A supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Microsoft SQL Server 2000 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:

http://support.microsoft.com/contactus/?ws=support

NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.   Date         Time   Version        Size             File name 08-Oct-2002 10:14  2000.80.690.0  7,467,089 bytes  Sqlservr.exe Note Because of file dependencies, the most recent hotfix or feature that contains these files may also contain additional files.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was first corrected in SQL Server 2000 Service Pack 3.

