On a very-large database I wanted to check each filegroup for corruption with real-time feedback. That is, I did not want to just set a loop going and wait indefinately for the results. Also I did not want info-messages.
The semi-automatic query I wrote (below) runs CheckFileGroup against the smallest filegroup and stops. Then when manually re-run (in the same SSMS session) checks the next smallest filegroup etc.
Then at the end of the day I would know where it was upto.
-- checkfilegroups_vldb.sql
-- use current (snapshot?)
-- create table of filegroup names and sizes
begin try
select fg.name, sum(df.size/128) mb
into #tables
from sys.filegroups fg
join sys.database_files df on fg.data_space_id = df.data_space_id
group by fg.name
order by mb, name
select '[F5] to Start'
end try
--check each filegroup starting with smallest
begin catch
select * from #tables
declare @sql varchar(100)
select top 1 @sql = 'dbcc checkfilegroup (''' + name + ''') with all_errormsgs, no_infomsgs;' from #tables order by mb, name
select(@sql)
exec(@sql)
delete from #tables where name = (select top 1 name from #tables order by mb, name)
if (select count(*) from #tables) = 0
begin
drop table #tables
select 'Complete'
end
end catch