Frage

Ich möchte in Transact SQL überprüfen, ob eine bestimmte Spalte in einer Tabelle Statistik hat und wenn ja, bekommen sie alle.

War es hilfreich?

Lösung

Diese Abfrage sollte es tun.
Ich benutze es in einer gespeicherten proc, die die DB durchsuchen Statistiken zu finden.
Works in SQL Server 2005 und wahrscheinlich ältere Version als auch.

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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top