这并不紧急,只是好奇。
问题:
今天我试图对一个慢速服务器进行故障排除,我遇到了一个名为PREEMPTIVE_REENLIST
. 我无法在任何地方找到这个记录。TOADWORLD 似乎至少知道它存在,但没有任何实际信息。MSDN 搜索或 Stack Exchange 搜索中没有任何内容。除了 TOADWORLD 链接外,Google 上没有其他内容。
只是想知道这里是否有人遇到过它并且知道它是怎么回事。谢谢。
平台:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) Jun 11 2012 16:41:53 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor ) (Windows Server 2008 R2 VMWare 虚拟化)
这不是决定性的证据,而只是我的观点,基于我从 Paul Randal 在等待统计方面所做的 PluralSight 课程中学到的知识。
PREMEPTIVE
等待表明 SQL Server 操作系统 (SQLOS) 必须将线程更改为抢占模式,以便在操作系统级别处理 SQL Server 之外的某些事情。现在您已经确定这种类型的等待根本没有记录。您可以在 DMV下的BOL
sys.dm_os_wait_stats
中看到一些记录,但并不广泛。在大多数情况下,对操作系统的调用是通过 Windows API 调用进行的。所以我最终从课程中学到的是,如果你去掉 的PREMEPTIVE
部分,PREEMPTIVE_REENLIST
你最终会得到可能使用的 API 的名称:REENLIST
. 因此,如果您接受它并开始在网络上搜索,您可以尝试推断出它的含义。所以我的推论是我遇到了这篇MSDN 文章,
IResrouceManager::Reenlist
还有其他关于类似命名方法的 MSDN 文章都讨论了TransactionManager
. 引起我注意的不是内容,而是这篇文章所在的 MSDN 部分:DTC Interfaces。所以你没有为你的服务器指定这个级别的设置,但我会预感你正在使用分布式事务。这可能来自对其他实例/数据库进行远程调用,或者如果您正在处理集群实例。如果您真的从MS DTC Service阅读了一条声明,尽管它来自 SQL Server 2000,您可能会抓住引起我注意的关键词:只是我的观点...