begin process at 2012 05 25 11:46:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tâches

 > SQL SERVER 2000 - CREER DES INDEXES SUR UN CHAMP EXISTANT DANS TOUTES LES TABLES DE LA BASE

SQL SERVER 2000 - CREER DES INDEXES SUR UN CHAMP EXISTANT DANS TOUTES LES TABLES DE LA BASE


 Information sur la source



 Description

Dans le même ordre d'idée que la source :
- http://www.sqlfr.com/code.aspx?ID=39938

Voila le script qui effectue la création des indexes sur un ensemble de tables sur une base SQL Server 2000.

Source

  • -----------------------------------------------------------------
  • USE [MaDataBase]
  • -----------------------------------------------------------------
  • -- Spécification du champ qui doit être indexé
  • -----------------------------------------------------------------
  • DECLARE @NOM_CHAMP AS VARCHAR(50)
  • SET @NOM_CHAMP = 'MonNomDeChamp'
  • -----------------------------------------------------------------
  • DECLARE @TCompleteName AS VARCHAR(500)
  • DECLARE @SQL AS VARCHAR(4000)
  • DECLARE @NomIDX AS VARCHAR(500)
  • -----------------------------------------------------------------
  • -- Déclaration du Curseur de sélection
  • -----------------------------------------------------------------
  • DECLARE TESTCURSEUR CURSOR
  • FOR SELECT
  • '[IDX_'+ UPPER(TAB.TABLE_NAME) +'_'+ UPPER(@NOM_CHAMP) +']' AS TIndex,
  • '['+ TAB.TABLE_SCHEMA +'].['+ TAB.TABLE_NAME +']' AS TCompleteName
  • FROM
  • INFORMATION_SCHEMA.COLUMNS COL
  • INNER JOIN INFORMATION_SCHEMA.TABLES TAB
  • ON (TAB.TABLE_SCHEMA = COL.TABLE_SCHEMA AND TAB.TABLE_NAME = COL.TABLE_NAME)
  • LEFT OUTER JOIN dbo.sysindexes IDX
  • ON IDX.name = 'IDX_'+ UPPER(TAB.TABLE_NAME) +'_'+ UPPER(@NOM_CHAMP)
  • WHERE
  • COL.COLUMN_NAME = @NOM_CHAMP
  • AND
  • TAB.TABLE_TYPE = 'BASE TABLE'
  • AND
  • IDX.name IS NULL
  • -----------------------------------------------------------------
  • -- Déclaration du Curseur sur la liste des Bases de données
  • OPEN TESTCURSEUR
  • FETCH NEXT FROM TESTCURSEUR INTO @NomIDX, @TCompleteName
  • WHILE (@@FETCH_STATUS >= 0)
  • BEGIN
  • SET @SQL = 'CREATE NONCLUSTERED INDEX '+ @NomIDX +' ON '+ @TCompleteName +' (['+ @NOM_CHAMP +'] ASC) ON [PRIMARY]'
  • EXECUTE (@SQL)
  • FETCH NEXT FROM TESTCURSEUR
  • INTO @NomIDX, @TCompleteName
  • END
  • -----------------------------------------------------------------
  • -- Fermeture du Curseur
  • CLOSE TESTCURSEUR
  • -- Libération de la mémoire prise par le Curseur
  • DEALLOCATE TESTCURSEUR
  • -----------------------------------------------------------------
----------------------------------------------------------------- 
USE [MaDataBase] 
  
----------------------------------------------------------------- 
-- Spécification du champ qui doit être indexé 
----------------------------------------------------------------- 
DECLARE @NOM_CHAMP AS VARCHAR(50) 
SET @NOM_CHAMP = 'MonNomDeChamp' 
  
----------------------------------------------------------------- 
DECLARE @TCompleteName AS VARCHAR(500) 
DECLARE @SQL AS VARCHAR(4000) 
DECLARE @NomIDX AS VARCHAR(500) 
  
----------------------------------------------------------------- 
-- Déclaration du Curseur de sélection 
----------------------------------------------------------------- 
DECLARE TESTCURSEUR CURSOR 
   FOR SELECT 
    '[IDX_'+ UPPER(TAB.TABLE_NAME) +'_'+ UPPER(@NOM_CHAMP) +']' AS TIndex, 
    '['+ TAB.TABLE_SCHEMA +'].['+ TAB.TABLE_NAME +']' AS TCompleteName 
FROM 
    INFORMATION_SCHEMA.COLUMNS COL 
INNER JOIN INFORMATION_SCHEMA.TABLES TAB 
    ON (TAB.TABLE_SCHEMA = COL.TABLE_SCHEMA AND TAB.TABLE_NAME = COL.TABLE_NAME) 
