FIX: A DELETE statement with a JOIN might fail and you receive a 625 error

This article has been replaced by the following Microsoft Knowledge Base article:
836096 FIX: You may receive a 625 error message when you run a query that has a query plan that uses a nested loop join strategy
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 364074 (SQL Server 8.0)
A DELETE statement that includes a JOIN might fail, and you receive the following error message:
Error: 625, Severity: 20, State: 3
Cannot retrieve row from page (4:2268) by RID because the slotid (681803120) is not valid..
However, a DBCC CHECKDB reports no errors, and the Event Log shows no related hardware errors.

This problem can occur when all the following conditions are met:
  • A nested loops operator is included in the query plan.
  • The inner table of the nested loops operator is a target table of the DELETE statement.
  • The nested loops operator performs a many-to-many join or a one-to-many join.
  • The input to the nested loops operator contains duplicate values.
  • The Table Spool operator is placed above the nested loops operator.
  • The Bookmark Lookup operator is placed above the Table Spool operator.
The Table Spool operation mentioned earlier in this article can be the other Halloween protection operator.

The repro in the bug is only for DELETE statement, we do not have the repro for the UPDATE statement. However, the UPDATE statement probably causes the same error.
To work around this error, you can specify one of the following:

Service pack information

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 How to obtain the latest SQL Server 2000 service pack

Hotfix information

The English version of this hotfix has the file attributes (or later file attributes) 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     Description   ---------------------------------------------------------------------------------   20-Feb-2003  20:58   2000.80.735.0  7,462,993 bytes   Sqlservr.exe  SP2-based fix   15-Feb-2003  02:52   2000.80.769.0  7,512,145 bytes   Sqlservr.exe  SP3-based fix				
Note: Because of file dependencies, the most recent hotfix or feature that contains the files may also contain additional files.

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.This problem was first corrected in Microsoft SQL Server 2000 Service Pack 4.

Article ID: 814889 - Last Review: 02/27/2014 21:17:21 - Revision: 5.3

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000, Workgroup Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbnosurvey kbarchive kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB814889
ERROR: at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)