2010-03-01 13 views

Antwort

7

könnten Sie versuchen, die Ergebnisse überprüfen, die sys.dm_db_index_usage_stats Dynamic Management Ansicht wie diese Abfrage:

SELECT * 
FROM sys.dm_db_index_usage_stats 
WHERE [database_id] = DB_ID() 
    AND [object_id] = OBJECT_ID('TableName') 

Diese Dinge wie die last_user_seek zurückkehren wird, scannen und zu aktualisieren Daten auf die Indizes auf dem Tisch.

Wie auch immer, Vorsicht, da die Statistiken für die dynamische Verwaltungsansicht zurückgesetzt werden, wenn der Server neu gestartet wird. Je länger der Server läuft, desto mehr Sicherheit können Sie haben, wenn die Datensätze keine Aktivität zeigen.

persönlich möchte ich auch den gesamten Quellcode werden Überprüfung für Verweise auf die Tabelle in Frage zu überprüfen, und die Suche alle sprocs/UDF nach Referenzen zu (Sie SQL Search from Red Gate dies tun können - es ist kostenlos)

+0

Genau das habe ich gesucht. Vielen Dank! :O) –

0

Wenn dies für Ihre Anwendung (en) und/oder Firma wichtig ist und die Tabellen korrekt entworfen wurden, sollte jede Tabelle eine Spalte namens "LastModifiedTime" haben. Sie können diese Tabelle abfragen, um festzustellen, welche Tabellen veraltet sind.

+0

Leider habe ich die ursprüngliche Datenbank nicht entworfen. Also habe ich mich gefragt, ob es etwas in den sys-Datenbanktabellen gibt, die ich abfragen könnte, um herauszufinden, welche Tabellen nicht mehr verwendet werden oder seit einiger Zeit nicht mehr verwendet wurden. –

1

Wenn Jeder sucht nach allen unbenutzten Tabellen in einer Datenbank (mehr die Anfrage des Titels als der Fragekörper), this guy hatte eine gute Frage, um alle unveränderten Tabellen in einer Datenbank einzubringen. In diesem Fall ist "unverändert" jede Tabelle ohne einen Eintrag in sys.dm_db_index_usage_stats (wieder wie bei AdaTheDevs Antwort, erst seit dem letzten Neustart des SQL-Servers).

SELECT OBJECTNAME = Object_name(I.object_id), 
     INDEXNAME = I.name, 
     I.index_id 
FROM sys.indexes AS I 
     INNER JOIN sys.objects AS O 
       ON I.object_id = O.object_id 
WHERE Objectproperty(O.object_id, 'IsUserTable') = 1 
     AND I.index_id NOT IN (SELECT S.index_id 
           FROM sys.dm_db_index_usage_stats AS S 
           WHERE S.object_id = I.object_id 
            AND I.index_id = S.index_id 
            AND database_id = Db_id(Db_name())) 
ORDER BY objectname, 
      I.index_id, 
      indexname ASC 
Verwandte Themen