2013-06-24 2 views
0

Я пытаюсь создать задание агента, которое перестраивает индексы для нашей базы данных SQL 2008 R2, подключенной к интерфейсу Deltek 6.1.SQL Index Rebuild: Index Fragmentation% Increases?

Продолжительность:

exec sp_msforeachtable 'DBCC DBREINDEX("?"," ",0)' 

Замечая, что некоторые из индексов фактически становится значительно более фрагментированным. Может ли это быть связано с интервалом между индексами? Мы это случались в наших тестовых и производственных сетях с различными способами восстановления. Таблицы обычно большие, мы обновляем статистику после запуска перестроения.

ответ

0

Скрипт для восстановления всех индексов таблицы в SQL Server:

USE DatabaseName --Enter the name of the database you want to reindex 

DECLARE @TableName varchar(255) 

DECLARE TableCursor CURSOR FOR 

SELECT table_name FROM information_schema.tables 

WHERE table_type = 'base table' 

OPEN TableCursor 

FETCH NEXT FROM TableCursor INTO @TableName 

WHILE @@FETCH_STATUS = 0 

BEGIN 

DBCC DBREINDEX(@TableName,' ',90) 

FETCH NEXT FROM TableCursor INTO @TableName 

END 

CLOSE TableCursor 

DEALLOCATE TableCursor 
+0

Мы уже делаем то же самое, как этот запрос, мы просто используем уже существующий коэффициент заполнения, а не определять новую. Проблема, с которой мы сталкиваемся, заключается в том, что средняя фрагментация в% по существу ухудшается после запуска сценария перестроения/реорганизации. – fortysixty

+0

Каков размер базы данных? если у вас есть лишний объем пространства, у вас может возникнуть проблема, вам нужно, чтобы 10% свободного пространства не выполнили успешную дефрагментацию. – MineScript

+0

Размер базы данных составляет примерно 60 ГБ, с 15,5 ГБ свободного места – fortysixty