Как я могу использовать два источника данных в CFQUERY? - PullRequest
10 голосов
/ 27 сентября 2011

Я использую ColdFusion 9.1.

Мне нужно использовать два разных источника данных в некоторых моих запросах. Я знаю, что это можно сделать, потому что я вижу другой код, который использует два разных источника данных, и он отлично работает.

Я перепробовал множество комбинаций, но ничего не смог заставить работать, но я знаю, что оба моих источника данных работают правильно.

У меня есть база данных по умолчанию, настроенная в этой области. По умолчанию используется DatasourceOne.

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

Каковы правила или рекомендации по использованию нескольких источников данных?

ПОЯСНЕНИЯ

Первоначально я должен был спросить, как я мог бы использовать две базы данных (не источники данных) в одном запросе. Я уверен, что ваши ответы были бы другими. У нас есть обе базы данных, настроенные как источники данных, и я немного запутался.

Ответы [ 3 ]

18 голосов
/ 27 сентября 2011

В зависимости от вашей базы данных, если вторая база данных находится на том же сервере (или определена как связанный сервер) и у пользователя в источнике данных есть разрешение, вы обычно можете ссылаться на другую базу данных.

SELECT * FROM myTable 
WHERE myField IN 
(SELECT otherField FROM otherDatabase.dbo.tableName)
12 голосов
/ 27 сентября 2011

Нельзя разговаривать с двумя источниками данных CF (JDBC) в одном CFQUERY. Что вы можете сделать:

  • Использовать две базы данных на одном источнике данных. Например, если у вас есть экземпляр SQL Server с двумя базами данных, вы можете выполнить запрос через соединение JDBC, которое связывается с обеими базами данных. Это похоже на то, что вы описываете в своем вопросе. Вот более подробное объяснение .
  • Использовать запросы запросов. Извлеките свои данные из двух баз данных по отдельности и объедините результаты, используя QoQ в вашем CFC или на странице.
7 голосов
/ 27 сентября 2011

ColdFusion может одновременно общаться только с одним * источником * данных в данном запросе.Однако, если вам нужно общаться с несколькими базами данных * на одном сервере, вы можете сделать это, явно указав полные пути к базам данных, таблицам и столбцам, к которым вам нужно получить доступ или объединить их.Также обратите внимание, что пользователь, для которого настроен * источник * данных в ColdFusion, должен иметь доступ к обеим базам данных, чтобы это работало.

...