Я тестирую перенос нашей базы данных с SQL Server 2005 на 2008. Мы используем CTE для подкачки.
При использовании полнотекстового CONTAINSTABLE CTE не будет работать и выдает ошибку.
Вот мой нерабочий код -
WITH results AS (
SELECT ROW_NUMBER() over (ORDER BY GBU.CreateDate DESC ) as rowNum,
GBU.UserID,
NULL AS DistanceInMiles
FROM User GBU WITH (NOLOCK)
WHERE 1=1
AND GBU.CountryCode IN (SELECT [Value] FROM fn_Split('USA',','))
AND GBU.UserID IN (SELECT [KEY] FROM CONTAINSTABLE(VW_GBU_Search, *, 'COMPASS'))
)
SELECT * from results
WHERE rowNum BETWEEN 0 and 25
Если я закомментирую строку CONTAINSTABLE, оператор выполнится. Если я только запускаю инструкцию SELECT (не WITH), инструкция выполняется нормально.
Бесполезная ошибка, которую я получаю, это:
Сообщение 0, уровень 11, состояние 0, строка 0 A
произошла серьезная ошибка
команда. Результаты, если таковые имеются, должны
быть отброшенным Сообщение 0, Уровень 20, Штат
0, строка 0 Произошла серьезная ошибка на
текущая команда. Результаты, если
любой, следует выбросить.
Есть предложения?