set nocount on go declare @drive char(1) declare @DOScmd varchar(128) create table #drivelist(drive char(1), MBFree bigint) create table #datafiles(fileloc varchar(256)) insert into #drivelist exec ('xp_fixeddrives') declare c_lus cursor for select drive from #drivelist open c_lus fetch next from c_lus into @drive while @@fetch_status = 0 begin set @DOSCmd = 'dir "' + @drive + ':\*.mdf" /s/b' insert into #datafiles exec xp_cmdshell @DOSCmd set @DOSCmd = 'dir "' + @drive + ':\*.ndf" /s/b' insert into #datafiles exec xp_cmdshell @DOSCmd set @DOSCmd = 'dir "' + @drive + ':\*.ldf" /s/b' insert into #datafiles exec xp_cmdshell @DOSCmd fetch next from c_lus into @drive end close c_lus deallocate c_lus delete from #datafiles where fileloc like '%\RECYCLER\%' delete from #datafiles where fileloc like '%mssqlsystemresource%' select fileloc from #datafiles except select physical_name from master.sys.master_files order by 1 drop table #datafiles drop table #drivelist