Похоже, обнаружил глюк в SQL Server 2008 Full-Text Search.
У меня есть хранимая процедура, которой передается строка для поиска. Процедура преобразует её в формат, нужный для FTS (в моем случае надо было просто добавить кавычки и звездочку, т.е. вместо Barack Oba сделать "Barack Oba*").
Затем передаю этот параметр в inline table-valued function, которая делает поиск с использованием оператора CONTAINS. И вываливается ошибка "The full-text query parameter for Fulltext Query String is not valid". Т.е. якобы я неправильно подготовил поисковую строку.
Чуть с ума не сошел. Вроде всё делаю правильно. В конце концов сделал из вспомогательной функции процедуру. Просто тупо скопировал код, только загаловок подправил. Заработало! Значит, это очень похоже на глюк SQL Server. Что же делать? Процедуру использовать неохота...
Оказалось, что в главной процедуре я хранил поисковую строку как NVARCHAR(103), в функции NVARCHAR(100). Т.е. вроде как частично сам виноват. Но поисковые строки были очень маленькие, гораздо меньше 100 символов, поэтому по идее моя ошибка никак не должна была влиять. Тем более, что эта проблема касается только функции.
Комментариев нет:
Отправить комментарий