SQL Server 2005-调查导致tempdb增长的原因

时间:2013-02-28 08:42:22

标签: sql-server tempdb

我的实例的tempdb变大了占用所有可用磁盘空间并导致应用程序崩溃。不得不在紧急情况下重启实例。但是,我想深入调查并深入了解导致临时数据库突然变大的原因。什么是查询,进程产生了这个?有人可以帮助我提取所需的信息。我知道我不会从SQL serevr获得大量历史数据。我确实部署了Idera SQL诊断管理器(第三方工具)。任何帮助使用该工具都将非常感激。

4 个答案:

答案 0 :(得分:3)

对于事后分析,您可以使用服务器上已安装的工具。对于将来的主动分析,您可以直接在SQL事件探查器中使用SQL跟踪,或使用SQL语句查询跟踪。

sys.fn_trace_gettable

sys.trace_events

您还可以使用审核工具来跟踪SQL Server实例和数据库上发生的每个事件,例如ApexSQL Comply。它还使用SQL跟踪,自动配置它们,并处理捕获的信息。它跟踪对象和数据的访问和更改,失败和成功登录,安全性更改等.ApexSQL Comply将所有捕获的信息加载到集中式存储库中。

enter image description here

答案 1 :(得分:2)

有几个原因可能导致你的tempdb变得非常大。

大量排序 - 如果这需要比sql server更多的内存,那么它会将所有临时结果存储在tempdb中

DBCC命令 - 如果您经常运行DBCC CheckDB等命令,则可能是原因。这些函数将其结果存储在temp db

非常大的结果集 - 这些也使用临时数据库正常运行

许多繁重的交易,例如批量插入

查看此文章,了解有关如何解决此问题的详细信息http://msdn.microsoft.com/en-us/library/ms176029.aspx

答案 2 :(得分:1)

AK2, 我们也有Idera DM工具。如果您知道tempdb被大量使用的时间周期,您可以在Idera工具上查看历史记录以查看当时正在运行的查询以及导致服务器软管的原因...在“Tempdb Space used OverTime”上“你通常会看到一条直线或一个图形,但在大量使用tempdb的时候,有一个长矛和一个直线下降。参考此时间范围,您可以查看会话>详细信息,也可以查看确切的查询以及运行查询的人员。

在我们的服务器中,这通常发生在长时间查询进行大量连接时。或者当有一个昂贵的查询涉及转储到临时表/表变量时。 希望这会有所帮助。

答案 3 :(得分:0)

您可以使用SQL Profiler。请尝试以下链接

Sql Profiler