Tôi đã đi kèm với giải pháp này, các công trình lớn:
create table dbo.IndexNames
(database_id int not null, object_id int not null, index_id int not null, index_name sysname not null)
go
create procedure dbo.GatherIndexNames
as
begin
declare @cur cursor
,@name varchar(128)
,@sql varchar(max)
truncate table dbo.IndexNames
set @cur = cursor for select name from sys.databases
where database_id >= 5
open @cur
fetch next from @cur into @name
while @@fetch_status = 0
begin
set @sql = '
insert into dbo.IndexNames
(database_id, object_id, index_id, index_name)
select db_id(''' + @name + '''),t.object_id, i.index_id, i.name
from [' + @name + '].[sys].[tables] t
inner join [' + @name + '].[sys].[indexes] i
on t.OBJECT_ID = i.object_id
where i.index_id <> 0'
exec (@sql)
fetch next from @cur into @name
end
Nguồn
2015-02-02 13:20:28
Hoặc, chỉ cần lấy logic này và thêm nó như là một tham gia vào truy vấn ban đầu –
Hãy nhận biết rằng sys.indexes i s cơ sở dữ liệu cụ thể. Trong câu hỏi trên, người dùng hiển thị truy vấn tới sys.dm_db_index_usage_stats và chỉ định database_id trong hàm OBJECT_NAME. Hàm này sẽ chỉ trả về kết quả cho cơ sở dữ liệu hiện đang mở. –