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 :

Modification à chaud d'un type de colonne


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut Modification à chaud d'un type de colonne
    Bonjour à tous !

    J'administre la base sql server de ma boite et je suis confronté à un problème...
    Je m'explique, nous utilisons le type de données smallInt pour une colonne qui représente le stock de pièces...
    Après inventaire, nous mettons à jours ces données et pour un certain objet du stock nous trouvons 44000 references ... Or un smallInt est un type int codé sur 16 bit et qui plus est signé, donc les valeurs acceptées vont de -32,768 à 32,767.
    Il est donc impossible pour l'utilisateur de saisir 44000 ...

    Je pense modifier le type de la colonne de smallInt en Int mais je me demande si la manipulation n'est pas un peu dangeureuse vu que la table en question a 9000 lignes.

    Les modifition de type de colonne à chaud sont possible ?

  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 : 44
    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
    Par défaut
    Bonjour,

    Les modifition de type de colonne à chaud sont possible ?
    Oui, et vous n'avez pas beaucoup de lignes.
    En revanche il ne vous faut pas le faire avec Management Studio parce que c'est plus lent, et si votre colonne est une clé primaire référencée dans d'autres tables (clé étrangère), c'est plus compliqué.

    Vous pouvez faire cette modification à chaud avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE maTable
    ALTER maColonne [NULL/NOT NULL] INT
    Si vous avez des clés étrangères référençant cette colonne, vous devrez auparavant toutes les supprimer, modifier leurs types avec la commande ci-dessus puis recréer ces contraintes de clé étrangère.

    Je vous conseille de tout scripter si c'est le cas et de tester cela sur une base de données qui est l'image de votre BD de production (BACKUP + RESTORE avec un autre nom si vous restaurez sur le même serveur).

    @++

  3. #3
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Oui ceci est possible. (dans le cas où vous augmentez la taille de votre champ)

    Personnellement je l'ai déjà fait sur une table contenu 1 million d'enregistrements avec la même problèmatique que vous.

    J'ai cependant pris le soin de le faire à un moment de faible activité

    ++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut
    Merci à vous pour vos réponses !
    Je vais commencer regarder maintenant si les applications qui utilise la bdd ne vont pas me dire "merd*!;?*!!"

    Encore merci et bonne journée !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut
    Re-Bonjour à tous !

    Je travaille actuellement sur une application développé avec access 97 ...
    Elle utilise ( en fait elle lie ) des tables provenant d'un serveur SQLServer.

    J'ai changé le type d'une des colonnes de la table représentative d'un stock d'un smallInt vers un Int ( répectivement codé sur 16bit et 32bit signé).

    Hors lorsque j'observe le type de la dite colonne lié dans l'appli access il me donne un "Entier" ce qui est normal me direz-vous... mais en fait les entiers d'access 97 sont codés sur 16bit...

    Du coup des messages d'erreurs d'ODBC m'envahissent en me disant "valeur hors limites" .

    Si j'essaye de modifier le type de la colonne en question, access me dit qu'il est impossible de le faire vu que la table est lié ...

    Comment détouner ce problème ? Auriez-vous une solution ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...partie2#L7.6.1
    Entourez ceci d'une transaction avec tests de retour de toutes les commandes SQL et annulation en cas de problème.

    Si vous avez des contraintes d'IR ou d'unicité et des index sur cette colonne, vous devrez préalablement les retirer avant de les remettre en fin.

    Evitez de passer par l'IHM car elle fait un code SQL qui détruit la table et la reconstruit.

    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/ * * * * *

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut
    Merci de votre aide ! je tenté ceci.
    Bonne journée !

Discussions similaires

  1. Modification de type de colonne sous Access
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2007, 12h56
  2. Modifier Type de colonnes
    Par klael dans le forum Paradox
    Réponses: 6
    Dernier message: 25/05/2007, 16h50
  3. Enorme probleme avec modification de type de colonne
    Par tibere dans le forum Administration
    Réponses: 2
    Dernier message: 07/04/2007, 13h57
  4. [tranformation du type des colonnes]
    Par viny dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 18/03/2005, 09h46
  5. [VB6] Type de colonne Access sous VB ?
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/02/2005, 11h10

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