Wie ändere ich die Indexwiederherstellung einer gesamten Datenbank?

7

Ich möchte die Indizes aller Tabellen in meiner SQL Server 2008-Datenbank mit dem Namen 'db' neu organisieren. Ich versuche den folgenden Befehl:

ALTER INDEX all ON db REBUILD

Und ich bekomme folgenden Fehler:

Das Objekt "db" kann nicht gefunden werden, da es nicht vorhanden ist oder Sie keine Berechtigungen haben

Was mache ich falsch?

Michael Hedgpeth
quelle
Hat der Benutzer, als den Sie fungieren, den richtigen Zugriff auf die Datenbank? Können Sie einen Wartungsplan erstellen, der die Indizes neu erstellt, und diesen ausführen?
RateControl

Antworten:

14

So machen Sie alle Tabellen:

EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'

Es gibt keine Anweisung, alle Tabellen in der Datenbank wie oben beschrieben auszuführen

Manchmal möchten Sie dies jedoch nicht, beispielsweise für schreibgeschützte Tabellen oder große Tabellen. Außerdem werden einige Tabellen / Indizes kaum fragmentiert.

Eine intelligentere Methode besteht darin, zuerst die Fragmentierung zu überprüfen und dann neu zu erstellen oder neu zu organisieren. Ein häufiges und weit verbreitetes Beispiel ist das Skript von SQL Fool

gbn
quelle
1
Eine andere, die von DBAs häufig verwendet wird, sind die Skripte
d -_- b