フルテキスト インデックスか?の続編。と言うか原因。いや結果報告。
今回の現象は、ユニット テストからの実行時のみで発生していました。これがキモでした。
で、SQL Server Profiler で確認していたところ、問題のクエリ(SELECT * FROM t1 WHERE FREETEXT(c1, 'hoge'))実行後にsp_fulltext_getdata が実行されていました。
つまり、フルテキスト インデックスが更新される前に、検索を実行していたために、何もヒットしない今回の現象が起きていました。
こんなシーケンスです。
- SetUpの実行(テストデータの作成)
- ユニット テストの実行
- sp_fulltext_getdata
なので、SetUpの最後かユニット テストの先頭でThread.Sleepを実行することで
- SetUpの実行(テストデータの作成)
- sp_fulltext_getdata
- ユニット テストの実行
という実行順序になるので、とりあえずはこの問題は解決。
ユニット テストの罠ですw