FIX: 修改使用 DRI 层叠参与索引视图的表可能导致消息 8624

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 288174
本文已归档。它按“原样”提供,并且不再更新。
BUG #: 350912 (SHILOH_bugs)
症状
当用户删除或更新的记录中 SQL Server 时,可能会引发一个内部错误:
服务器: 消息 8624,级别 16,1,状态行 1
SQL Server 时出现内部错误。
向客户端返回一条错误消息。没有错误消息或访问冲突信息写入 SQL Server 错误日志。记录不被删除或更新。
原因
当索引视图的一个成员表被更新或删除,并且没有表和视图中的其他表之间的某个 DRI CASCADE 约束时,可以仅发生此错误。请检查该表是否定义了级联删除或更新约束。然后检查有与依赖于表的索引视图。
解决方案
若要解决此问题,获得最新的 service pack,对于 SQL Server 2000。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290211INF: 如何获取最新的 SQL Server 2000 Service Pack
替代方法
要变通解决此问题,删除 DRI CASCADE 约束或索引视图上。
状态
Microsoft 已经确认这是 SQL Server 2000 中的问题。此问题 SQL Server 2000 Service Pack 1 中第一次已得到纠正。
更多信息
若要重现此问题,运行以下脚本:
set ansi_nulls onset ansi_padding onset ansi_warnings onset arithabort onset concat_null_yields_null onset quoted_identifier onset numeric_roundabort offgoCREATE TABLE [dbo].[adults] (	[AdultId] [int] NOT NULL ,	[FName] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,	[LName] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[kids] (	[AdultId] [int] NOT NULL ,	[KidId] [int] NOT NULL ,	[FName] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,	[LName] [varchar] (25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY]GOALTER TABLE [dbo].[adults] WITH NOCHECK ADD 	CONSTRAINT [PK_adults] PRIMARY KEY  CLUSTERED 	(		[AdultId]	)  ON [PRIMARY] GOALTER TABLE [dbo].[kids] ADD 	CONSTRAINT [FK_kids_adults] FOREIGN KEY 	(		[AdultId]	) REFERENCES [dbo].[adults] (		[AdultId]	) ON DELETE CASCADE  ON UPDATE CASCADE GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO/****** Object:  View dbo.v_AdultsWithKids    Script Date: 1/2/01 4:30:41 AM ******/ create view dbo.v_AdultsWithKidswith schemabindingasselect a.adultid, a.fname as 'Adult First Name', a.lname as 'Adult Last Name', k.kidid, k.fname as 'Kid First Name', k.lname as 'Kid Last Name'from dbo.adults a inner join dbo.kids k on a.adultid = k.adultidGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOset ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS on GOset NUMERIC_ROUNDABORT off GO CREATE  UNIQUE  CLUSTERED  INDEX [iv_cl_kidid] ON [dbo].[v_AdultsWithKids]([kidid]) ON [PRIMARY]GOinsert into adults values (1, 'Bob', 'Johnson')insert into kids values (1, 1, 'Joe', 'Johnson')insert into kids values (1, 2, 'Jack', 'Johnson')insert into kids values (1, 3, 'June', 'Johnson')insert into adults values (2, 'Mary', 'Thomas')insert into kids values (2, 4, 'John', 'Thomas')insert into adults values (3, 'Susan', 'Sist')godelete from adults where adultid = 2goset NUMERIC_ROUNDABORT off set arithabort  OFF GOSET QUOTED_IDENTIFIER OFF  SET ANSI_NULLS ON GO				
DRI 层叠索引视图

属性

文章 ID:288174 - 上次审阅时间:01/16/2015 21:34:27 - 修订版本: 3.2

Microsoft SQL Server 2000 标准版

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB288174 KbMtzh
反馈