I forget where I picked this up from, but this will give you a relative look at how much each file is being used. I would not advise running this every 15 seconds or anything, but I have not examined its impact on performance. It would certainly have an effect on tempdb usage, if you scheduled it, though ;-).set nocount onif exists (select * from tempdb..sysobjects where name like '#tempfilestats%')drop table #tempfilestatsgocreate table #tempfilestats(dbid smallint, fileid smallint, timestamp int, numberreads bigint, numberwrites bigint, bytesread bigint, byteswritten bigint, iostallms bigint, groupid int) declare filecurs cursor for select dbid, fileid, groupid from master..sysaltfilesdeclare @dbid intdeclare @fileid intdeclare @groupid intopen filecurs fetch next from filecurs into @dbid, @fileid, @groupidwhile @@fetch_status = 0 begin insert into #tempfilestats select *, @groupid from ::fn_virtualfilestats(@dbid, @fileid) fetch next from filecurs into @dbid, @fileid, @groupid endclose filecursdeallocate filecursselect iostallms, (numberreads + numberwrites) as "I/O's", iostallms/(numberreads + numberwrites) as "Stall time per I/O", fileid, numberwrites*100.0/(numberreads + numberwrites) as "Write Percent", db_name(dbid)from #tempfilestatsorder by 2 desc