6

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

4

4 回答 4

3

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

sys.fn_trace_gettable

sys.trace_events

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

在此处输入图像描述

于 2014-07-30T21:28:15.280 回答
2

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

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

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

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

许多繁重的事务,例如批量插入

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

于 2013-02-28T12:02:23.393 回答
1

AK2,我们也有 Idera DM 工具。如果您知道您的 tempdb 被大量使用的时间范围,您可以转到 Idera 工具上的 History 以查看当时正在运行的查询以及导致服务器出现问题的原因...在“Tempdb Space used OverTime “您通常会看到一条直线或图表,但在大量使用 tempdb 时,会出现一条直线或一条直线。参考这个时间范围,您可以查看“会话”>“详细信息”,也可以查看确切的查询以及运行查询的人员。

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

于 2014-02-17T21:15:08.483 回答
0

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

Sql 探查器

于 2014-03-07T09:29:54.733 回答