我使用another website中的ADO函数在同一工作站上的SQL Server Express数据库上从Excel VBA 2016进行查询。使用来自提供程序的新记录不断更新SQL数据库。
查询运行非常顺利,大约需要70毫秒才能执行。我每隔3秒从Excel VBA中的例程调用该查询。虽然每分钟一次或两次,但查询需要6000-12000毫秒。似乎查询是"挂"在某些原因的这些时刻。
当我关闭外部Feed时,问题就出现了!
我也使用了Express Profiler来深入了解原因。我在这篇文章下面添加了输出。第33和173行是具有长间隔的行。如您所见,此持续时间比其他(相同的查询)长得多。
我在选项中设置了READ_COMMIT_SNAPSHOT ON
。
我还在选项中设置了ALLOW_SNAPSHOT_ISOLATION ON
。
我没有关闭任何连接,尽管SQL确实给出了关闭所有连接的消息。
虽然测试后问题仍然存在。
看完之后:
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-transaction-isolation-level-transact-sql我尝试使用命令SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
,但经过测试后,问题仍然存在。
有没有人知道这个问题的解决方案?