问题标签 [sp-who2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
27929 浏览

sql-server - sp_who2 BlkBy Sleeping Process Awaiting 命令

运行 sp_who2 时,我的一条 SQL 命令似乎正在阻塞,但正在等待“睡眠”和“等待命令”的进程。这没有任何意义。

替代文字

有什么想法可能导致这种情况吗?我知道 DELETE 正在一个事务中运行,该事务以前在表中插入了很多行,这可能是问题吗?

0 投票
2 回答
355 浏览

sql-server - 在 WPF 数据网格中显示 sp_who2 的输出

我希望在 WPF 数据网格中显示 SQL Server 命令“sp_who2 active”的输出。我想出了以下代码 -

它执行正常,但实际上显示列“RowError”、“RowState”等,而不是 sp_who2 的输出。

任何人都知道如何做我想要完成的事情?

0 投票
1 回答
7006 浏览

sql-server - VB.Net SQLClient 连接和 SQL Server - 活动连接反映即使全部关闭

使用 VB.Net 和 SQL Server 2008 R2:

我最近有一个数据库,它使用 sp_who2 反映了一个连接“.Net SqlClient 数据提供程序”仍然处于活动状态,即使 .Net 应用程序已关闭并处理了所有连接。

代码如下所示:

导入 System.Data.SqlClient

当我在运行应用程序后查看 SQL Server 使用 sp_who2 时(查看粗体的 .NetSQLClientDataProvider)

SPID 状态 Login HostName BlkBy DBName Command CPUTime DiskIO LastBatch ProgramName SPID REQUESTID

57 睡着你的电脑。主等待命令 0 0 07/19 12:38:48 * .Net SqlClient 数据提供者* 57 0

只有当我真正关闭应用程序时,.Net SQLClient 数据连接才会从视图中删除。我关心的是以下几点: 1. 从资源的角度来看,这些进程对我的数据库有什么影响,为什么连接会被反射和休眠。2. 当我尝试分离数据库时,我发现 1 个连接处于活动状态,但代码已关闭并处理。

0 投票
2 回答
8835 浏览

sql - SP_WHO2 有条件的?

我有一个长时间运行的插入,当我运行 SP_WHO2 时,它会定期显示“CONDITIONAL”作为命令。那说明什么?当我搜索这个时,我发现大多数事情都在说,“是的,当你有一个长时间运行的查询时,你会看到......”它表明数据库中正在发生什么?

0 投票
1 回答
2578 浏览

sql-server - 为什么“SELECT 1 from”会在另一个执行 DELETE 的进程上导致 LCK_M_IX

我有一张列出 Patient_clinic_visits 的表格。我有 SQLSERVER 2005 后端。Access2010 前端。

每天早上,该表都需要从医院大型机的数据转储中刷新。

此数据转储包括前一天的信息(谁参加、没有参加、取消)和未来 6 周的预约。

因此,我在 Patient_clinic_visits where Visit_Date > (a day) and < (a day + 1) 中执行“DELETE *”,以便在经过一些处理后上传新数据之前依次清理每天的表格。

在大多数日子里,每天只有大约 100-150 条记录。它们是 Master_Patient_Table 中 Pat_ID 的一个外键,上面有 NO_ACTION 链。

目前,在处理了几天的数据后,此 Delete 查询在 Access 前端超时(即周一、周二、周三......)

我运行 sp_whoisactive 并得到:

00 01:53:01.926 52 [[query SELECT 1 FROM "dbo"."Patient_Clinic_Visits"]] RAHCC_User (265ms)ASYNC_NETWORK_IO 0 0 0 NULL 51 0 0 2 暂停 0 NULL SAH0020663 RAHCC_DB Microsoft MDB RAHCC 2013-04-02 09: 08:33.027 0 2013-04-02 11:01:35.033

00 00:00:27.610 53 [[查询 -- 从 Patient_Clinic_Visits 中删除诊所日期 >= '26-Mar-2013' AND Clinic_date < '27-Mar-2013' AND Clinic_location = 'MONC' ]] HAD\jhogan05 (27596ms) LCK_M_IX 16 0 0 52 1,074 0 0 130 暂停 ​​2 NULL SAH0048645 RAHCC_DB Microsoft SQL Server Management Studio Express - 查询 2013-04-02 11:01:07.343 0 2013-04-02 11:01:35.033

这表明我的客户端前端正在等待“来自 Patient_Clinic_Vists 的 SELECT 1”,这会阻止该过程。显然这是由于客户端上的 ASYNC_NETWORK_IO (这可能发生在 Access 前端执行表请求然后不处理数据时)。

a)但是“从 Patient_Clinic_Visits 中选择 1”实际上应该只返回 TRUE 或 FALSE ?这不太可能填满任何东西,并且不清楚为什么会导致阻塞情况?

b) 我在 Access 前端的任何地方都找不到“SELECT 1 ...”。这可能是 SQLSERVER 为响应更复杂的选择而做出的一系列子选择的一部分吗?如果是这样,我如何在该进程历史记录中找到导致这种情况的真正选择?

干杯,

乔恩高清


a) 查询“从 Patient_Clinic_Visits 中选择 1”将返回空结果集(如果 Patient_Clinic_Visits 表为空)或包含与 Patient_Clinic_Visits 表一样多的行的结果集,每行中都有一个 1。为此,SQL Server 必须针对整个 Patient_Clinic_Visits 表发出查询,这(假设默认锁定行为)将导致共享(读取)锁成为针对该表中的行的问题。

b) (注意:OP 在评论中提到了这一点)我可能遗漏了一些东西,但我看不出你在哪里提出了基于 sp_whosactive 的“从 Patient_Clinic_Vists 中选择 1”查询。了解从应用程序发送到数据库服务器的 SQL 的最佳方式可能是使用带有适当过滤器的 SQL Profiler(可能仅过滤来自运行应用程序的主机的连接)。

0 投票
1 回答
907 浏览

sql - EXEC sp_who2 LastBatch 显示未来日期

当我EXEC sp_who2在 SQL Server 上运行时,我在 LastBatch 列中收到未来的日期。

例如,大多数 SPID 将 5/14 作为 LastBatch 日期。(这意味着 2014 年)

我的前 20 行将 04/28 作为 LastBatch 日期。(这意味着 2028)

知道为什么我会在本专栏中看到未来的日期吗?

正常吗?

0 投票
1 回答
720 浏览

sql - SQL Server CPU 使用率

如何在 SQL Server 中使用 SQL Query查找 CPU使用率空闲、用户、系统、IO进行分析

0 投票
0 回答
225 浏览

sql-server - SQL Server `sp_who2` 过程显示休眠连接的长锁

我正在运行 Azure SQL Server,并且使用它的 WebApi 应用程序存在一些问题。在高负载下的某个时刻,应用程序开始创建大量连接并sp_who2显示我有几个长锁。在跟踪锁链之后,我可以看到罪魁祸首是一个sleeping目前不执行任何操作的连接(状态 = 'sleeping' 和 BlkBy = '.')。

在此处输入图像描述

当我对 WebApi 进程进行内存转储时,我可以看到它们中的大多数都有以下调用堆栈:

所有阻塞/阻塞会话都是定期更新,速度非常快,不会延迟来自客户端的数据库调用。我正在使用 EF6 和using(var db = new DB()) {...}每个 db 调用。

阻塞其他人的睡眠连接可能有什么问题?如何调试问题?

0 投票
1 回答
311 浏览

sql-server - 连接到 SQL Server 数据库的服务器/客户端的历史记录

SQL Server 中是否有一种方法可以查看所有连接的服务器/客户端的历史记录及其受尊重的主机名、IP 地址和上次连接日期?

基本上我想要的是sp_who2存储过程的历史表。

默认情况下是否存在此或类似内容,以便我可以检索上述信息?

0 投票
0 回答
130 浏览

sql-server - 删除语句永远运行

我在尝试从表中删除一组记录时遇到问题。当我运行 delete 语句时,它最终会锁定表,从而阻止该表上的所有其他操作。只有使用 NoLock 提示,我才能从表中查看结果集。也使用“SP_WHO2”进行了检查,但没有针对任何连接的“Blk By”SPID。谁能解释我目前面临的问题。