AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.05.2007, 23:40   #1  
Blog bot is offline
Blog bot
Участник
 
25,626 / 848 (80) +++++++
Регистрация: 28.10.2006
dynamicsusers: NAV SQL Indexes
Источник: http://dynamicsuser.net/blogs/nunoma...l-indexes.aspx
==============

In some companies it’s almost impossible to make a full index rebuild, because they have only a few hours of maintenance windows
You can adapt this script to rebuild a specific number of indexes during each day, during a specific hours. If you have several companies in a database you can even adapt it to rebuild each company at a specific hour of day.
This scripts only runs in SQL Server 2005.
This script isn’t complete you have to adapt it to your current company and define fragmentation values.
Create a table to store indexes and values.
-- TABLE OF INDEXES

CREATETABLE IndexFragList
(

DatabaseId
INT,
IndexId INT,
ObjectID INT,
IndexName CHAR(255),
AvgFrag
DECIMAL,
TableName VARCHAR(255)

)
-- ############ SCRIPT #############################

DECLARE @Maxfrag DECIMAL
DECLARE
@Minfrag DECIMAL
DECLARE
@DatabaseID INT
DECLARE
@IndexId INT
DECLARE
@IndexName VARCHAR(255)
DECLARE @AvgFrag DECIMAL
DECLARE
@ObjectID INT
DECLARE
@TableName VARCHAR(6000)
DECLARE @Command VARCHAR(255)
DECLARE @Count INT
-- Decide on the maximum fragmentation to allow
SELECT @Maxfrag = 30.0
SELECT @Minfrag = 0.05
SET @COUNT =(SELECTCOUNT(*)FROM IndexFragList)
PRINT'COUNT.....'+CONVERT(VARCHAR(10), @COUNT)
IF @COUNT = 0
BEGIN
-- FILL INDEXES
INSERTINTO IndexFragList(DatabaseId, IndexId, ObjectID, IndexName, AvgFrag, TableName)
SELECT
a
.database_id, a.index_id, a.object_id, b.name, avg_fragmentation_in_percent avg_frag, t.name
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.Product'),NULL,NULL,NULL)AS a
JOINsys.indexesAS b ON a.object_id= b.object_idAND a.index_id = b.index_id
JOINsys.tablesas t ON a.object_id= t.object_id
AND avg_fragmentation_in_percent > @Minfrag
END
-- CUSTOMIZE THIS
-- IF CAN FILTER BY COMPANY, ETC
DECLARE indexes CURSORFOR
SELECT DatabaseID, IndexId, ObjectID, IndexName, IndexId, AvgFrag, TableName
FROM IndexFragList ORDER BY AvgFrag DESC
OPEN indexes
FETCHNEXTFROM indexes INTO
@DatabaseID
, @IndexId, @ObjectID, @IndexName, @IndexId, @AvgFrag, @TableName
WHILE@@FETCH_STATUS= 0
BEGIN
SET @Command='ALTER index ['+RTRIM(@IndexName)+'] ON ['+ @TableName +'] '
-- REBUILD INDEX
IF @AvgFrag > @Maxfrag BEGIN
SET @Command=@Command +' REBUILD'
EXEC(@Command)
END

-- REORGANIZE INDEX
ELSEIF(@AvgFrag > @Minfrag)AND(@AvgFrag > @Maxfrag)BEGIN
SET @Command=@Command +' REORGANIZE'
EXEC(@Command)
END

DELETEFROM IndexFragList
WHERECURRENTOF indexes

-- CUSTOMIZE THIS
-- YOU CAN BREAK BY HOURS, NUMBER OF INDEXES, ETC
BREAK;

FETCHNEXTFROM indexes INTO
@DatabaseID
, @IndexId, @ObjectID, @IndexName, @IndexId, @AvgFrag, @TableName
END
CLOSE
indexes
DEALLOCATE indexes



Источник: http://dynamicsuser.net/blogs/nunoma...l-indexes.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsusers: Making NAV use a certain index on SQL Server Blog bot DAX Blogs 0 21.08.2007 10:40
dynamicsusers: The Style Sheet Tool for Microsoft Dynamics NAV Blog bot DAX Blogs 2 05.07.2007 05:51
dynamicsusers: Dynamics NAV on Vista Blog bot DAX Blogs 0 28.05.2007 14:51
dynamicsusers: NAV SQL Tuning - Covering Indexes Blog bot DAX Blogs 0 27.04.2007 17:10
dynamicsusers: SQL and SharePoint we know, but what is PerformancePoint Blog bot DAX Blogs 0 18.03.2007 14:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:55.