T+账套库物理文件mdf文件一直增大如何解决
【问题现象】
客户的业务数据不是很大,但是物理文件mdf文件每天都是几个G几个G的往上增长,这样导致客户的磁盘空间不足,实际没有那么大的数据,如下图所示
【解决方案】
注意:按照下面的方案操作之前备份好数据
对这个有问题的账套库执行下面的语句:
SELECT
db_name() as DbName,
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS 总共占用空间MB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 0
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
总共占用空间MB desc
如果查询到是Eap_OpenAPILog占用磁盘空间最大,则是因为做了二开引起的,默认该日志保存时间为15天,
1、可以执行语句清除这个表的日志记录:
truncate table Eap_OpenAPILog
2、执行了清除的语句以后再执行下面的语句收缩一下原来占用的空间,将语句中的数据库名称改为这个T+的账套库的数据库名称,再去执行
USE [数据库名称]
GO
DBCC SHRINKFILE (N'MsSql' , 0, TRUNCATEONLY)
GO
3、然后再修改该日志后续保存多少天数
修改的方法如下:
方法一:在账套库中执行:update EAP_AccInformation set Value=1 where name like '%OpenApiLogHoldDays%'
修改默认保留天数为1天
方法二:修改server.xml为不保留该日志。在安装目录:
D:\Chanjet\TPlusStd\Appserver\config中找到server.xml,修改最后一项为: <!---openapi日志级别,1:记录日志,2:不记录日志--><apiloglevel>2</apiloglevel> 修改完成后,重启服务即可生效
作者:温星 |  时间:2024年05月30日 17:04

