在Server 2005中,reportservertempdb块数据表在gbs中增长过快。想知道为什么吗?我们每天都在截断它,但它还是长得太多了。数据库处于简单模式。需要澄清为什么它会增长这么多。
发布于 2018-02-12 07:41:59
最重要的是,面对同样的问题:报表服务器tempdb增长非常快,最好安排一个清除块表的作业(如果需要可以添加所需的表),并确保预定的时间在服务器上负载很轻(让我们每8或12小时开始一次)。
请尝试使用下面的查询来调度作业:
DECLARE @RowCount INT
SET @RowCount = ( SELECT COUNT(1)
FROM Segment WITH ( NOLOCK )
)
WHILE ( @RowCount > 0 )
BEGIN
DELETE TOP ( 1000 )
FROM Segment
SET @RowCount = ( SELECT COUNT(1)
FROM Segment WITH ( NOLOCK )
)
PRINT @RowCount
END然后截断表和收缩文件(数据和日志文件)
TRUNCATE TABLE Table_name-将截断表、数据和日志文件缩小到指定的目标大小(1MB)。
DBCC SHRINKFILE (TempDB', 1)
GO
DBCC SHRINKFILE (TempDB_log', 1)
GO表的显著增长可能由于以下原因而发生:
由于这个问题,随着时间的推移,它留下了许多孤立的快照,从而导致了数据库的增长。
可以使用以下查询获取对ReportServerTempDB贡献最大的报告:
--Reports that are largest contributors to ReportServerTempDB size through tables Segment, ChunkSegmentMapping, SegmentedChunk and SessionData:
SELECT
sd.ReportPath,
COUNT(s.SegmentId) as CountOfSegmentId
FROM
[ReportServerTempDB].dbo.Segment s
INNER JOIN
[ReportServerTempDB].dbo.ChunkSegmentMapping m
ON
m.SegmentId = s.SegmentId
INNER JOIN
[ReportServerTempDB].dbo.SegmentedChunk c
ON
c.ChunkId = m.ChunkId
INNER JOIN
[ReportServerTempDB].dbo.SessionData sd
ON
sd.SnapshotDataID = c.SnapshotDataId
GROUP BY
sd.ReportPath
ORDER BY
CountOfSegmentId DESC;注意:
确保temp DB是简单的恢复模型。
https://dba.stackexchange.com/questions/197648
复制相似问题