来源:
赛迪网
作者:
若水
2008-03-29/13:37
--
{q}x;< -- ArrangeDB.SQL 重整数据库
&f1n]m+ --
C;} -- CopyRights @2003.12.29 Digital China Management System Co., Ltd.
q)"8D z_|Z --
'2 x+ph -- 重整流程:把所有用户表增加 clustered 索引,这样SQLSERVER会重整表,然后
9%7*~bW_ --再删除索引
c^/V*A'qG[ --
'n gn -- 使用时机:日常维护,建议每周做一次重整。
6+q ]l+ --
pc kI -- 注意事项:做完后请做数据库收缩,更新统计,重新索引,及完整性检查
^BHPb1oT b~KsX(] --drop table #dcms_index_info
GTM`@ --要用到的临时表
:PFTl; create table #dcms_index_info
hK%o6mx3^ (
`I2dE\!M index_name sysname,
=7rW2#tE index_description varchar(210),
0GmV,y+_5 index_keys varchar(2078)
dHlXe@Rw"g )
ne%c'-P*_ Y'Pn m --设置环境
p)Q!!/K6 set NOCOUNT ON
.$=\,30w --程序开始:变量
+ZVuE o declare @sql varchar(500)
{R 4t?if declare @TableName varchar(20)
5*l1W3DhW declare @ErrorSave int
RTY/078 T\?V|[bd --用所有的用户表处理
-|%D!? declare Cursor1 Cursor
?>Xd<QM for
O+6x)+, select name from sysobjects where xtype='U' order by name
p^7?TOpX) P)RB]}ij open Cursor1
VR2h)G:M^ fetch next from Cursor1 into @TableName
<`,: ," 6QN&cvF` while @@fetch_status = 0
<`bJM]D-/ begin
}(H&>f1z --为了检测表中是不是有CREATE_DATE这个列,易飞的表中都有,如果没有就跳过,不过处理
HzD)7{ --应该还有更好的方法,我暂时这样用了。不想用sp_columns因为不想建表,慢就慢点吧
w,V>TN0 if COLUMNPROPERTY(OBJECT_ID(@TableName),'CREATE_DATE','PRECISION') is not null
MuQPg:j begin
Ax#6>^JI print 'process table ' + @TableName
Hsfwfd-5 K]y1A'v --取得当前表的索引信息
?~H(wkGzL delete #dcms_index_info
T;qg@B?fa set @sql = ' sp_helpindex ''' + @TableName + ''' '
3n7@ 2! insert into #dcms_index_info exec (@sql)
nN/bK`@^ H7&W`nC^ --查找是不是已经有聚簇索引(clustered),如果已经有了就不做,在易飞中有clustered索引是少数
ex zx select index_name from #dcms_index_info where index_description like 'clustered%'
xHiNMW N@pIp! if @@ROWCOUNT = 0
[sT]a]X"- begin
;mG_W set @sql = ' create clustered index DcTempIndex001 on ' + @TableName + ' ( CREATE_DATE ) '
q[}qK exec (@sql)
l< drk}ES d/$`t 9n set @sql = ' DROP index ' + @TableName + '.DcTempIndex001 '
DGsf}6 B1 exec (@sql)
6AACVdy" #p#分页标题#e# end
*@{)3]>M@ end
rGv5W5. X|.p`y; fetch next from Cursor1 into @TableName
Pd+&9w_ ( end
wYqB Xi} "U-Xe drop table #dcms_index_info
" _$1Vdff close Cursor1
j<AOltu deallocate Cursor1
>5^s_1#i fTIWwX[P {<t>MIE% gail=HA2