CORRECÇÃO: Modificar uma tabela com em cascata DRI que é envolvida numa vista indexada pode causar erro 8624

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

288174
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Erro n.º: 350912 (SHILOH_bugs)
Sintomas
Quando um utilizador elimina ou actualiza um registo no SQL Server, pode ser aumentado de um erro interno:
Servidor: Erro 8624, nível de 16, estado 1, linha 1
Erro interno do SQL Server.
Mensagem de erro é devolvida ao cliente. Sem informações de erro acesso ou mensagem de violação são escritas os registos de erro do SQL Server. O registo não é eliminado ou actualizado.
Causa
Este erro pode ocorrer apenas quando uma tabela de membro de uma vista indexada é actualizada ou eliminada e não existe uma restrição CASCADE DRI entre a tabela e outras tabelas na vista. Verifique se a tabela é definida com uma eliminação em cascata ou restrição de actualização. Em seguida, verifique se existe uma vista com um índice depende das tabelas.
Resolução
Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack
Como contornar
Para contornar este problema, remova a restrição DRI CASCADE ou o índice na vista.
Ponto Da Situação
A Microsoft confirmou que este é um problema no SQL Server 2000. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.
Mais Informação
Para reproduzir este problema, execute o seguinte script:
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				
Vistas indexadas em cascata de DRI

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 288174 - Última Revisão: 01/16/2015 21:34:22 - Revisão: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB288174 KbMtpt
Esta informação foi útil?