T-SQL重建所有数据库的所有表的索引

DECLARE @Database VARCHAR(255)
DECLARE @Sqlcmd VARCHAR(1000)
DECLARE	@Test BIT

SET @Test = 1

DECLARE DatabaseCursor CURSOR FORWARD_ONLY READ_ONLY 
FOR
SELECT  name FROM master.dbo.sysdatabases 
WHERE
 NAME NOT IN ('master','model','msdb','tempdb','distrbution','ReportServer','ReportServerTempDB')

OPEN DatabaseCursor 
FETCH  NEXT FROM DatabaseCursor INTO @Database 

WHILE @@FETCH_STATUS = 0 
BEGIN
 SET @Sqlcmd=' USE '+ @Database +';
	IF EXISTS	(SELECT 1
				 FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, ''DETAILED'') indexstats
				 WHERE indexstats.avg_fragmentation_in_percent > 25
				)
	BEGIN
		EXEC sp_MSforeachtable @command1= ''ALTER INDEX ALL ON ? REBUILD'' 
	'
	+
	'	PRINT ''indexes rebuild successfully on database '+ @Database + 
	'!''
	END
'

	IF @Test = 1
	BEGIN
		SELECT @Sqlcmd
	END
	ELSE
	BEGIN
		EXEC (@Sqlcmd)
	END
	
	FETCH NEXT FROM DatabaseCursor INTO @Database 
END
CLOSE DatabaseCursor 
DEALLOCATE DatabaseCursor 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值