【问题标题】:MS-SQL/ColdFusion: Mysterious database error: Object has been closedMS-SQL/ColdFusion:神秘的数据库错误:对象已关闭
【发布时间】:2011-05-03 23:35:01
【问题描述】:

我在 Microsoft SQL Server 2005 中使用 ColdFusion,有时我会收到以下错误:

“[Macromedia][SQLServer JDBC Driver]对象已关闭。”

正如人们所期望的那样,回溯总是会导致 SQL 查询,即使是没有 JOIN 或输入​​参数或任何花哨的简单 SELECT 命令。

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

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

当它发生时,它会持续发生几分钟,然后消失,并可能在几秒钟或几分钟后再次出现。它开始发生在我开发应用程序的 JavaScript 部分时,它应该与 ColdFusion 代码或 SQL 命令无关。

到目前为止,我的在线搜索毫无结果。

任何帮助表示赞赏。

【问题讨论】:

  • 您是否尝试过查看 SQL 日志,看看是否可以找出导致它的原因?

标签: sql-server sql-server-2005 coldfusion coldfusion-9


【解决方案1】:

这是旧的,但我刚刚遇到这个并找到了一种无需重新启动 CF 的方法。

在 ColdFusion Administrator 中,转到您的数据源并编辑导致问题的那个。对其进行更改,例如选中一个不重要的框,然后提交。

这将重新配置连接并使其正常工作。返回并取消勾选该框(如果您真的不想勾选)。

例如。我关闭了“启用高位 ASCII 字符...”点击提交并且数据源工作。然后我返回并检查它并再次提交更改。

没有重启!如果这是一个生产盒,则非常理想。

【讨论】:

  • 感谢您的小提示。同样的事情也发生在我身上。
【解决方案2】:

我们在使用 CF9 时遇到了这个问题,但重新启动服务并没有帮助。我们在 CF 配置中删除并重新创建了有问题的 DSN,这已经解决了问题。因此,如果其他解决方案不起作用,请尝试一下。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      如果您使用的是 ColdFusion 随附的驱动程序,那么绝对值得升级。

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

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

      【讨论】:

        【解决方案5】:

        SQL 2K 中存在一个错误,我认为是 2K5,因此系统会认为它处于关闭模式,尽管从未被要求关闭服务。 IIRC,它引发了与您类似的错误。我的 MS 发布了一个补丁,但我似乎记得它是一个单独的下载,而不是 MS 更新的一部分。

        抱歉,我的表述含糊不清,但我已经有一段时间没有处理这个问题了。不过,希望这有助于您入门。

        【讨论】:

          【解决方案6】:

          事实证明,这只是在服务器过载时发生。除了重新启动和/或从服务器中删除负载之外,似乎没有其他补救措施。

          无论如何,谢谢所有回答的人!

          【讨论】:

            【解决方案7】:

            我将分享一个观察结果,即我遇到了这个问题,但事实证明,由于某种原因,SQL Server 已停止。重新启动它修复它。

            您可能会认为“肯定有人会注意到这一点”,但是对于一个主要在 CRUD 中执行 R 的 Web 应用程序,可能只有部分请求会失败,而不是所有请求都会失败——只有那些真正尝试与分贝交谈。这可能是因为在 CF 中使用了查询缓存,或者 Web 服务器或代理缓存,或浏览器缓存等。我确实很惊讶地发现数据库已关闭。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-03
              • 2014-05-06
              • 1970-01-01
              • 2013-06-05
              • 2016-05-29
              相关资源
              最近更新 更多