[FIX] インデックス付きビューのベーステーブルの変更でエラー 8624

この記事は、以前は次の ID で公開されていました: JP288174
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
SQL Server のレコードを削除または更新すると、次のような内部エラーが発生することがあります。
サーバー : メッセージ 8624、レベル 16、状態 1、行 1
Internal SQL Server error.
クライアントにはエラー メッセージが返されますが、SQL Server のエラー ログにはエラー メッセージやアクセス違反についての情報は書き込まれません。レコードの削除や更新も行われません。
原因
このエラーは、インデックス付きのビューのメンバ テーブルが更新または削除され、そのテーブルと、ビュー内のほかのテーブルの間に DRI CASCADE 制約がある場合にのみ発生します。テーブルが、連鎖削除制約または連鎖更新制約付きで定義されていないか確認してください。その後、そのテーブルに依存しているインデックス付きのビューがないか確認してください。
解決方法
この問題を解決するために、SQL Server 2000 の最新の Service Pack の適用をお願いいたします。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。

http://www.microsoft.com/japan/sql/download/default.asp (日本語版)
http://www.microsoft.com/sql/downloads/default.htm(英語版)
回避策
この問題を回避するには、DRI CASCADE 制約またはビューのインデックスを削除します。
状況
弊社では、これを Microsoft SQL Server version 2000 の問題として確認しています。
この問題は、Microsoft SQL Server version 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
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 288174 (最終更新日 2001-06-13) をもとに作成したものです。

DRI Cascade Indexed views
プロパティ

文書番号:288174 - 最終更新日: 01/16/2015 21:34:19 - リビジョン: 2.1

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive _ik kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB288174
フィードバック