0

Der folgende Code:Warum schlägt das Aufrufen der Volltextsuche in SQL Server 2008 fehl, wenn es sich im Transaktionsbereich befindet?

var foo = Users.Join(
       tvf_SearchUsers(queryString), 
       u => u.User_Id, 
       s => s.User_Id, 
       (u, s) => u); 

Wählt Benutzer, der die Abfrage-String übereinstimmen, basierend auf einer Tabellenwertfunktion (tvf_SearchUsers), die Volltextsuche verwendet. Dieses Code-Snippet ist Teil einer größeren Methode, die in der Produktion erfolgreich verwendet wird. Wenn ich jedoch dieselbe Methode als Teil eines MBUnit-Tests aufrufe, der ein Rollback-Attribut aufweist, gibt die Suche die erwarteten Ergebnisse nicht zurück. Wenn ich das Rollback-Attribut entferne, funktioniert es korrekt. Der Komponententest erstellt Dummy-Benutzer usw., die dann durch das Rollback bereinigt werden. Es scheint, dass diese erstellten Elemente von der Tabellenwertfunktion nicht gesehen werden, als ob sie außerhalb des Transaktionsbereichs wären. Weiß jemand, wie man das schafft?

aktualisiert Wenn ich die Volltext-Suchfunktion mit einer einfacheren Abfrage in der TVF der Operation weiter ersetzen, wie erwartet. Das Problem hat also etwas mit der Volltextsuche zu tun. Ich benutze SQL Server 2008, damit afaik SQL Server die Volltextabfrage im Transaktionsbereich behalten kann.

Antwort

1

Es ist wahrscheinlich aufgrund der Volltextsuche/Transaktion Kombination. Ich glaube nicht, die Volltextsuche wird die Änderungen sehen, wenn Sie unter einer Transaktion sind, wenn es sql 2005 ist. Überprüfen Sie diesen Beitrag http://blog.stackoverflow.com/2008/11/sql-2008-full-text-search-problems/, wenn es erwähnt wird, dass SQL Server 2008 jetzt mit Transaktionen auf Volltextsuche funktioniert und das verursacht einige Probleme mit SO vor einiger Zeit.

+0

Danke für den Link, interessant ... Ich laufe das eigentlich gegen 2008. Vieles von dem, was ich tue, wird später zu etwas wie Lucene geändert werden, also ist das momentan keine Option entweder. Ich brauche nur einen einfachen Hack, damit meine Komponententests wieder funktionieren. – LaserJesus

Verwandte Themen