这个问题在 MSDN 上再次出现:Blocked-process-report: what is this waitresource "OBJECT: 32767:124607697:0 [COMPILE]"
我在 Profiler 中发现了这些语句。它们的持续时间都超过 3 秒。一些超过 10+。阻止活动与来自MSDN的链接相同。
调用都使用 3 部分命名。都指定了一个不同的过程,它们看起来像下面这样:
exec [db1].[sys].sp_procedure_params_90_rowset N'proc1', 1, NULL, NULL
exec [db2].[sys].sp_procedure_params_90_rowset N'proc2', 1, NULL, NULL
exec [db3].[sys].sp_procedure_params_90_rowset N'proc3', 1, NULL, NULL
exec [db4].[sys].sp_procedure_params_90_rowset N'proc4', 1, NULL, NULL
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来减少这种级别的阻塞?
(编辑)我现在看到同样的事情:
exec [db1].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db2].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db3].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db4].[sys].sp_primary_keys_rowset N'view1', N'dbo'
Run Code Online (Sandbox Code Playgroud)
有系统性的事情正在发生,但我不知道还能做什么。调用者是通过 ADO 的 VB6。是 ADO 进行这些调用。
下面是一个被阻止的进程报告示例
<blocked-process-report>
<blocked-process>
<process
id="process5bc1288"
taskpriority="0"
logused="0"
waitresource="OBJECT: 32767:124607697:0 [COMPILE]" …
Run Code Online (Sandbox Code Playgroud) 我经常看到这样的代码:
BEGIN TRANSACTION;
BEGIN DIALOG CONVERSATION @u....
SEND ...
COMMIT;
Run Code Online (Sandbox Code Playgroud)
BOL for BEGIN DIALOG 不使用示例中的事务处理,它根本没有提到事务。
是否需要交易?如果是为什么?