Question

Je souhaite vérifier dans Transact SQL si une colonne spécifique d'un tableau contient des statistiques et, le cas échéant, pour les obtenir toutes.

Était-ce utile?

La solution

Cette requête devrait le faire.
Je l'utilise dans un proc stocké qui parcourt la base de données pour trouver des statistiques.
Fonctionne dans SQL Server 2005 et probablement dans une version antérieure.

SELECT S.NAME
FROM   SYS.OBJECTS AS O
       INNER JOIN SYS.STATS AS S
         ON O.OBJECT_ID = S.OBJECT_ID
       INNER JOIN SYS.STATS_COLUMNS AS SC
         ON SC.OBJECT_ID = S.OBJECT_ID
            AND S.STATS_ID = SC.STATS_ID
WHERE  (O.OBJECT_ID = OBJECT_ID('MyTable','local'))
       AND (O.TYPE IN ('U'))
       AND (INDEXPROPERTY(S.OBJECT_ID,S.NAME,'IsStatistics') = 1)  /* only stats */
       AND (COL_NAME(SC.OBJECT_ID,SC.COLUMN_ID) = 'MyColumn')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top