有人听说过coldfusion t-sql使用数据库bug吗?

时间:2011-02-15 19:56:25

标签: database tsql sql-server-2008 coldfusion

在我们公司生产站点的管理员上,我们有一个小的查询转储工具,我在不知不觉中尝试从数据库中获取数据,而不是主数据库,使用了use database命令。

这是踢球者,然后它使每个coldfusion页面的查询立即失败。

因为它以某种方式缓存使用数据库命令。

有没有人听说过这个奇怪的错误?

我们如何阻止这种行为?

如果我使用“使用数据库”命令,我希望它只存在于我正在运行的当前查询之后,在完成之后,回到正常的数据库使用情况。

这很奇怪,也是一个潜在的破坏性问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我想这与连接池有关。当您调用close时,它不会关闭连接,只是将其放回池中。当您调用open时,它不必打开新连接,它只是从池中获取现有连接。如果更改连接指向的数据库,ColdFusion可能不知道这一点。这就是为什么有些平台(例如MySQL在.Net上)每次从池中检索它时重置连接,以确保您查询正确的数据库,并确保您没有任何临时表和其他会话信息闲逛。这种行为的缺点是它必须进行数据库的往返,即使使用池化连接,这实际上可能没有必要。

答案 1 :(得分:1)

Kibbee走在正确的轨道上,但是通过三种可能的解决方法进一步扩展它:

  1. 创建一个不同的DSN以供该一个查询使用,因此“USE DATABASE”语句仅对使用该DSN的任何查询保留。
  2. 取消选中“CF admin”中的“维护客户端请求之间的连接”
  3. 始终记住将数据库重置为您在请求结束时要使用的数据库。毫无疑问,这对你的生产服务器来说是一个非常危险的工具!
  4. 这不是一个错误,也不是真正的意外行为 - 如果查询被缓存,那么cfquery块中的所有内容都会继续运行。您使用的是哪个数据库平台?