Microsoft KB Archive/814893

= FIX: Error Message: &quot;Insufficient key column information for updating&quot; Occurs in SQL Server 2000 SP3 =

Article ID: 814893

Article Last Modified on 2/21/2007

-

APPLIES TO


 * Microsoft SQL Server 2000 Service Pack 3

-



CPR - SQL 2000 - Hotfix in SP4



BUG #: 364087 (SHILOH_BUGS)



SYMPTOMS
After you apply one of the following  The hotfix described in

321541 FIX: SQL Server Might Return Incorrect Results When You Use an Outer Join and a View

on a computer that is running Microsoft SQL Server 2000 Service Pack 2 (SP2). The security hotfix described in Microsoft Security Bulletin MS02-061 for Microsoft SQL Server 2000 SP2. Microsoft SQL Server 2000 Service Pack 3 (SP3).

you might receive the following error message:

Insufficient key column information for updating or refreshing.



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 --  08-Feb-2003  05:43                    786,432 bytes  Distmdl.ldf 08-Feb-2003 05:43                  2,359,296 bytes  Distmdl.mdf 01-Feb-2003 00:32  2000.80.763.0   1,557,052 bytes  Dtsui.dll 30-Jan-2003 05:18                    746,470 bytes  Instdist.sql 08-Feb-2003 06:40  2000.80.765.0      90,692 bytes  Msgprox.dll 08-Feb-2003 03:53                  1,065,895 bytes  Replmerg.sql 08-Feb-2003 06:40  2000.80.765.0     221,768 bytes  Replprov.dll 08-Feb-2003 06:40  2000.80.765.0     307,784 bytes  Replrec.dll 30-Jan-2003 05:18                  1,084,318 bytes  Replsys.sql 08-Feb-2003 06:40  2000.80.765.0     176,696 bytes  Sqlmap70.dll 08-Feb-2003 06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll 15-Feb-2003 02:52  2000.80.769.0   7,512,145 bytes  Sqlservr.exe 15-Feb-2003 02:52                 12,715,008 bytes  Sqlservr.pdb 08-Feb-2003 06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll 08-Feb-2003 06:40  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.



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
The hotfix discussed in this article regresses the fix that is discussed in the following Microsoft Knowledge Base article:

321541 FIX: SQL Server Might Return Incorrect Results When You Use an Outer Join and a View

Note To make the hotfix discussed in this article operational, you must enable trace flag -T220, and restart SQL Server.

To enable the trace flag, follow these steps:
 * 1) Open SQL Enterprise Manager on the server.
 * 2) Click to select the server that is experiencing the problem.
 * 3) Right-click the server, and then click Properties.
 * 4) On the General tab, click Startup Parameters.
 * 5) In the Startup Parameters dialog box, type -T220, and then click Add.
 * 6) Click OK.
 * 7) Stop, and then restart the Mssqlserver service to restart SQL Server.

An example of the problem and what the trace flag -T220 does follows.

The example uses two sample tables named Test_Table1 and Test_Table2. Consider the following tables and view:

CREATE TABLE TEST_TABLE1 ( [CODE] [int] NOT NULL PRIMARY KEY, [DESCRIPTION] [varchar] (50))

CREATE TABLE TEST_TABLE2 ( [CODE] [int] NOT NULL PRIMARY KEY, [DESCRIPTION] [varchar] (50)) go CREATE VIEW dbo.TEST_VIEW AS SELECT CODE, UPPER(DESCRIPTION) AS DESCRIPTION, ISNULL(UPPER(DESCRIPTION), 'DEFAULT') DESCRIPTION_DEF FROM dbo.TEST_TABLE2 go Now, run this code:

DECLARE cc CURSOR FOR SELECT TEST_TABLE1.CODE, TEST_VIEW.DESCRIPTION, TEST_VIEW.DESCRIPTION_DEF FROM TEST_TABLE1 LEFT OUTER JOIN TEST_VIEW ON TEST_VIEW.CODE = TEST_TABLE1.CODE FOR UPDATE
 * For SQL Server 2000 versions before SQL Server 2000 SP2, with the security hotfix discussed in Microsoft Security Bulletin MS02-061 installed, the code runs successfully.
 * For all SQL Server 2000 versions after SQL Server 2000 SP2, with the security hotfix discussed in Microsoft Security Bulletin MS02-061 installed, the code does not run successfully.
 * For SQL Server 2000 versions 8.00.0769 and later, when you use trace flag -T220 or DBCC traceon (220), the code runs successfully.

Also note that the SELECT statement does not give the same result.   For SQL Server 2000 versions before SQL Server 2000 SP2, with the security hotfix discussed in Microsoft Security Bulletin MS02-061 installed, or post 8.00.0769 with trace flag 220, the result is similar to:

<pre class="fixed_text">CODE       DESCRIPTION                                        DESCRIPTION_DEF --- -- -- 1          NULL                                               DEFAULT </li>  For SQL Server 2000 versions after SQL Server 2000 SP2, with the security hotfix discussed in Microsoft Security Bulletin MS02-061installed, the result is similar to:

<pre class="fixed_text">CODE       DESCRIPTION                                        DESCRIPTION_DEF --- -- -- 1          NULL                                               NULL </li></ul>

Keywords: kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB814893

-

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

© Microsoft Corporation. All rights reserved.