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 :

Sql server 2005 - comment ajouter la propriété identity sur une colonne existante


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Sql server 2005 - comment ajouter la propriété identity sur une colonne existante
    Bonjour,

    j'ai une table d'un certain volume récupérée de sql 2000 vers sql 2005 via
    un package SSIS. Malgré l'option conserver 'identité' positionnée, la
    propriété "identity" a disparu sous sql 2005.

    1) je tente de la remettre via SSMS en modifiant la table, mais j'ai une
    erreur
    - Impossible de modifier la table.
    Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin
    de l'opération ou le serveur ne répond pas.


    2)J'essaie de remettre le propriété : alter table adgstat.grd_hcot_cote
    alter column no_id
    add constraint identity(1,1) --> syntaxe oncorrecte vers le mot clé
    'Constraint'

    alter table adgstat.grd_hcot_cote alter column no_id
    add identity(1,1)
    --> syntaxe oncorrecte vers le mot


    Existe-il une solution pour ajouter cette propriété sans avoir à repasser
    par une autre table ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    L' auto-incrémentation d'une colonne n'est pas une contrainte, puisqu'elle ne vérifie rien , et malheureusement je pense qu'il n'existe pas de commande pour rajouter cette propriété à une colonne.

    En revanche avec SQL Server Management Studio, si vous faire un clic droit sur la table concernée et que vous choisissez l'option "Modifier" ou "Création" dans le menu contextuel, le panneau inférieur qui va s'afficher va vous permettre de définir une colonne comme ayant un compteur ("Spécification du compteur").

    Je n'ai jamais regardé avec le Profiler la commande qui est utilisée pour faire cette opération, mais je vais le faire , mais je doute que ce soit une commande ALTER TABLE.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut probleme expiration du delai d'attente
    Salut à tous.

    je ne sais pas si je suis sur le bon topic ou non, mais j'espère que quelqu'un pourra m'aider dans mon problème.

    J’ai un gros soucis dans une application sous c# que je développe.
    Le soucis que j’ai c’est que je fais un DELETE sur plusieurs à partir d’une date que je saisie. Le truc c’est que les tables dont je dois supprimer les données ne se trouvent pas toutes dans la même base et le nombre de ligne à supprimer est assez important (en moyenne 650 000 lignes par tables).
    Lorsque je fais mon DELETE, j’ai un soucis lorsqu’il arrive sur une table (toujours la même) d’expiration du délai d’attente. Pourtant dans ma chaine de connexion j’ai mis le « Connection Timeout » au max soit 2147483647ms , j’ai également modifié sur le serveur SQL (local) les temps de connexion je l’ai mis soit à zero soit au max (jai test avec les deux).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SqlConnection conect = new SqlConnection("Initial Catalog=" + BaseName + ";Data Source=" + serverName + ";User ID=" + login + ";pwd=" + pwd + ";Connection Timeout = 2147483647");
    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
     
    string req2 = "delete " + tableLongTerme + " where RefMesure = " + id + " and DateHeure >= '" + DateSelect + "'";
                                cnxReqDel.Open();
                                Console.WriteLine(cnxReqDel.ConnectionTimeout.ToString());
                                Console.WriteLine("execution du thread" + myThreadSuppLT.Name);
                                SqlCommand cmd2 = new SqlCommand(req2, cnxReqDel);
                                try
                                {
                                    cmd2.ExecuteNonQuery();
                                }
                                catch (Exception esql)
                                {
                                    MessageBox.Show(esql.ToString());
                                    throw;
                                }
                                cnxReqDel.Close();
                                cnxReqDel.Dispose();
    J’ai essayer de créer une procédure stockées, mais ça ne marche pas. Car il ne doit pas accepter le nom de table comme paramètre.

    CREATE PROCEDURE [dbo].[pDeleteLongTerme]
    (
    @Type nvarchar(15) = null,
    @Table nvarchar(10) = null,
    @date nvarchar(30) = null,
    @id int = null
    )
    AS
    BEGIN
    IF (@Type = Mesures)
    BEGIN
    DELETE @Table WHERE RefMeure = @id and DateHeure >= @date;
    END
    END

    GO

    Pour schématiser un peu, la valeur de la variable (tablelongterme) prend les valeurs suivante :

    tMesuresHisto2_2007_12 qui se trouve dans la base ServerIT_2007
    tMesuresHisto2_2008_01 qui se trouve dans la base ServerIT_2008
    tMesuresHisto2_2008_02
    tMesuresHisto2_2008_03
    tMesuresHisto2_2008_04

    Le DELETE marche jusqu’à la table tMesuresHisto_2008_03 et plante pour la suivante, ors il en reste encore deux à supprimer.

    Merci d’avance

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Salut,
    t'as essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET IDENTITY_INSERT la_table ON; -- ';' ou 'GO', ça dépend du contexte
    INSERT INTO la_table (clePrimaire_AutoInc, UnChamp) VALUES (<valeur_de_cle_que_tu_veux_forcer>, 'DuTexte');
    SET IDENTITY_INSERT table OFF; --même commentaire
    Bonne chance

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Macadoshis Voir le message
    Salut,
    t'as essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET IDENTITY_INSERT la_table ON; -- ';' ou 'GO', ça dépend du contexte
    INSERT INTO la_table (clePrimaire_AutoInc, UnChamp) VALUES (<valeur_de_cle_que_tu_veux_forcer>, 'DuTexte');
    SET IDENTITY_INSERT table OFF; --même commentaire
    Bonne chance
    La réponse était pour Blodine
    (et non pas pour chewee qui est venu squatter son post )

    Moi ça a réglé mes problèmes, car j'avais le même que toi (surtout lors du pilotage sql/delphi).

    Hope it helped.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/09/2008, 15h53
  2. [SQL SERVER 2005] comment créer une base de données ?
    Par Syrrus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/03/2007, 14h26
  3. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27
  4. [SQL Server 2005 Std] Pb de Réplication (IDENTITY)
    Par Peck777 dans le forum Réplications
    Réponses: 2
    Dernier message: 29/06/2006, 10h32
  5. [Sql server 2005] Comment faire des taches planifiées?
    Par critok dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/05/2006, 12h19

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