如何在CFQUERY中使用两个数据源?

时间:2011-09-27 18:41:18

标签: sql coldfusion coldfusion-9

我正在使用ColdFusion 9.1。

我需要在一些查询中使用两个不同的数据源。我知道它可以完成,因为我看到其他代码使用两个不同的数据源,它工作正常。

我尝试过很多组合,但无法正常工作,但我知道我的两个数据源都运行正常。

我在此范围内设置了默认数据库。默认值为“DatasourceOne”。

<cfquery>
SELECT UserID
FROM   DatasourceOne.TableOne IN (SELECT Userid FROM DatasourceTwo.TableTwo )
</cfquery

有关使用多个数据源的规则或指南是什么?

澄清

我本来应该问我如何在一个查询中使用两个数据库(而不是数据源)。我相信你的答案会有所不同。我们确实将两个数据库设置为数据源,但我自己有点困惑。

3 个答案:

答案 0 :(得分:18)

根据您的数据库,如果第二个数据库位于同一服务器上(或定义为链接服务器)并且数据源中的用户具有权限,则通常可以引用其他数据库。

SELECT * FROM myTable 
WHERE myField IN 
(SELECT otherField FROM otherDatabase.dbo.tableName)

答案 1 :(得分:12)

您无法在单个CFQUERY中与两个CF(JDBC)数据源通信。你能做什么:

  • 在同一数据源上使用两个数据库。例如,如果您有一个带有两个数据库的SQL Server实例,则可以通过与两个数据库通信的JDBC连接运行查询。这看起来就像您在问题中描述的那样。 Here's a more thorough explanation
  • 使用查询查询。分别从两个数据库中提取数据,并使用CFC或页面中的QoQ加入结果。

答案 2 :(得分:7)

ColdFusion只能在给定查询中一次与一个数据*源*通信。但是,如果需要在同一服务器上与多个数据* base *进行通信,则可以通过显式提供需要访问或连接在一起的数据库,表和列的完整路径来实现。另请注意,ColdFusion中的data * source *配置为使用的用户必须能够访问这两个数据库才能使其正常工作。