Jak przeindeksować (przebudować) wszystkie indeksy wszystkich tabel bazy danych?

18-Cze-2013

Niestety nie ma w SQL serwerze polecenia 🙁

ALTER INDEX ALL ON ALL REBUILD

Co możemy zrobić:

1. Skorzystać z kursora, który przechodzi przez rekordy sys.tables. Nie będę powtarzał czegoś co juz jest ładnie opisane, zapraszam na blog Pinal Dave: http://blog.sqlauthority.com/2009/01/30/sql-server-2008-2005-rebuild-every-index-of-all-tables-of-database-rebuild-index-with-fillfactor/

2. Skorzystać z nieco ukrytej procedury sp_MSforeachtable, którą kokładniej opisałem tu http://www.mobilo24.eu/wykonanie-czynnosci-dla-wielu-tabel-w-bazie-danych-lub-dla-wielu-baz-danych/ a z kolei pod tym adresem znajdziesz rozwiązanie problemu indeksowania z wykorzystaniem tej procedury: http://geekswithblogs.net/robz/archive/2009/06/09/sql-server-2005-sql-server-2008—rebuild-or-reorganize.aspx

3. Wyklikać sobie tzw Maintnance Plan, względnie zbudować go samodzielnie w Integration Services (Business Inteligence Management Studio).

Dodaj komentarz:

Autor: Rafał Kraik