U8临时表删除

Posted Hello World,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U8临时表删除相关的知识,希望对你有一定的参考价值。

用友U8在使用过程中会产生大量临时表,导致数据库中的多数空间都是临时数据,据说有补丁可以解决问题,但没有找到。

根据分析,临时表的表名通过由Tmp_ 、UFTmpTable以及TMPUF_开头,而且表名都比较长,多数超过20个字符。以此为条件将表名查询出来,拼接SQL语句进行删除即可。

DECLARE @name VARCHAR(100);
DECLARE @sql VARCHAR(200), @i INT;
SET @i = 1;
DECLARE cur CURSOR FOR
    SELECT      name
    FROM        sysobjects
    WHERE       xtype = 'u' AND (name LIKE 'Tmp_%' OR   name LIKE 'UFTmpTable%' OR  name LIKE 'TMPUF_%') AND LEN(name) > 20
    ORDER BY    name;
OPEN cur;
FETCH NEXT FROM cur
INTO @name;
WHILE @@fetch_status = 0
    BEGIN
        IF LEFT(@name, 10) = 'UFTmpTable' OR LEFT(@name, 4) = 'Tmp_' OR LEFT(@name, 6) = 'TMPUF_'
            BEGIN
                SET @sql = 'drop table ' + @name;
                EXECUTE (@sql);
                PRINT '第' + RIGHT('000' + CONVERT(NVARCHAR(5), @i), 4) + '个表:' + @name + ' 已经删除';
                SET @i = @i + 1;
            END;
        FETCH NEXT FROM cur
        INTO @name;
    END;
CLOSE cur;
DEALLOCATE cur;

 

以上是关于U8临时表删除的主要内容,如果未能解决你的问题,请参考以下文章

用友u8库龄分析表还原列宽

临时表,临时表什么时候删除

MySQL 临时表:创建删除语法剖析

删除实例的所有临时表

删除临时表

在 SQL Developer 中删除临时表