Как принудительно обновить полнотекстовый индекс в транзакции в mssql? - PullRequest
6 голосов
/ 23 августа 2010

Я пытаюсь выяснить, как получить следующий код для возврата строки, которую он только что вставил - сотрудник указал и предложил запустить ALTER FULLTEXT CATALOG uiris_production REBUILD, но его нельзя запустить в пользовательской транзакции.

Причина, по которой это должно быть в транзакции, заключается в том, что это происходит из тестовой среды, где тест оборачивается в транзакцию, а затем откатывается.

declare @search varchar(64)
set @login_test = 'foobar'
set @search = '"' + @login_test + '*"'

begin transaction
   insert into users(login) values (@login_test)
   select login from users where contains(login, @search)
commit

Ответы [ 2 ]

3 голосов
/ 23 августа 2010

Во-первых, убедитесь, что ваш полнотекстовый индекс настроен для автоматического отслеживания изменений. change_tracking_state должно быть 'A' для этого запроса.

select t.name, fi.change_tracking_state 
    from sys.fulltext_indexes fi
        inner join sys.tables t
            on fi.object_id = t.object_id
    where t.name = 'users'

Но даже при автоматическом отслеживании изменений существует определенная задержка при обновлении полного текста. Вам может понадобиться встроить WAITFOR в свой модульный тест, чтобы приспособиться к этому.

0 голосов
/ 23 августа 2010
SELECT SCOPE_IDENTITY()

сообщит вам идентификатор записи, которую вы только что создали.

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