Различаются результаты запросов в SQL Mgmt и CFQuery - PullRequest
3 голосов
/ 20 апреля 2010

выполнение следующего запроса в SQL Management Studio дает результаты, а не через cfquery ...

select distinct locationid, locationname, locationaliasname
from vwLocationsWithAlias
where 1 = 0
or (LocationName = N'the' or LocationAliasName = N'the')
or (LocationName = N'the republic' or LocationAliasName = N'the republic')

Ожидаемые результаты возвращаются из SQL Mgmt Studio, но ничего не возвращается из CFQuery. WTF!? * * 1004

Ответы [ 7 ]

2 голосов
/ 10 июня 2010

Запустите Profiler, пока вы отправляете запрос из Coldfusion, и посмотрите, отправляет ли он то, что вы ожидали.

0 голосов
/ 10 июня 2010

Возможно ли, что SSMS и CFQuery имеют разные «SET» или другие параметры для каждого соединения? Некоторые из них могут повлиять на результаты.

Если вы можете поймать соединения открытыми при запуске трассировки SQL Profiler, вы можете увидеть кучу опций соединения, когда выделите строку «Существующее соединение». (Даже если вы их не открываете, я должен предположить, что вы сможете увидеть их, когда соединение будет установлено, и вскоре после этого ...) Или вы можете получить cfquery до SELECT @@OPTIONS или SELECT SESSIONATTRIBUTE(...).

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

0 голосов
/ 21 апреля 2010

Если ваши поля не nvarchar vs varchar, почему бы просто не взять N 'the' и просто использовать 'the' или любые другие данные, которые вы хотите в предложении where.

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

Это еще одно различие между запросом coldfusion и запросом анализатора запросов, в котором могут использоваться разные учетные данные пользователя.

Удачи.

0 голосов
/ 21 апреля 2010

Могу ли я также порекомендовать НЕ использовать Different, поскольку это намного медленнее, чем "group by" для больших наборов данных

0 голосов
/ 21 апреля 2010

попробуйте использовать preserveSingleQuotes вокруг частей с апострофами.

0 голосов
/ 20 апреля 2010

Вы уверены, что он попадает в правильную базу данных (не для разработки):)

0 голосов
/ 20 апреля 2010

Я предполагаю, что у вас есть индикатор TransactSQL Unicode ("N"), который есть в ваших строковых ограничениях. Я подозреваю, что синтаксический анализатор SQL в CF не понимает этого.

CF генерирует ошибку или просто не возвращает строки?

В элементе управления Datasource для сервера sql есть настройка, которая сообщает, что БД находится в юникоде:

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=datasources_ADV_MJS_11.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...