Advertisement
tei219

Untitled

Jan 16th, 2012
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.27 KB | None | 0 0
  1. --dbcc showcontig with tableresults
  2. --dbcc showcontig with tableresults, all_indexes
  3.  
  4. set nocount on
  5.  
  6. declare @cmd varchar(256)
  7.  
  8. create table #dbreindex (
  9.     dbname sysname not null,
  10.     tablename sysname not null primary key,
  11.     [started] datetime default(getdate()),
  12.     altered datetime default(null),
  13.     logsize int default(null),
  14.     logsize2 int default(null)
  15. )
  16.  
  17. create table #dbcc_showcontig (
  18.     ObjectName  sysname,
  19.     ObjectId    int,
  20.     IndexName   sysname,
  21.     IndexId     smallint,
  22.     Level       smallint,
  23.     Pages       int,
  24.     Rows        int,
  25.     MinimumRecordSize   int,
  26.     MaximumRecordSize   int,
  27.     AverageRecordSize   float,
  28.     ForwardedRecords    int,
  29.     Extents int,
  30.     ExtentSwitches  int,
  31.     AverageFreeBytes    float,
  32.     AveragePageDensity  float,
  33.     ScanDensity float,
  34.     BestCount   int,
  35.     ActualCount int,
  36.     LogicalFragmentation    int,
  37.     ExtentFragmentation int
  38. )
  39. select top 1 * into #dbcc_showcontig_altered  from #dbcc_showcontig where 1 = 1
  40.  
  41. insert into #dbcc_showcontig exec ('dbcc showcontig with tableresults')
  42.  
  43. exec sp_MSforeachtable @command1 = '
  44.     print ''?''
  45.     declare @logsize int
  46.     declare @dbname sysname
  47.     set @dbname = db_name()
  48.     insert into #dbreindex (dbname, tablename ) values (@dbname, ''?'')
  49.     select @logsize = sum(size) from sysfiles where groupid = 0
  50.     update #dbreindex set logsize = @logsize where tablename = ''?'' and dbname = @dbname
  51.     --dbcc dbreindex(''?'','''',80)
  52.     begin try
  53.         alter index all on ? rebuild with(sort_in_tempdb = on, maxdop = 8)
  54.     end try
  55.     begin catch
  56.         print ''? のインデックス操作に失敗しました。''
  57.     end catch
  58.     update #dbreindex set altered = getdate() where tablename = ''?'' and dbname = @dbname
  59.     select @logsize = sum(size) from sysfiles where groupid = 0
  60.     update #dbreindex set logsize2 = @logsize where tablename = ''?'' and dbname = @dbname
  61. '
  62.  
  63. insert into #dbcc_showcontig_altered exec ('dbcc showcontig with tableresults')
  64.  
  65. set @cmd = 'backup log '+cast(db_name() as varchar)+' with truncate_only'
  66. exec (@cmd)
  67.  
  68. select datediff(ms, started, altered) as time_msec, (logsize2 - logsize) as growth, * from #dbreindex
  69. select datediff(s, min(started), max(altered)) as total_sec from #dbreindex
  70. select * from #dbcc_showcontig
  71. select * from #dbcc_showcontig_altered
  72.  
  73.  
  74.  
  75. drop table #dbreindex
  76. drop table #dbcc_showcontig
  77. drop table #dbcc_showcontig_altered
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement