小编use*_*078的帖子

如何防止'查询超时过期'?(SQLNCLI11错误'80040e31')

我在经典ASP(VBScript)中连接到MS SQL Server 2012数据库.这是我的连接字符串:

Provider=SQL Server Native Client 11.0;Server=localhost;
Database=databank;Uid=myuser;Pwd=mypassword;
Run Code Online (Sandbox Code Playgroud)

当我执行此SQL命令时:

UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',
[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,
[updated]=1,[findable]=0 
WHERE [ID]=193246;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Microsoft SQL Server Native Client 11.0 
error '80040e31'
Query timeout expired   
/functions.asp, line 476
Run Code Online (Sandbox Code Playgroud)

SQL查询很长,数据字段更新为12533个字符.ID列已编入索引,因此查找ID为193246的帖子应该很快.

当我在SQL Server Management Studio上执行完全相同的SQL表达式(复制和粘贴)时,它立即成功完成.什么都没有问题.所以SQL本身没有问题.我甚至尝试过使用ADODB.Recordset对象并通过它更新(没有自编SQL),但我仍然得到相同的超时错误.

如果我在Management Studio中转到工具>选项>查询执行,我会看到执行超时设置为0(无限).在工具>选项>设计器下,我看到事务超时设置为30秒,因为脚本和数据库在同一台计算机上("localhost"在连接字符串中),所以应该足够了.

这里发生了什么?为什么我可以在Management Studio中执行SQL而不是在我的ASP代码中执行?


编辑:尝试将设计师选项卡中的30秒超时设置为600秒,以确保,但我仍然得到相同的错误(在页面加载btw 30秒后发生).

这是我用来在ASP页面上执行SQL的代码:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=SQL Server Native Client 11.0;
Server=localhost;Database=databank;Uid=myuser;Pwd=mypassword;"
Conn.Execute "UPDATE [info] SET [stamp]='2014-03-18 01:00:02',
[data]='12533 characters goes here',[saved]='2014-03-18 01:00:00',
[confirmed]=0,[ip]=0,[mode]=3,[rebuild]=0,[updated]=1,[findable]=0 
WHERE [ID]=193246;" …
Run Code Online (Sandbox Code Playgroud)

sql sql-server vbscript asp-classic sql-server-2012-express

13
推荐指数
1
解决办法
10万
查看次数