Microsoft KB Archive/814665

= FIX: SQL Server Assertion: &quot;nret == FALSE&quot; Occurs When You Insert or Update Table Data in SQL Server 2000 =

Article ID: 814665

Article Last Modified on 11/2/2007

-

APPLIES TO


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

-



BUG #: 356641 ( SHILOH_BUGS )



SYMPTOMS
A SQL Server assertion error might occur when you insert or update a row in a SQL Server database table. When this error occurs, the current connection is terminated, and the SQL Server error log file contains the following assertion error message:

SQL Server Assertion: File: , line=1159

Failed Assertion = 'nret == FALSE'.

Error: 3624, Severity: 20, State: 1



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 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 --

07-Feb-2003 16:14                    786,432 bytes  Distmdl.ldf 07-Feb-2003 16:14                  2,359,296 bytes  Distmdl.mdf 29-Jan-2003 12:25                        180 bytes  Drop_repl_hotfix.sql 31-Jan-2003 11:02  2000.80.763.0   1,557,052 bytes  Dtsui.dll 29-Jan-2003 12:25                      1,402 bytes  Inst_repl_hotfix.sql 07-Feb-2003 17:10  2000.80.765.0      90,692 bytes  Msgprox.dll 29-Jan-2003 11:48  7.0.9466.0        344,064 bytes  Msvcr70.dll 29-Jan-2003 11:48  2000.80.722.0      57,904 bytes  Osql.exe 29-Jan-2003 15:48                    746,470 bytes  Instdist.sql 07-Feb-2003 14:23                  1,065,895 bytes  Replmerg.sql 07-Feb-2003 17:10  2000.80.765.0     221,768 bytes  Replprov.dll 07-Feb-2003 17:10  2000.80.765.0     307,784 bytes  Replrec.dll 29-Jan-2003 15:48                  1,084,318 bytes  Replsys.sql 29-Jan-2003 11:48  2000.80.534.0     127,548 bytes  Sqdedev.dll 29-Jan-2003 11:48  2000.80.194.0     180,290 bytes  Sqlunirl.dll 07-Feb-2003 17:10  2000.80.765.0     176,696 bytes  Sqlmap70.dll 07-Feb-2003 17:10  2000.80.765.0      57,920 bytes  Sqlrepss.dll 07-Feb-2003 17:11  2000.80.765.0   7,528,529 bytes  Sqlservr.exe 07-Feb-2003 17:10  2000.80.765.0      45,644 bytes  Sqlvdi.dll 07-Feb-2003 17:10  2000.80.765.0      82,492 bytes  Ssnetlib.dll

NOTE: Because of file dependencies, the most recent hotfix or feature that contains the files may also contain additional files.



WORKAROUND
To work around this behavior, use the method that applies to your situation:


 * If the problem occurs with the ALTER VIEW or the ALTER PROCEDURE Transact-SQL command, drop the view or the procedure, and then re-create it with the CREATE VIEW or the CREATE PROCEDURE Transact-SQL command.
 * If the problem occurs with another Transact-SQL command (such as the UPDATE or the INSERT command), reorganize the clustered index on the table with a smaller FillFactor to avoid page splits.



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



MORE INFORMATION
This problem can occur with any Transact-SQL command that inserts or updates a row in a table that causes a page split. This problem has been most frequently seen when using the ALTER VIEW or the ALTER PROCEDURE Transact-SQL commands. When you experience the problem with the ALTER VIEW or the ALTER PROCEDURE command, the short stack dump in the SQL Server error log file displays the following:

Module(sqlservr+0046CD4C) (CStackDump::GetContextAndDump+0000002E) Module(sqlservr+0046E778) (stackTrace+0000021D) Module(sqlservr+00523F7F) (utassert_fail+000002E3) Module(sqlservr+003FA077) (DataSplitMgr::InsertDataRow+00000060) Module(sqlservr+0002630F) (datasplit+000000C5) Module(sqlservr+000272AA) (cinsert+00000165) Module(sqlservr+000175DC) (rowinsert+00000101) Module(sqlservr+0001B77F) (insert+00000013) Module(sqlservr+0012BAC0) (CSysScan::FInsertRow+0000009A) Module(sqlservr+001A9E3B) (CCommentScan::FInsertRow+00000160) Module(sqlservr+001A0B81) (FFillSQL+000001EB) Module(sqlservr+0019FD83) (CProchdr::CreateProc+0000177D) Module(sqlservr+001E6C0A) (CSQLSource::Execute+000003C0) Module(sqlservr+0013C498) (language_exec+000003E1) Module(sqlservr+00011099) (process_commands+000000EC) Module(UMS+00003379) (ProcessWorkRequests+0000024A) Module(UMS+00003071) (ThreadStartRoutine+000000BD) Module(MSVCRT+0000C9EB) (beginthread+000000CE)

