SQLServer tempDB无限增长

时间:2008-09-17 22:34:25

标签: sql-server database

我们有几个“生产环境”(每个服务器有三个服务器,系统版本相同。每个服务器都有一个SQL Server数据库作为生产数据库)。

在其中一个环境中, tempdb 事务日志开始快速无限地增长,我们无法找到原因。相同版本的SO,SQL Server,应用程序。没有环境变化。

有人知道如何解决发生这种问题的方法吗?

4 个答案:

答案 0 :(得分:2)

您可能处于完全恢复模式模式 - 如果您正在进行常规备份,则可以将其更改为简单,并且在备份后将减小日志的大小。

这是some more info

答案 1 :(得分:1)

您是否尝试过运行Profiler?这将允许您查看服务器上的所有正在运行的查询。这可以让您深入了解在tempdb中创建项目的内容。

答案 2 :(得分:0)

最好的办法是启动SQL Server Profiler,看看发生了什么。在“Writes”列或Spool运算符中查找高值,这些都可能导致高温使用。

如果只是事务日志增长,那么试试这个,打开事务可以防止日志随着时间的推移而缩小。这应该在tempdb中运行:

DBCC OPENTRAN

答案 3 :(得分:0)

好吧,我认为这个问题跟我的一样。 tempdb快速增长。常见的原因是程序员创建过程,并使用临时表。 当我们创建这些表或其他操作时,比如trigger,dbcc命令,它们都使用tempdb。 创建临时表,sqlserver将为表分配空间,如GAM,SGAM或IAM,但sqlserver必须确保物理一致性,所以每次只能有一个人做,其他对象必须等待。这导致tempdb快速增长。 我找到了MS的sovlution,就像那样,希望可以帮到你: 1.为tempdb创建数据文件,数量与CPU相同,ec:你的主机有16cpu,你需要为tempdb创建16个日期文件。并且每个文件必须具有相同的大小。 2.你需要监控这些文件,确保它们没有满。 3.如果这些文件空间不够大,那么会自动增长,你需要把其他文件放大。

我的英语不好,如果你无法解决它,请使用sp_helpfile程序,检查它。并将结果粘贴到此处。 当我在新加坡时,我发现了这种情况。 祝你好运。