【发布时间】:2018-03-13 11:18:43
【问题描述】:
我有一个使用 100% 的 CPU 的 SQL Server 数据库。我已经运行了以下脚本
Select
r.session_id,
s.text,
r.[status],
r.blocking_session_id,
r.cpu_time,
r.total_elapsed_time
from sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s
结果得到了这个:
我在 Internet 上搜索了与 [Project1].[ot_id] AS [ot_id] 相关的任何内容,但除了 SQL Server Bug 站点之外没有找到任何匹配的内容,这表明代码存在问题并且早在 2013 年就修复了这个错误,但我最大的问题是我不知道是什么代码导致了这个问题,而且公司目前没有雇用 DBA。我是一名试图理解 SQL 的二线工程师,所以如果你能帮助尽量保持通俗易懂的术语,请帮忙
【问题讨论】:
-
您的问题是什么?该代码似乎正在执行您的查询所建议的操作。也许您应该问另一个问题并解释您要完成的工作。
-
我试图了解 Project1 是什么以及为什么它耗尽了我所有的 CPU 导致我的服务器几乎无法运行,我从我所读到的内容中知道 status:suspended 意味着它正在等待资源但是有什么方法可以让我知道 Project1 到底是什么?
-
Project1是一个表 - 它没有使用你的 CPU。从该表中检索数据的 查询 使用您的 CPU。调试此问题的唯一方法是分析查询,而不是查看一些屏幕截图。 -
好的,那么 Project1 表将驻留在哪里,我使用 Sql Management Studio 并扩展我的数据库,扩展表并获取 dbo 列表。
但它们都没有名称 Project1 和我的System Tables 和 FileTables 都是空容器? -
Project1 可能不是表的名称,而是表的别名。在屏幕截图的“文本”列的右侧,SQL 命令应包含“... FROM xyz as Project1 WHERE ...”,其中“xyz”是表的真实名称。
标签: sql sql-server-2012