2008-10-17 3 views

Répondre

2

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 également dans la 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') 
+0

Ajouter une autre où une partie « ET (S.USER_CREATED = 1) » est intéressant dans le cas où vous utilisez cette requête pour déposer les requêtes créées par l'utilisateur, à l'aide de cette façon: http://sqlsoundings.blogspot.be/2012 /06/delete-statistics.html –

Questions connexes