CORRECTIF : Msg 8624 lors de la modification d'une table avec cascade DRI impliquée dans une vue indexée

Traductions disponibles Traductions disponibles
Numéro d'article: 288174 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F288174
N° DE BOGUE : 350912 (SHILOH_bugs)
Agrandir tout | Réduire tout

Symptômes

Lors de la suppression ou de la mise à jour d'un enregistrement dans SQL Server, une erreur interne peut se produire :
Serveur : Msg 8624, Niveau 16, État 1, Ligne 1
Erreur SQL Server interne.
Un message d'erreur est alors renvoyé au client. Aucun message d'erreur ni violation d'accès n'est enregistré dans les journaux d'erreurs SQL Server. L'enregistrement n'est ni supprimé, ni mis à jour.

Cause

Cette erreur ne peut se produire que lors de la mise à jour ou de la suppression d'une table membre d'une vue indexée, s'il existe une contrainte DRI CASCADE entre cette table et d'autres tables de cette vue. Vérifiez si la table est définie avec une contrainte de suppression ou de mise à jour en cascade. Vérifiez ensuite s'il existe une vue avec un index dépendant des tables.

Résolution

Pour résoudre ce problème, procurez-vous le dernier Service Pack pour SQL Server 2000. Pour plus d'informations, consultez l'article suivant de la Base de connaissances Microsoft :
290211 INF : Procédures pour obtenir le dernier Service Pack pour SQL Server 2000

Contournement

Pour contourner ce problème, supprimez la contrainte DRI CASCADE ou l'index sur la vue.

Statut

Microsoft a confirmé l'existence de ce problème dans SQL Server 2000. Ce problème a été corrigé dans SQL Server 2000 Service Pack 1.

Plus d'informations

Pour reproduire le problème, exécutez le script suivant :
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

/****** Objet:  View dbo.v_AdultsWithKids    Date du script : 2/1/01 4:30:41 ******/ 

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

Propriétés

Numéro d'article: 288174 - Dernière mise à jour: jeudi 6 novembre 2003 - Version: 3.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
Mots-clés : 
_ik kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB288174
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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