电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

临时表堆积未按时清理处理方案

来源:金蝶云社区作者:金蝶2024-09-2335

临时表堆积未按时清理处理方案

【问题描述】

由于星空的定期执行计划中,清理临时表的执行计划未能正常执行,或现场修改为1天执行一次,导致临时表堆积的情况发生。


【解决方案】

请尝试下列操作来解决:

SQLServer执行脚本:

--第一步:删除登记表中的可删除的临时表登记记录,标识FPROCESSTYPE等于1,说明是可以删除的,另外生成了超过24小时的,我们也认为是可以做清理的。


delete from T_BAS_TEMPORARYTABLENAME where FPROCESSTYPE=1 or FCREATEDATE<DATEADD(hh,-24, GETDATE())


--第二步:删除临时表,每次删除50个临时表释放一次资源,可在业务相对空闲的时候,直接执行语句

if object_id('temptb','table')>0 drop table temptb;

 declare @sql varchar(max)

 declare @icount int

 declare @I int

 set @sql='drop table '

 set @i=1

 select name,IDENTITY(int,1,1) id into temptb from sys.tables t where name like 'tmp%' and len(name)=30 and name not like 'tmp[_]%' 

 and not exists(select 1 from T_BAS_TEMPORARYTABLENAME where FTABLENAME=t.name) and create_date<=DATEADD(hh,-24, GETDATE())

 select @icount=@@ROWCOUNT

 while @i<@icount

 begin

   select @sql=@sql+name+',' from temptb where id between @i and @i+49

   if @@ROWCOUNT>0

       set @sql=substring(@sql,1,len(@sql)-1)+';'

   set @i=@i+50

   exec(@sql)

   set @sql='drop table '

 end

 if object_id('temptb','table')>0 drop table temptb;



另外,查询临时表数量的脚本如下:

select count(*) from T_BAS_TEMPORARYTABLENAME where FPROCESSTYPE=1 or FCREATEDATE<DATEADD(hh,-24, GETDATE())

select count(*) from T_BAS_TEMPORARYTABLENAME 

selec

临时表堆积未按时清理处理方案

【问题描述】由于星空的定期执行计划中,清理临时表的执行计划未能正常执行,或现场修改为1天执行一次,导致临时表堆积的情况发生。【解决...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信