我有一个非常旧的 Delphi 应用程序,它使用 ADO 连接到 SQL Server 2008,它总是表现得非常好。在过去的 5 天里,应用程序在使用标准 SELECT w/joins 查询数据时开始挂起,导致应用程序超时。
问题是这样的:如果我在 SSMS 中执行相同的查询,查询运行得很好(无需等待,无需挂起)。
应用程序、代码或服务器中没有任何变化(来自 Windows 更新的最新修复程序除外)。
我试过这个:
- 如果我为 SELECT 中使用的所有表重新生成索引,应用程序会再次开始工作(即查询不会阻塞)一分钟后它又开始阻塞。
- 我检查了 sp_lock 并且表上没有排他锁(只有 S、IS 和 Sch-S 锁)。
- 我尝试将 ADO 游标设置为只读。这提高了性能,但查询会不时阻塞。