错误的SQL查询使浏览器挂起,直到超出脚本超时

时间:2010-04-16 08:48:47

标签: sql-server browser asp-classic iis-6

我在Classic ASP Web应用程序中有一个管理页面,允许管理员用户对数据库运行查询(SQL Server 2000)

真正奇怪的是,如果您发送的查询中有错误(无效的表连接,您忘记分组的列等),BROWSER会挂起(CPU使用率达到最大值),直到SERVER脚本超时超出然后吐出超时超时错误(服务器和浏览器在不同的机器上,所以不知道这是怎么发生的!)我已经在IE 8和FF 3中尝试了相同的结果。

如果直接从SQL Enterprise Manager运行相同的查询(有错误),则会立即返回实际错误。这是安全功能吗?有谁知道怎么关掉它?它甚至发生在与数据库的连接使用'sa'凭据时,所以我不认为它是一个安全设置:(

Dim oRS 
Set oRS = Server.CreateObject("ADODB.Recordset") 
oRS.ActiveConnection = sConnectionString 

// run the query - this is for the admin only so doesnt check for sql safe commands etc. 
oRS.Open Request.Form("txtSQL") 

If Not oRS.EOF Then 
    // list the field names from the recordset 
    For i = 0 to oRS.Fields.Count - 1 
        Response.Write oRS.Fields(i).name & " " 
    Next 
    // show the data for each record in the recordset 
    While Not oRS.EOF 
        For i = 0 to oRS.Fields.Count - 1 
       Response.Write oRS.Fields(i).value & " " 
        Next 
        Response.Write "<br />" 
        oRS.Movenext() 
    Wend 
End If 

2 个答案:

答案 0 :(得分:2)

尝试获取ASP的核心内容(完成工作的位)并将其粘贴到纯VBS脚本中,并通过cscript(即cmd)从cscript bit_wot_does_stuff.vbs提示符运行该脚本看看有多快回来。 [将Server.CreateObject更改为CreateObject,将Response.Write更改为WScript.Echo,以使其在cmd环境中正常工作]。

希望这会告诉你问题是在ASP / IIS中还是在ADO库中有些奇怪(虽然代码看起来还不错,但我还没有执行它:-))。

希望它会给你一些东西,然后进一步追踪。

答案 1 :(得分:0)

解决方案(只是为了关闭帖子,因为它不会得到解决!)

升级到SQL Server 2005/2008 / R2 - 解决了问题:)