FIX: 인덱스된 뷰 데 Is DRI 모두 있는 표 수정 오류 메시지를 8624 발생한다

기술 자료 번역 기술 자료 번역
기술 자료: 288174 - 이 문서가 적용되는 제품 보기.
# BUG: 350912 (SHILOH_bugs)
모두 확대 | 모두 축소

현상

사용자가 삭제하거나 SQL Server에서 레코드를 업데이트하는 경우 내부 오류가 발생할 수 있습니다.
서버: 메시지 8624, 수준 16, 상태 1, 줄 1
내부 SQL Server 오류입니다.
오류 메시지가 클라이언트에 반환됩니다. 오류 메시지 또는 액세스 위반 정보가 SQL Server 오류 로그에 기록됩니다. 레코드는 업데이트 또는 삭제할지 않습니다.

원인

이 오류는 인덱싱된 뷰의 구성원 테이블이 업데이트되거나 삭제될 테이블과 뷰의 다른 테이블 간의 DRI CASCADE 제약 조건이 있을 때 발생할 수 있습니다. 테이블에 연계 삭제 또는 업데이트 제약 조건을 함께 정의되어 있는지 확인하십시오. 보기 테이블에 종속된 인덱스가 있는지 확인하십시오.

해결 방법

이 문제를 해결하려면 SQL Server 2000의 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211INF: SQL Server 2000의 최신 서비스 팩을 구하는 방법

해결 과정

이 문제를 해결하려면 DRI CASCADE 제약 조건 또는 뷰에 대한 인덱스를 제거하십시오.

현재 상태

Microsoft은 SQL Server 2000에 문제가 있음을 확인했습니다. 이 문제는 SQL Server 2000 서비스 팩 1에서 처음 수정되었습니다.

추가 정보

이 문제를 재현하려면 다음 스크립트를 실행하여:
set ansi_nulls on
set ansi_padding on
set ansi_warnings on
set arithabort on
set concat_null_yields_null on
set quoted_identifier on
set numeric_roundabort off
go

CREATE 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]
GO

CREATE 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]
GO

ALTER TABLE [dbo].[adults] WITH NOCHECK ADD 
	CONSTRAINT [PK_adults] PRIMARY KEY  CLUSTERED 
	(
		[AdultId]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[kids] ADD 
	CONSTRAINT [FK_kids_adults] FOREIGN KEY 
	(
		[AdultId]
	) REFERENCES [dbo].[adults] (
		[AdultId]
	) ON DELETE CASCADE  ON UPDATE CASCADE 
GO



SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

/****** Object:  View dbo.v_AdultsWithKids    Script Date: 1/2/01 4:30:41 AM ******/ 

create view dbo.v_AdultsWithKids
with schemabinding
as

select 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.adultid

GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


set ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS on 
GO

set NUMERIC_ROUNDABORT off 
GO

 CREATE  UNIQUE  CLUSTERED  INDEX [iv_cl_kidid] ON [dbo].[v_AdultsWithKids]([kidid]) ON [PRIMARY]
GO

insert 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')
go

delete from adults where adultid = 2
go

set NUMERIC_ROUNDABORT off set arithabort  OFF 
GO

SET QUOTED_IDENTIFIER OFF 
 
SET ANSI_NULLS ON 
GO
				

속성

기술 자료: 288174 - 마지막 검토: 2003년 11월 6일 목요일 - 수정: 3.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2000 Standard Edition
키워드:?
kbmt kbbug kbfix kbsqlserv2000sp1fix KB288174 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com