gpt4 book ai didi

vb6 - 存储过程超时 - 但从 SSMS 运行时正常

转载 作者:行者123 更新时间:2023-12-04 21:56:44 25 4
gpt4 key购买 nike

我有一个存储过程出错,显示“超时已过期”。

涉及的代码是ADO/VB6。

存储过程本身没有问题,您可以在查询窗口中运行它,不到一秒钟。

用于获取连接等的代码也被模块化,并在一个巨大的应用程序中使用。在一个特定的数据库上,只有在这一个地方发生超时。

无论是否在调试中运行 VB6 代码,无论是否在调试中运行 VB6 代码,每次尝试数百次都会重现该错误,然后突然一切都会神奇地重新开始工作。然后在未来的某个时候,同样的问题会再次出现。

我不确定要在这里放多少代码,没有什么复杂的;基本上是;

Set adoCommandObject.ActiveConnection = ...{open ADODB.Connection object}
Set rs = CreateObject("ADODB.Recordset")
Call rs.Open(adoCommandObject, , adOpenForwardOnly, adLockReadOnly)'Timeout occurs here

我一直在观察探查器,但没有提供任何线索,除了偶尔看到在 sp 运行前后发生的“SET NO_BROWSETABLE ON”/“SET NO_BROWSETABLE OFF”语句。

我在网上搜索过,但没有找到任何令人满意的帮助;在这一点上我愿意尝试任何事情(除了在 .NET 中重写,不幸的是那不是一个选项!)

最佳答案

我认为您想多了。无意冒犯,但如果您使用的是 MSSQL,这就像有人让查询窗口保持打开状态一样简单,它会占用数据库。这很容易测试。我以前遇到过同样的麻烦。我在没有超时之前运行过存储过程,通常会立即运行但会过夜而不运行。才发现另一名员工没有打开他们的查询窗口。关闭他们的窗口,它终于运行了。看看这个,您会惊讶于表锁可以对您的应用程序做什么。

我这样说是因为你说这个问题是间歇性的。它来来去去。我怀疑表锁。无论是应用程序执行此操作,还是由另一个用户向数据库查询来执行。如果不是其他用户,则检查以确保您的应用程序在每次使用时都关闭与数据库的连接。

关于vb6 - 存储过程超时 - 但从 SSMS 运行时正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com