LEFT OUTER JOIN dbo.sysindexes IDX 
    ON IDX.name = 'IDX_'+ UPPER(TAB.TABLE_NAME) +'_'+ UPPER(@NOM_CHAMP)     
WHERE 
    COL.COLUMN_NAME = @NOM_CHAMP 
AND 
    TAB.TABLE_TYPE = 'BASE TABLE' 
AND 
    IDX.name IS NULL 
  
----------------------------------------------------------------- 
-- Déclaration du Curseur sur la liste des Bases de données 
OPEN TESTCURSEUR 
FETCH NEXT FROM TESTCURSEUR INTO @NomIDX, @TCompleteName 
    
WHILE (@@FETCH_STATUS >= 0) 
    BEGIN 
         
        SET @SQL = 'CREATE NONCLUSTERED INDEX '+ @NomIDX +' ON '+ @TCompleteName +' (['+ @NOM_CHAMP +'] ASC) ON [PRIMARY]' 

	EXECUTE (@SQL) 
  
        FETCH NEXT FROM TESTCURSEUR 
        INTO @NomIDX, @TCompleteName 
    END 
  
----------------------------------------------------------------- 
-- Fermeture du Curseur 
CLOSE TESTCURSEUR 
   
-- Libération de la mémoire prise par le Curseur 
DEALLOCATE TESTCURSEUR 
  
----------------------------------------------------------------- 
  

 Conclusion

Bon coding

Romelard Fabrice [MVP]


 Sources du même auteur

SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON...
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN...
SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CH...
SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT

 Sources de la même categorie

SUPPRESSION DE DOUBLONS par maxroucool
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON... par fabrice69
SQL SERVER : VÉRIFICATION DE L'ESPACE LIBRE SUR LE SERVEUR par skweeky
Source avec Zip LISTE DES PAYS DU MONDE EN FRANÇAIS/ANGLAIS DANS UNE BASE SQ... par Joe_le_mort
SQL SERVER 2005 - LISTER LES MODES DE RECUPERATION DE TOUTES... par fabrice69

 Sources en rapport avec celle ci

SQL SERVER 2005 - LISTER LES INDEXES AVEC LE NOMBRE DE LIGNE... par fabrice69
SQL SERVER 2005 - DETRUIRE TOUS LES INDEXES APPLIQUES SUR UN... par fabrice69
SQL SERVER 2005 - RECUPERER LA LISTE DES INDEXES EXISTANT SU... par fabrice69
SQL SERVER 2005 - CREER DES INDEXES SUR UN CHAMP EXISTANT DA... par fabrice69
SQL SERVER - PROCÉDURE STOCKÉE PERMETTANT DE RECONSTRUIRE TO... par fabrice69

Commentaires et avis

Commentaire de amina2986 le 08/02/2007 11:27:07

bien

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

creation d'index sous ms sql serveur ? [ par jimmy69 ] Bonjour a tous, Mes tables sont presque crees sous ms sql serveur 2000...J'avais lu un article sur l'utilite de la creation d' index ...sur les tables probleme de creation de requete sql server [ par firas_tn ] Bonjour a tous je suis débutant en sql server, j'ai une base de donnée en sql server et une table qui m'intéresse ou il ya beaucoup de Sauvegarde automatique sqlserver 2000 [ par jojos89 ] Salut a tous,J'ai une base de données en local sur mon pc (avec sqlserver 2000)que je voudrais sauvegardé automatique (tous les soir) s aide pour SQLSERVER [ par nagrom_om ] salut,quelqu'un sait il comment peut on avoir un listing des requetes qui sont passées sous SQL Server ??Merci ! ms access - sqlserver - procédurestockée [ par metasky ] bonjour,je suis actuellement sur une appli liant access et sqlserver...quand je consulte mes procédures stockées dans mon projet access les combien d'index faut il créer ? [ par vincentstryckmans ] Bonjour, Mon application enregsitre les description d'incident ferroviaire. Les causes réelles d'incident sont décrits en 6 mots. Les 4 pre Quel outil pour SqlServer [ par padurand ] Mon site tourne avec une base de donnees Access, et des pages ASP.Je voudrais remplacer Access par SqlServer ... a priori il ne devrait pas y avoir de exporter des donnees de sqlserver 2005 vers access (dts) [ par tenrod ] Salut a tous ,Voila je travail avec une base sql server 2005 et je voudrais exporter le résultat d'une requete (a partir de ma base sql server) d SQLServer remplacer Null par 0 [ par BasicInstinct ] Bonjour tout le mondej'ai une requete plutot complexe qui calcule differents totaux selon des dates.lorsque pour un mois donné, je n'ai pas de va creation d'un fichier bat en sql sous sql server [ par dbaf ] Bonjour,Je souhaite créer un fichier .bat (ou txt) à partir d'une procédure stockée sous SQL Server.Comment faire?il n'existe pas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales