Почему не удается вызвать полнотекстовый поиск в SQL Server 2008, когда он находится внутри области транзакции? - PullRequest
0 голосов
/ 10 марта 2009

следующий код:

var foo = Users.Join(
                tvf_SearchUsers(queryString),
                u => u.User_Id,
                s => s.User_Id,
                (u, s) => u);

Выбирает пользователей, которые соответствуют строке запроса, на основе табличной функции (tvf_SearchUsers), которая использует полнотекстовый поиск. Этот фрагмент кода является частью более крупного метода, который успешно работает при использовании в производстве. Однако, когда я вызываю тот же метод, что и часть теста MBUnit, который имеет атрибут отката, поиск не возвращает ожидаемых результатов. Если я удаляю атрибут отката, он работает правильно. В модульном тесте создаются фиктивные пользователи и т. Д., Которые затем очищаются при откате. Кажется, что эти созданные элементы не видятся табличной функцией, как если бы они находились вне области транзакции. Кто-нибудь знает как это обойти?

Обновлено

Если я заменю функциональность полнотекстового поиска более простым запросом в tvf, операция будет выполнена, как и ожидалось. Таким образом, проблема связана с полнотекстовым поиском. Я использую SQL Server 2008, поэтому на самом деле SQL Server должен иметь возможность сохранять полнотекстовый запрос в области транзакции.

1 Ответ

1 голос
/ 10 марта 2009

Вероятно, это связано с полнотекстовым поиском / комбинацией транзакций. Я не думаю, что полнотекстовый поиск увидит изменения, когда вы находитесь под транзакцией, если это SQL 2005. Проверьте этот пост http://blog.stackoverflow.com/2008/11/sql-2008-full-text-search-problems/,, когда упоминается, что SQL Server 2008 теперь работает с транзакциями при полнотекстовом поиске и это вызвало некоторые проблемы с SO некоторое время назад.

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