清除临时表和重建索引

。_饼干妹妹 提交于 2019-12-05 02:21:22

--清除临时表

use AISXXXXX
go
declare @sql varchar(max)
set @sql='';

with t as
(select name from sys.tables where create_date<getdate() and (name like 'tm[^_]%' or name like 'GL[^_]%') )
delete from t1 from T_BAS_TEMPORARYTABLENAME t1
join t on t1.FTABLENAME=t.name;

with t1 as
(select name from sys.tables where create_date<getdate() and (name like 'tm[^_]%' or name like 'GL[^_]%'))
select @sql=@sql+'drop table '+name+char(13)
from t1;
exec(@sql)

--重建索引

use AISXXXXX
GO
declare @ftablename varchar(255),@findexname varchar(255)
declare auth_cur cursor for
SELECT distinct object_name(a.object_id) AS TB
FROM sys.dm_db_index_physical_stats ( DB_ID() , NULL , NULL, NULL, NULL ) AS a JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
where avg_fragmentation_in_percent>10 AND object_name(a.object_id)<>'' AND name<>'' AND object_name(a.object_id) NOT LIKE 'TMP%' and object_name(a.object_id) not like 'GL%'

open auth_cur
fetch next from auth_cur into @ftablename
while (@@fetch_status=0)
begin
EXEC('ALTER INDEX ALL ON [dbo].['+@ftablename+'] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)')
fetch next from auth_cur into @ftablename
end
close auth_cur
deallocate auth_cur
GO

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!