【问题标题】:Why does calling full text search in SQL Server 2008 fail when inside transaction scope?为什么在事务范围内调用 SQL Server 2008 中的全文搜索失败?
【发布时间】:2009-03-10 03:55:46
【问题描述】:

以下代码:

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

根据使用全文搜索的表值函数 (tvf_SearchUsers) 选择与查询字符串匹配的用户。此代码 sn-p 是在生产中使用时成功运行的更大方法的一部分。但是,当我在具有回滚属性的 MBUnit 测试中调用相同的方法时,搜索无法返回预期结果。如果我删除回滚属性,它可以正常工作。单元测试创​​建虚拟用户等,然后由回滚清理。似乎这些创建的项目没有被表值函数看到,就好像它在事务范围之外一样。有谁知道如何解决这个问题?

更新

如果我在 tvf 中用更简单的查询替换全文搜索功能,操作将按预期进行。所以这个问题与全文搜索有关。我使用的是 SQL Server 2008,因此 afaik SQL Server 应该能够将全文查询保留在事务范围内。

【问题讨论】:

    标签: linq-to-sql sql-server-2008 full-text-search transactions user-defined-functions


    【解决方案1】:

    这可能是由于全文搜索/交易组合。如果它是 sql 2005,我认为全文搜索不会在您进行事务处理时看到更改。请查看此帖子 https://blog.stackoverflow.com/2008/11/sql-2008-full-text-search-problems/,当提到 sql server 2008 现在可以处理全文搜索事务并且前段时间给 SO 带来了一些问题。

    【讨论】:

    • 感谢您的链接,很有趣...我实际上是针对 2008 年运行的。无论如何,我正在做的很多事情都会在以后更改为类似 lucene 的东西,所以这就是现在也不是一个选择。我只需要一个简单的技巧来让我的单元测试再次工作。
    猜你喜欢
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2022-01-08
    相关资源
    最近更新 更多