Comment puis-je forcer une actualisation d'un index de text intégral dans une transaction dans mssql?

J'essaie de comprendre comment get le code suivant pour returnner la ligne qu'il vient d'insert – un collègue a souligné et suggéré d'exécuter ALTER FULLTEXT CATALOG uiris_production REBUILD mais qui ne peut pas être exécuté dans une transaction user.

La raison pour laquelle cela doit être dans une transaction est que cela provient d'un cadre de test dans lequel le test est enveloppé dans une transaction puis annulé.

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 

Tout d'abord, assurez-vous que votre index de text intégral est configuré pour le suivi automatique des modifications. change_tracking_state devrait être 'A' pour cette requête.

 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' 

Mais, même avec le suivi automatique des changements, il y a un certain time de latence dans la mise à jour du text intégral. Vous devrez peut-être créer une WAITFOR dans votre test unitaire pour y répondre.

 SELECT SCOPE_IDENTITY() 

vous dirait l'identifiant du disque que vous venez de créer.