IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Violation of Primary Key sans données


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut Violation of Primary Key sans données
    Bonjour,

    J'utilise un serveur SQL 2000. Et voilà je tente de mettre mes données à jour sur mon serveur de DEV alors j'essaie cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into repDevinSKU
    select * from [serveurExterne].database.dbo.repDevinSKU
    where annee = 2010
    Et j'ai cette erreur :

    Msg 2627, Level 14, State 1, Line 1
    Violation of PRIMARY KEY constraint 'PK_repDevinSKU'. Cannot insert duplicate key in object repDevinSKU.
    The statement has been terminated.
    Or, je n'ai aucune données pour l'année 2010 dans ma table "repDevinSKU" !

    Je ne comprend pas ce qui bloque... vous avez une idée ?

    Merci
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Bonjour,

    Votre clef primaire pointe surement sur une autre colonne que la colonne année.
    Celle-ci devant être unique, SQL Server vous retourne une erreur.

    Bonne journée

  3. #3
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Non non, la clé est bel et bien sur ce champ (entres autres), j'ai vérifié, re-vérifié, re-re-re-vérifié...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC sp_pkeys @table_name='repDevinSKU'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TABLE_QUALIFIER	TABLE_OWNER	TABLE_NAME	COLUMN_NAME	KEY_SEQ	PK_NAME
    LassondeTraiteur	dbo	RepDevinSKU	annee	1	PK_RepDevinSKU
    LassondeTraiteur	dbo	RepDevinSKU	semaine	2	PK_RepDevinSKU
    LassondeTraiteur	dbo	RepDevinSKU	noclientdevin	3	PK_RepDevinSKU
    LassondeTraiteur	dbo	RepDevinSKU	noproduit	4	PK_RepDevinSKU
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous avez peut-être un doublon dans votre source !

    Faites ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT annee, semaine, noclientdevin, noproduit, count(*)
        FROM [serveurExterne].DATABASE.dbo.repDevinSKU
       WHERE annee = 2010
    GROUP BY annee, semaine, noclientdevin, noproduit
      HAVING count(*) > 1;

  5. #5
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez peut-être un doublon dans votre source !

    Faites ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT annee, semaine, noclientdevin, noproduit, count(*)
        FROM [serveurExterne].DATABASE.dbo.repDevinSKU
       WHERE annee = 2010
    GROUP BY annee, semaine, noclientdevin, noproduit
      HAVING count(*) > 1;
    Même pas...

    (0 row(s) affected)
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourrait-on avoir un script complet des tables repDevinSKU sur le serveur distant et le serveur de dev ?

    Et ça, ça ne ramène vraiment rien ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SELECT annee, semaine, noclientdevin, noproduit, count(*)
        FROM repDevinSKU
       WHERE annee = 2010
    GROUP BY annee, semaine, noclientdevin, noproduit

  7. #7
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Mince ! En regardant les scripts, je pense que j'ai trouvé !!!

    J'essaie quelque chose et je reviens dans moins de 2.

    Voilà les scripts....

    Serveur de dev

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    USE [LassondeTraiteur]
    GO
     
    /****** Object:  Table [dbo].[RepDevinSKU]    Script Date: 01/26/2010 13:27:13 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    SET ANSI_PADDING ON
    GO
     
    CREATE TABLE [dbo].[RepDevinSKU](
    	[semaine] [int] NOT NULL,
    	[annee] [int] NOT NULL,
    	[noclientdevin] [char](5) NOT NULL,
    	[noproduit] [char](15) NOT NULL,
    	[Caisses] [int] NULL,
    	[PourcentVente] [float] NULL,
    	[CaissesCourt] [int] NULL,
    	[PourcentVenteCourt] [float] NULL,
    	[MoyenneCaissesLong] [int] NULL,
    	[MoyenneCaissesCourt] [int] NULL,
     CONSTRAINT [PK_RepDevinSKU] PRIMARY KEY CLUSTERED 
    (
    	[annee] DESC,
    	[semaine] ASC,
    	[noclientdevin] ASC,
    	[noproduit] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
     
    SET ANSI_PADDING OFF
    GO
    Serveur de prod

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    USE [LassondeTraiteur]
    GO
     
    /****** Object:  Table [dbo].[RepDevinSKU]    Script Date: 01/26/2010 13:27:30 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    SET ANSI_PADDING ON
    GO
     
    CREATE TABLE [dbo].[RepDevinSKU](
    	[annee] [int] NOT NULL,
    	[semaine] [int] NOT NULL,
    	[noclientdevin] [char](5) NOT NULL,
    	[noproduit] [char](15) NOT NULL,
    	[Caisses] [int] NULL,
    	[PourcentVente] [float] NULL,
    	[CaissesCourt] [int] NULL,
    	[PourcentVenteCourt] [float] NULL,
    	[MoyenneCaissesLong] [int] NULL,
    	[MoyenneCaissesCourt] [int] NULL,
     CONSTRAINT [PK_RepDevinSKU] PRIMARY KEY CLUSTERED 
    (
    	[annee] DESC,
    	[semaine] ASC,
    	[noclientdevin] ASC,
    	[noproduit] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
     
    SET ANSI_PADDING OFF
    GO
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  8. #8
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Ah ! J'en reviens pas !

    Tout ça à cause de l'ordre des colonnes !

    Je ne sais pas quel tata a fait ça à l'envers !!!!

    Les colonnes "annee" et "semaine" sont inversées sur les deux serveurs !

    Donc j'essayais de mettre des années dans les semaines et vice-versa... Ah j'en reviens pas d'avoir perdu du temps pour ça !!!

    Merci pour votre support !

    Merci Jerome_Mtl pour m'avoir mis sur la piste des scripts je ne pensais pas de les regarder, me disant que les tables étaient pareils.....
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Baquardie Voir le message
    Merci Jerome_Mtl pour m'avoir mis sur la piste des scripts je ne pensais pas de les regarder, me disant que les tables étaient pareils.....
    De rien, un regard extérieur permet d’avoir un angle nouveau…
    Encore une fois, c’est un méfait du select *… Qui est à éviter, on ne le dira jamais assez !
    Bon après-midi à toi et attention à la glace...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] MERGE - Violation of PRIMARY KEY constraint
    Par vinch999 dans le forum Développement
    Réponses: 2
    Dernier message: 21/01/2015, 10h35
  2. Réponses: 2
    Dernier message: 21/10/2014, 15h44
  3. [2008] Erreur d'exécution d'un lot SSIS: violation de Primary key
    Par lamen0031 dans le forum SSIS
    Réponses: 3
    Dernier message: 07/02/2013, 13h06
  4. Violation of PRIMARY KEY constraint
    Par DEV-10 dans le forum Développement
    Réponses: 6
    Dernier message: 30/11/2009, 15h01
  5. Table sans primary key avec Hibernate
    Par zizou771 dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/02/2007, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo