【发布时间】:2013-04-02 00:56:19
【问题描述】:
我有一张表列出了 patient_clinic_visits。我有 SQLSERVER 2005 后端。 Access2010 前端。
每天早上都需要从医院大型机的数据转储中刷新此表。
此数据转储包括前一天的信息(谁参加、没有参加、取消)和未来 6 周的预约。
因此,我执行“DELETE * from Patient_clinic_visits where Visit_Date > (a day) and
在大多数情况下,每天只有大约 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 WHERE Clinic_date >= '26-Mar-2013' AND Clinic_date
这表明我的客户端前端正在等待“来自 Patient_Clinic_Vists 的 SELECT 1”,这会阻塞该过程。显然这是由于客户端上的 ASYNC_NETWORK_IO 造成的(这可能发生在 Access 前端执行表请求然后不处理数据时)。
a) 但是,“从 Patient_Clinic_Visits 中选择 1”实际上应该只返回 TRUE 或 FALSE ?这不太可能填满任何东西,并且不清楚为什么会导致阻塞情况?
b) 我在任何地方的 Access 前端都找不到“SELECT 1...”。这可能是 SQLSERVER 为响应更复杂的选择而做出的一系列子选择的一部分吗?如果是这样,我如何在该进程历史记录中找到导致这种情况的真正选择?
干杯,
JonHD
【问题讨论】:
标签: sql-server ms-access vba ms-access-2010 sp-who2