我在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
答案 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 - 解决了问题:)