Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur 2601 sur un index non unique

6 réponses
Avatar
Philip
Bonjour,
Notre système tourne sous sql2008, or il nous arrive pendant certains batchs
d'avoir l'erreur suivante :
Exécuté en tant qu'utilisateur : AUTORITE NT\SYSTEM. Impossible d'insérer
une ligne de clé en double dans l'objet 'dbo.composants_besoins' avec un
index unique 'IX_composants_besoins_2'. [SQLSTATE 23000] (erreur 2601)
L'instruction a été arrêtée. [SQLSTATE 01000] (erreur 3621). L'étape a
échoué.
or il s'avère que cet index n'est pas décaré comme unique, mais autorise les
doublons. Si on relance celui-ci aucun problème le batch se déroule
parfaitement.
Quelqu'un a-t'il une idée du problème ?
Cordialement

6 réponses

Avatar
mikedavem
Bonjour,

Pouvez nous nous poster le script de création de l'index ?
On y verra peut être un peu plus clair

++

--
MCDBA | MCTIP SQLSRV 2005


"Philip" wrote:

Bonjour,
Notre système tourne sous sql2008, or il nous arrive pendant certains batchs
d'avoir l'erreur suivante :
Exécuté en tant qu'utilisateur : AUTORITE NTSYSTEM. Impossible d'insérer
une ligne de clé en double dans l'objet 'dbo.composants_besoins' avec un
index unique 'IX_composants_besoins_2'. [SQLSTATE 23000] (erreur 2601)
L'instruction a été arrêtée. [SQLSTATE 01000] (erreur 3621). L'étape a
échoué.
or il s'avère que cet index n'est pas décaré comme unique, mais autorise les
doublons. Si on relance celui-ci aucun problème le batch se déroule
parfaitement.
Quelqu'un a-t'il une idée du problème ?
Cordialement


Avatar
Philip
Bonjour et merci de la réponse, voici le script :
USE [pegase]
GO

/****** Object: Index [IX_composants_besoins_7] Script Date: 07/28/2009
09:03:19 ******/
CREATE NONCLUSTERED INDEX [IX_composants_besoins_7] ON
[dbo].[composants_besoins]
(
[site] ASC,
[date_commande] ASC,
[code_interne] ASC,
[besoin_type] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB =
OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
GO
Avatar
mikedavem
Bonjour phillipe,

Le script de création que vous donnez concerne l'index nommé
'IX_composants_besoins_7'. Hors d'après le message d'erreur que vous donné,
c'est l'index 'IX_composants_besoins_2'

Vérifiez l'index 'IX_composants_besoins_2'.

++

--
MCDBA | MCITP SQLSRV 2005


"Philip" wrote:

Bonjour,
Notre système tourne sous sql2008, or il nous arrive pendant certains batchs
d'avoir l'erreur suivante :
Exécuté en tant qu'utilisateur : AUTORITE NTSYSTEM. Impossible d'insérer
une ligne de clé en double dans l'objet 'dbo.composants_besoins' avec un
index unique 'IX_composants_besoins_2'. [SQLSTATE 23000] (erreur 2601)
L'instruction a été arrêtée. [SQLSTATE 01000] (erreur 3621). L'étape a
échoué.
or il s'avère que cet index n'est pas décaré comme unique, mais autorise les
doublons. Si on relance celui-ci aucun problème le batch se déroule
parfaitement.
Quelqu'un a-t'il une idée du problème ?
Cordialement


Avatar
Philip
Voici le script, mais à priori cet incident peut intervenir sur l'un des 7
index Non unique de cette table (le premier étant lui unique) !

USE [pegase]
GO

/****** Object: Index [IX_composants_besoins_2] Script Date: 07/28/2009
10:09:08 ******/
CREATE NONCLUSTERED INDEX [IX_composants_besoins_2] ON
[dbo].[composants_besoins]
(
[site] ASC,
[besoin_type] ASC,
[code_interne] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB =
OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
GO

Merci encore,
Philip
Avatar
mikedavem
Bizarre,

Pouvez vous cette fois poster le script de votre table ?

++

--
MCDBA | MCTIP SQLSRV 2005


"Philip" wrote:

Voici le script, mais à priori cet incident peut intervenir sur l'un des 7
index Non unique de cette table (le premier étant lui unique) !

USE [pegase]
GO

/****** Object: Index [IX_composants_besoins_2] Script Date: 07/28/2009
10:09:08 ******/
CREATE NONCLUSTERED INDEX [IX_composants_besoins_2] ON
[dbo].[composants_besoins]
(
[site] ASC,
[besoin_type] ASC,
[code_interne] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB =
OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
GO

Merci encore,
Philip



Avatar
Philip
Bonjour,
voici le script de la table :

USE [pegase]
GO

/****** Object: Table [dbo].[composants_besoins] Script Date: 07/30/2009
13:57:27 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[composants_besoins](
[site] [smallint] NOT NULL,
[code_interne] [varchar](64) NOT NULL,
[fournisseur] [varchar](16) NOT NULL,
[besoin_type] [char](6) NOT NULL,
[semaine] [smallint] NOT NULL,
[numero] [int] NOT NULL,
[credit] [decimal](15, 4) NOT NULL,
[debit] [decimal](15, 4) NOT NULL,
[date_besoin] [datetime] NOT NULL,
[date_commande] [datetime] NOT NULL,
[ligne_oa] [int] NOT NULL,
[Ressource] [varchar](64) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_site] DEFAULT (1) FOR [site]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_code_interne] DEFAULT ('-') FOR [code_interne]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_fournisseur] DEFAULT ('-') FOR [fournisseur]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_besoin_type] DEFAULT ('PDP') FOR [besoin_type]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_semaine] DEFAULT (99) FOR [semaine]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_numero] DEFAULT (0) FOR [numero]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_besoin] DEFAULT (0) FOR [credit]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_consomme] DEFAULT (0) FOR [debit]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_date_besoin] DEFAULT (getdate()) FOR [date_besoin]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_date_commande] DEFAULT (getdate()) FOR [date_commande]
GO

ALTER TABLE [dbo].[composants_besoins] ADD CONSTRAINT
[DF_composants_besoins_ligne_oa] DEFAULT (0) FOR [ligne_oa]
GO

Le plus étrange, j'ai scinder la proc qui posait le problème en deux, et là,
depuis trois jours plus d'erreurs !

Salutations
Philip