Как принудительно обновить полнотекстовый индекс в транзакции в mssql?

Я пытаясь выяснить, как получить следующий код для возврата строки, которую он только что вставил - сотрудник указал и предложил запустить 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
7
задан Lee Taylor 26 March 2015 в 19:54
поделиться

2 ответа

Во-первых, убедитесь, что ваш полнотекстовый индекс настроен на автоматическое отслеживание изменений. 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 в ваш модульный тест, чтобы учесть это.

4
ответ дан 7 December 2019 в 18:38
поделиться
SELECT SCOPE_IDENTITY()

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

-2
ответ дан 7 December 2019 в 18:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: