0

我正在尝试使用带有 SQL Server 2000 数据库的经典 ASP 编写的站点来解决问题。

每隔几天,该网站似乎就会关闭。当您尝试访问该网站时,该网站没有任何响应。浏览器中的加载指示器将旋转,页面保持空白。

当我在站点关闭后运行 sp_who2 时,总是有一个进程占用了大量的 CPU 时间。此进程将阻塞数据库中的所有其他进程。

我可以通过终止此过程使站点再次运行。

我不知道发生了什么事。当我查看该进程在锁定之前运行的存储过程时,它没有任何问题。运行此存储过程的页面将关闭所有连接对象。

关于可能导致这种僵局的任何想法,或者我如何阻止它发生?

4

1 回答 1

1

不确定这是否是问题所在,但可能并非所有记录集和连接都始终关闭......当我们过去遇到类似问题时,我们最终得到了以下例程......(请注意,这只是一个显示片段一个记录集关闭,实际过程实际上会检查 15 个不同的记录集,看看它们是否需要关闭.. )。

然后 总是在页面末尾,重定向之前,内部错误处理等调用modCloseObjects()程序...

' subroutine will close and set the objects to Nothing. '
' Close Recordsets and then the Connection '
sub modCloseObjects()

    'Close the record sets one by one '
    If ucase(TypeName(oRS)) = "RECORDSET" then
        if oRS.state <> adStateClosed then
            oRS.close
            Set oRS = Nothing
         end if
    end if

    ' if you have other recordSet objects, add them to the rourtine here: '


    ' Close the connection '

    If ucase(TypeName(objConn)) = "CONNECTION" then
        if objConn.state <> adStateClosed then
             objConn.close
             Set objConn = Nothing
        end if
    end if

end sub

如果您没有 adovbs.inc ,则还需要以下常量:

Const adStateClosed = &H00000000
于 2012-09-26T14:29:30.313 回答