我正在使用ColdFusion和Microsoft SQL Server 2005,有时我会收到此错误:
“[Macromedia] [SQLServer JDBC Driver]对象已关闭。”
回溯总会导致一个人们期望的SQL查询,即使是没有JOIN或输入参数的简单SELECT命令,也可能是任何花哨的东西。
到目前为止,我听到的唯一解决方案是重新启动“服务”,我只能想象它是指SQL Server服务。我已经尝试重新启动SQL Server和ColdFusion服务,但它仍然会随机发生。
(重启也不是解决方案。在生产环境中,任意页面都不能随意提供任意错误消息。)
当它发生时,它会持续发生几分钟,然后消失并可能在几秒钟或几分钟内恢复。它开始发生在我开发应用程序的JavaScript部分时,它应该与ColdFusion代码或SQL命令无关。
到目前为止,我的在线搜索一直没有结果。
任何帮助表示感谢。
答案 0 :(得分:10)
这是旧的,但我刚刚遇到这个并找到了一种方法,无需重新启动CF。
在ColdFusion Administrator中,转到数据源并编辑导致问题的数据源。对其进行更改,例如检查不重要的框,然后提交。
这将重新配置连接并允许它工作。回去并取消勾选方框(如果你真的不想勾选它)。
例如。我关闭了“启用高位ASCII字符...”点击提交,数据源工作。然后我又回去检查了一下,然后再次提交更改。
不重启!如果这是一个生产箱,这是理想的选择。
答案 1 :(得分:2)
我们遇到了CF9的这个问题,重启服务没有帮助。我们在CF配置中删除并重新创建了有问题的DSN,这解决了问题。因此,如果其他解决方案不起作用,请尝试一下。
答案 2 :(得分:0)
我的直觉是,您需要查看代码之外的内容,并与DBA合作调查数据库服务器本身的稳定性。听起来好像SQL Server服务正在挂起或没有响应。
答案 3 :(得分:0)
与大多数行为不端的软件一样,我看的第一个地方是司机。您可能希望确保使用最新的Microsoft JDBC驱动程序。我知道他们已经改善了他们最新驱动程序的性能,这也可以解决你所看到的问题。
如果您使用的是ColdFusion附带的驱动程序,则绝对值得升级。
请注意,如果您进行升级,如果您有INSERT语句使用SCOPE_IDENTITY()返回新插入行的ID,则需要在SET NOCOUNT ON;在每个INSERT语句的顶部,以防止SQL Server返回插入的行数而不是插入行的ID。
丹
答案 4 :(得分:0)
sQL 2K中存在一个错误,我认为2K5,系统会认为它处于关机模式,尽管从未被要求关闭服务。 IIRC,它抛出了类似于你的错误。有一个补丁发布我的MS,虽然我似乎记得它是一个单独的下载而不是MS Update的一部分。
很抱歉这么模糊,但是我处理这个问题已经有一段时间了。希望这有助于您入门。
答案 5 :(得分:0)
事实证明,这只是在服务器过载时发生的。除了重新启动和/或从服务器中删除负载之外,似乎没有任何补救措施。
谢谢所有回答的人!
答案 6 :(得分:0)
我将分享一个观察结果,当我发现由于某些原因SQL Server已停止时,我遇到了这个问题。重新启动它可以解决它。
您可能会认为“肯定有人会注意到”,但是对于大多数在CRUD中执行R的网络应用来说,很可能只有部分请求失败,而并非所有请求都会失败,只有那些真正试图与数据库交谈。那可能是因为在CF中使用了查询缓存,或者在Web服务器或代理缓存中使用了缓存,或者在浏览器缓存中使用了缓存。我确实很惊讶地发现DB崩溃了。