1
我發現這個腳本給了你未使用的索引,但是它只能運行在每個數據庫上,它是如何通過所有數據庫運行的在服務器我發現這個腳本只通過當前數據庫並且識別未使用的索引,但是我想要遍歷所有數據庫
SELECT o.name ,
indexname = i.name ,
i.index_id ,
reads = user_seeks + user_scans + user_lookups ,
writes = user_updates ,
rows = (SELECT SUM(p.rows)
FROM sys.partitions p
WHERE p.index_id = s.index_id
AND s.object_id = p.object_id
) ,
CASE WHEN s.user_updates < 1 THEN 100
ELSE 1.00 * (s.user_seeks + s.user_scans + s.user_lookups)
/s.user_updates
END AS reads_per_write ,
'DROP INDEX ' + QUOTENAME(i.name) + ' ON ' + QUOTENAME(c.name) + '.'
+ QUOTENAME(OBJECT_NAME(s.object_id)) AS 'drop statement'
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.index_id = s.index_id
AND s.object_id = i.object_id
INNER JOIN sys.objects o ON s.object_id = o.object_id
INNER JOIN sys.schemas c ON o.schema_id = c.schema_id
WHERE OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
AND s.database_id = DB_ID()
AND i.type_desc = 'nonclustered'
AND i.is_primary_key = 0
AND i.is_unique_constraint = 0
AND (SELECT SUM(p.rows)
FROM sys.partitions p
WHERE p.index_id = s.index_id
AND s.object_id = p.object_id
) > 10000
ORDER BY reads_per_write ASC;
謝謝您的幫助。我的計劃是建立在主數據庫中的作業,我可以通過所有的數據庫 – ALE
我跑卸妝AND s.database_id = DB_ID()如你所建議,但仍然是相同的結果 – ALE
你有權訪問其他數據庫?或者您使用的憑據? –