代码之家  ›  专栏  ›  技术社区  ›  Teekin

MS-SQL/ColdFusion:神秘的数据库错误:对象已关闭

  •  10
  • Teekin  · 技术社区  · 14 年前

    我将ColdFusion与Microsoft SQL Server 2005一起使用,有时会出现以下错误:

    回溯总是像人们所期望的那样导致一个SQL查询,甚至是没有连接或输入参数或任何花哨的简单SELECT命令。

    到目前为止,我听说的唯一解决方案是重新启动“服务”,我只能想象它是指SQL Server服务。我已经尝试重新启动了SQL Server和ColdFusion服务,但它仍然随机发生。

    (而且重启不是解决方案。在生产环境中,不能有在任意时间给出任意错误消息的任意页面。)

    当它发生时,它持续发生几分钟,然后消失,可能在几秒钟或几分钟后回来。当我开发应用程序的一个JavaScript部分时,它就开始发生了,这个部分应该与ColdFusion代码或SQL命令无关。

    到目前为止,我在网上的搜索一直没有结果。

    6 回复  |  直到 14 年前
        1
  •  10
  •   Tomalak    11 年前

    这是旧的,但我只是遇到了这个,并找到了一个方法,不重新启动CF。

    在ColdFusion管理员中,转到您的数据源并编辑导致问题的数据源。对它进行更改,比如检查一个不重要的框,然后提交。

    这将重新配置连接并允许其工作。回去取消勾选(如果你真的不想勾选)。

    不重启!如果这是一个生产盒,那就太好了。

        2
  •  2
  •   FlipperPA Gavin Ballard    12 年前

    我们遇到了CF9的这个问题,重新启动服务没有帮助。我们在CF配置中删除并重新创建了有问题的DSN,这解决了问题。所以如果其他的解决方案不起作用,试试这个。

        3
  •  0
  •   Joe Stefanelli    14 年前

    我的直觉是,您需要查看代码之外的内容,并与DBA一起研究数据库服务器本身的稳定性。听起来SQL Server服务正在挂起或变得无响应。

        4
  •  0
  •   Dan Short    14 年前

    像大多数行为不端的软件一样,我首先看的是驱动程序。您可能希望确保使用的是最新的Microsoft JDBC驱动程序。我知道他们已经改进了最新驱动程序的性能,这也可能解决您看到的问题。

    如果你用的是ColdFusion的驱动程序 绝对地

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displaylang=en

    请注意,如果执行升级,如果有使用SCOPE_IDENTITY()返回新插入行的ID的INSERT语句,则需要在每个INSERT语句的顶部设置NOCOUNT ON,以防止SQL Server返回插入的行数而不是插入行的ID。

        5
  •  0
  •   Ben Doom    14 年前

    在sQL 2K中有一个bug,我认为是2K5,这样系统就会认为它处于关闭模式,尽管从未被要求关闭服务。IIRC,它抛出了一个和你类似的错误。我的MS发布了一个补丁,尽管我似乎记得它是一个单独的下载,而不是MS更新的一部分。

    很抱歉这么含糊,但我已经有一段时间没有处理这个问题了。希望这能帮你开始。

        6
  •  0
  •   Teekin    14 年前

    结果发现,当服务器过载时,就会发生这种情况。除了重新启动和/或从服务器中移除负载之外,似乎没有其他补救措施。