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

Développement SQL Server Discussion :

SQL Server : Rowversion/Timestamp


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Points : 94
    Points
    94
    Par défaut SQL Server : Rowversion/Timestamp
    Bonjour,

    J'ai un soucis d'insertion de données que je ne trouve pas la solution et je ne sais plus quoi faire

    Ci-dessous la structure de la table cible (réduite):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* Table d'un logiciel tiers qu'on utilise en production */
    CREATE TABLE [dbo].[ADRESSE](
    	[ADRESSE_NR] [decimal](10, 0) NOT NULL,
    	[NAME] [varchar](32) NULL,
    	..
    	[ROWVERSION] [timestamp] NOT NULL,
     CONSTRAINT [XPKADRESSE] PRIMARY KEY NONCLUSTERED 
    (
    	[ADRESSE_NR] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    La requête d'insertion (la table ADRESSE_TMP n'a pas le champ Timestamp):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO dbo.[ADRESSE]
    	([ADRESSE_NR], [NAME])
    SELECT [ADRESSE_NR] ,[NAME] 
    	FROM dbo.[ADRESSE_TMP]
    	WHERE [ADRESSE_NR] BETWEEN 71010000 AND 71019999
    		AND [ADRESSE_NR] NOT IN (SELECT [ADRESSE_NR] FROM dbo.[ADRESSE])
    Je reçois l'erreur suivante à chaque tentative:
    Msg*2601, Niveau*14, État*1, Ligne*2
    Cannot insert duplicate key row in object 'dbo.ADRESSE' with unique index 'XAK1ADRESSE'.
    The statement has been terminated.
    Je pense que le problème vient de Rowversion\Timestamp;
    - SELECT @@DBTS m'affiche : 0x00000000011F1CCA
    - PRINT MIN_ACTIVE_ROWVERSION() m'affiche : 0x00000000011F1CCB
    - SELECT MAX(ROWVERSION) FROM dbo.[ADRESSE] m'affiche : 0x00000000011EF439


    Questions:
    - Est-ce que le problème est provoqué du faite que la valeur de MAX(ROWVERSION) : 0x00000000011EF439 soit inférieure de la valeur MIN_ACTIVE_ROWVERSION() : 0x00000000011F1CCB

    - Est-il possible de déterminer la valeur initiale de Timestamp dans la base de données, par exemple "0x00000000011F1CCB"?

    Je suis complètement perdu et j'espère avoir ici quelques éclaircissement!

    Merci d'avance de votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 540
    Points
    52 540
    Billets dans le blog
    5
    Par défaut
    TIMESTAMP est un type de données qui ne doit plus être utilisé dans SQL Server. Son remplaçant est le type ROWVERSION.
    Évitez d'utiliser un mot réservé comme ROWVERSION comme non de colonne. ROWVERSION est un type de données.
    Bref, vous mélangez tout et n'importe quoi...

    Que voulez-vous faire ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    Merci de votre réponse, je dois importer les données dans cette bd d'une application (qui date déjà de quelques années depuis SQL Server 7 et SQLBase 6) développée par une maison externe, malheureusement je ne peux pas modifier son structure, je ne peux qu'intervenir au niveau de données.

    J'aimerai tous simplement importé les données d'une table x vers une de tables de cette bd, actuellement elle est sur SQL Server 2005.

    Merci encore. A+

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 540
    Points
    52 540
    Billets dans le blog
    5
    Par défaut
    Quelle est la structure EXACTE de la table de destination ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    La structure de la table de destination est celle-ci:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    CREATE TABLE [dbo].[ADRESSE](
    	[ADRESSE_NR] [decimal](10, 0) NOT NULL,
    	[NAME] [varchar](32) NULL,
    	[VORNAME] [varchar](32) NULL,
    	[KURZNAME] [varchar](16) NULL,
    	[TITEL] [varchar](32) NULL,
    	[ADR1] [varchar](32) NULL,
    	[ADR2] [varchar](32) NULL,
    	[ADR3] [varchar](32) NULL,
    	[PLZ] [varchar](10) NULL,
    	[ORT] [varchar](32) NULL,
    	[LAND_ID] [varchar](3) NULL,
    	[TELEFON1] [varchar](20) NULL,
    	[TELEFON2] [varchar](20) NULL,
    	[NATEL] [varchar](20) NULL,
    	[TELEFAX] [varchar](20) NULL,
    	[TELEX] [varchar](20) NULL,
    	[EMAIL] [varchar](80) NULL,
    	[INTERNET] [varchar](80) NULL,
    	[PTELEFON1] [varchar](20) NULL,
    	[PTELEFON2] [varchar](20) NULL,
    	[PNATEL] [varchar](20) NULL,
    	[PTELEFAX] [varchar](20) NULL,
    	[PEMAIL] [varchar](80) NULL,
    	[PINTERNET] [varchar](80) NULL,
    	[ADRTYP_SCNR] [smallint] NULL,
    	[SPRACHE_NR] [smallint] NULL,
    	[ANREDE_NR] [smallint] NULL,
    	[ANREDENAME] [varchar](32) NULL,
    	[INFO] [smallint] NULL,
    	[AHV] [varchar](20) NULL,
    	[NOTIZ] [text] NULL,
    	[LV] [smallint] NULL,
    	[GEBDATUM] [datetime] NULL,
    	[GEBTAG] [smallint] NULL,
    	[GEBMONAT_SCNR] [smallint] NULL,
    	[GEBJAHR] [smallint] NULL,
    	[MUTMIT_NR] [smallint] NULL,
    	[KONTAKTNZUS_SCNR] [smallint] NULL,
    	[GEBGESCHENK_UCNR] [int] NULL,
    	[RECHTSFORM_UCNR] [int] NULL,
    	[WEIHGESCHENK_UCNR] [int] NULL,
    	[ZUSMIT1_NR] [int] NULL,
    	[ZUSMIT2_NR] [int] NULL,
    	[ZUSMIT3_NR] [int] NULL,
    	[CDATE] [datetime] NOT NULL CONSTRAINT [DF_ADRESSE_CDATE] DEFAULT (getdate()),
    	[CUSER] [smallint] NOT NULL,
    	[MDATE] [datetime] NULL,
    	[MUSER] [smallint] NULL,
    	[ROWVERSION] [timestamp] NOT NULL,
     CONSTRAINT [XPKADRESSE] PRIMARY KEY NONCLUSTERED 
    (
    	[ADRESSE_NR] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

  6. #6
    Membre régulier
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    Je viens d'identifier le problème, l'erreur ne venait pas du champ rowversion mais dans l'un de champs qui me semble être un champ unique et recevait plusieurs valeurs NULL, en regardant la structure de cette table je ne vois pas à quel niveau la contrainte UNIQUE est déclarée... Au tant pour moi!

    Merci encore à tous.

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

Discussions similaires

  1. [SQL Server 2005]Requête et bcp avec des timestamp
    Par tinwul dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/12/2010, 16h57
  2. convertir Date en Mili second en un TimeStamp SQL server
    Par zambizi dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/12/2008, 09h31
  3. Réponses: 4
    Dernier message: 11/06/2008, 09h53
  4. [VB6] timestamp pour inserer dans sql server
    Par Corben dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/05/2008, 18h20
  5. Limitation de colonnes TIMESTAMP dans SQL Server
    Par eguilloteau dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/06/2005, 11h05

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