2010-11-28 4 views
0

Как оптимизация производительности, я индексировал перестройку базы данных.экспорт результата работы агента sql в файл .csv

Я использовал ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor).

Я хотел бы назначить это как работу агента.

Теперь мое требование как:

  1. Мне нужно экспортировать статистику индекса в CSV файла перед восстановлением индексировать

  2. перестроить индекс

  3. статистику экспорта индекса в CSV-файл после того, как восстановительный индекс.

Я просмотрел сценарий перестроения индекса в задании агента, и я вручную выполнил запрос статистики индекса, чтобы увидеть статус до и после задания агента.

как мне нужно автоматизировать процесс

  1. Статистика индекса перед восстановлением
  2. восстановления
  3. статистики после rebuiling.

Я использую этот скрипт для статистики.

DECLARE @DATABASE VARCHAR(10)= 'AdventureWorksDW2008' SELECT OBJECT_NAME(IPS.OBJECT_ID) AS [TABLENAME], SI.NAME AS [INDEXNAME], IPS.INDEX_TYPE_DESC, IPS.AVG_FRAGMENTATION_IN_PERCENT, IPS.AVG_FRAGMENT_SIZE_IN_PAGES, IPS.AVG_PAGE_SPACE_USED_IN_PERCENT, IPS.RECORD_COUNT, IPS.GHOST_RECORD_COUNT, IPS.FRAGMENT_COUNT, IPS.AVG_FRAGMENT_SIZE_IN_PAGES FROM SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(N''+ @DATABASE +''), NULL, NULL, NULL , 'DETAILED') IPS JOIN SYS.TABLES ST WITH (NOLOCK) ON IPS.OBJECT_ID = ST.OBJECT_ID JOIN SYS.INDEXES SI WITH (NOLOCK) ON IPS.OBJECT_ID = SI.OBJECT_ID AND IPS.INDEX_ID = SI.INDEX_ID WHERE ST.IS_MS_SHIPPED = 0 ORDER BY 1,5

и для восстановления.

ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor). 

благодаря Правдин

ответ

1

Хм, если вы кладете сценарий SQL в процедурный называется sp_IndexStats вы могли бы написать второй процедурный, который выглядит примерно так:

EXEC master..xp_cmdshell 'osql.exe -S YourServerName -U sa -P yourpassword -Q "EXEC  sp_IndexStats" -o "C:\mypath\IndexBefore.csv"' 
GO 
ALTER TABLE ALL ON @table REBUILD WITH (FILLFACTOR = @fillfactor) 
GO 
EXEC master..xp_cmdshell 'osql.exe -S YourServerName -U sa -P yourpassword -Q "EXEC sp_IndexStats" -o "C:\mypath\IndexAfter.csv"' 
+0

Спасибо, я создал один пакет SSIS изменен, и он решил проблему, но ваше решение намного проще, чем то, что я реализовал, однако в подходе нет проблемы с производительностью, но ваш подход вдохновил меня. благодаря – prav 2010-11-29 03:54:25

Смежные вопросы