0

次のコード:トランザクションスコープ内でSQL Server 2008の全文検索が失敗するのはなぜですか?

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を使用しているので、afaik SQL Serverはトランザクションスコープ内でフルテキストクエリを保持できるはずです。

答えて

1

おそらく全文検索/トランザクションの組み合わせによるものです。 SQL Server 2005であれば、フルテキスト検索で変更が反映されるとは思えません。http://blog.stackoverflow.com/2008/11/sql-2008-full-text-search-problems/を確認してください.SQL Server 2008がフルテキスト検索のトランザクションで動作し、あまりにも昔のことです。

+0

おかげさまで、ありがとうございました...私は実際に2008年にこれを実行しています。私がやっていることの多くは、後でいつでもluceneのようなものに変更される予定ですので、今はオプションではありませんどちらか。単体テストをやり直すには単純なハッキングが必要です。 – LaserJesus

関連する問題