具有全文索引的SQL Server迁移

时间:2014-11-05 17:37:19

标签: sql-server full-text-search database-migration

我们有一个迁移工具,它可以在事务中运行所有尚未在客户数据库上运行的脚本。由于全文索引,我们无法修改全文索引或创建它们的任何对象,因为我们无法修改事务中的全文索引,因此我们遇到了问题。

我们实现了部署前后脚本以删除并重新创建全文索引,但我们现在遇到的问题是我们无法修改任何引用CONTAINS或FREETEXT的过程,因为它出错:

Cannot use a CONTAINS or FREETEXT predicate on table or indexed view 'xx' 
because it is not full-text indexed.

我们实际上已经没有想法,所以我希望其他人可能遇到过一个解决方案,因为我认为有很多人使用带有全文索引的数据库以这种方式运行迁移。我目前唯一的解决方案是在没有事务的情况下运行迁移,这非常危险,就好像迁移失败会使我们的数据库处于部分迁移状态。

我们的另一个选择是放弃全文索引,看看像Lucene.net这样的东西,但这为我们提供了为正确用户返回正确数据的其他问题。

1 个答案:

答案 0 :(得分:0)

DDL transactional statements在大多数关系数据库中都不是标准的。

<强> Source

我建议您仅将事务用于DML操作。正如您所发现的,SQL Server为事务中的DDL语句提供了有限的支持。

DML (Data Manipulation Language)

  

示例:SELECT,UPDATE,INSERT语句

DDL (Data Definition Language)

  

示例:CREATE,ALTER,DROP语句