0

データベースに不慣れで、各データベースを個別に調べる代わりに、サーバー上のすべての断片化されたインデックスを見つける方法を探していました。

4

1 に答える 1

1

1 つの方法は、コマンドをループで作成することです。

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += '
UNION ALL 
SELECT db = ''' + name + ''', * 
FROM sys.dm_db_index_physical_stats(' + RTRIM(database_id)
  + ', NULL, NULL, NULL, ''SAMPLED'') -- WHERE ...'
FROM sys.databases WHERE database_id > 4;

SET @sql = STUFF(@sql,1,14,'');

EXEC sp_executesql @sql;

しかし、その後、出力で何をしていますか? これを自動化するためのより良いソリューションがあります。たとえば、Ola Hallengren の無料のメンテナンス ソリューションMichelle Ufford (SQLFool) の無料のデフラグ スクリプト、新しいSQL Sentry Fragmentation Managerなどがあります。

免責事項: 私は SQL Sentry で働いています。

于 2012-07-25T12:51:40.073 に答える