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 :

Renommage en masse des index


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Renommage en masse des index
    Bonjour,

    Il me faut modifier le nom de mes index sur toutes mes tables. J'ai 340 table avec en moyenne 10 index...

    Actuellement, voici ce que j'ai (en SQL serveur 2008)

    + Nom de ma base
    + Tables
    + dbo.NomDeMaTable
    + Indexes
    + NomDeMaTable_Nom_Champ1
    + NomDeMaTable_Nom_Champ2
    + NomDeMaTable_Nom_Champ3
    + NomDeMaTable_Nom_Champ4
    + ...

    Idem pour les 340 tables.

    Le nom des index devrait être " Nom_Champ1 " => retirer le " NomDeMaTable_ "


    Sinon mon autre solution serait d'exporter tout mes index de ma base SQL 2000 et de les réimporter dans ma base SQL 2008. Est ce possible ??
    Avez vous une idée???

  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,

    Il me faut modifier le nom de mes index sur toutes mes tables. J'ai 340 table avec en moyenne 10 index...
    Renommer les index ... pourquoi pas.

    10 index en moyenne par table, ça veut dire au moins une des deux choses suivantes :
    - soit vos tables ont un peu trop de colonnes;
    - soit vos tables ont des index qui ne servent à rien (en revanche ils pénalisent toutes les mises à jour).

    Le nom des index devrait être " Nom_Champ1 " => retirer le " NomDeMaTable_ "
    Bah pourquoi, c'est pas mal comme convention de nommage.
    Au moins vous savez tout de suite sur quelle table se trouve l'index sans avoir à écrire une requête.

    Sinon mon autre solution serait d'exporter tout mes index de ma base SQL 2000 et de les réimporter dans ma base SQL 2008. Est ce possible ??
    Oui mais c'est lourd et long

    Vous pouvez vous générer le script avec du code SQL dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    USE maBD
    GO
    SET NOCOUNT ON 
    GO
     
    SELECT		'EXEC sp_rename ''' + T.name + '.' + S.name + '.' + I.name
    		+ ''', ''' + REPLACE(I.name, T.name, '') + ''''
    		+ ', ''INDEX''' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
    FROM		sys.indexes AS I
    INNER JOIN	sys.tables AS T ON I.object_id = T.object_id
    INNER JOIN	sys.schemas AS S ON T.schema_id = S.schema_id
    En passant dans SSMS les résultats de la requête en texte, vous obtenez le script de renommage.

    @++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Merci de votre réponse.

    Le fait d'avoir autant d'index est simple. Le logiciel qui exploite la Base de données permet de faire de la gestion de parc, helpdesk ...

    Il y a énormément de champs qui s'auto complètent. Et en fait, j'ai une grosse erreur sur ces champs la.
    J'ai effectué une conversion de base SQL 2000 -> 2008 et c'est lors de cette conversion que mes index semble avoir été renommé.
    Pourquoi?? Je ne sais pas.

    Le fait est que maintenant, il faut que je les renomment, car l'outils ne comprend plus rien !!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Est il possible de récupérer les scripts de création des index en SQL 2000 ?
    Mais de tous les récupérer d'un coup.

    Ensuite, supprimer tous mes index en 2008 et lancer le script de création 2000 ?

    Plus clairement.
    Lorsque je suis sur mon index, je peux faire bouton droit SCRIPT INDEX AS - CREATE TO en 2000 et DROP TO en 2008.

    Est il possible d'avoir les scripts CREATE en 2000 et DROP en 2008 en masse de tout les INDEX. Ensuite, je combine les deux et je passe la moulinette...

  5. #5
    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
    En remplaçant sys.indexes par sysindexes et sys.tables par sysobjects filtrée sur le type 'U', et en triturant les jointures, ça devrait rouler

    @++

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Ben en fait, on fouillant un peu, j'ai utilisé le fonction de génération de script.
    Bouton droit sur la base, tache, génération de script.

    J'ai effectué un DROP et CREATE des index de toutes les table,

    Ca semble bien fonctionné. Plus d'erreur et l'outil semble fonctionner comme avant.

    Merci de vos réponse en tout cas

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

Discussions similaires

  1. Compteur sur l'utilisation des index
    Par hkhan dans le forum Administration
    Réponses: 11
    Dernier message: 14/10/2004, 17h57
  2. Utilisation des "indexs" ?
    Par vandeyy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/09/2004, 07h49
  3. Réponses: 4
    Dernier message: 16/03/2004, 14h16
  4. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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