2010-05-20 97 views
7

所以我有一个Web应用程序运行在.net 3.5连接到SQL 2005框。全文索引需要删除和重新创建 - 为什么?

我们每两周进行计划发布。

约14台出250全文索引。

不是每一个版本,但也有少数太多之后,索引废话了。 他们似乎有数据,但当我们试图从前端或SQL企业搜索他们时,我们得到超时/挂起。

我们有禁用索引,丢弃这些脚本, 删除目录,然后重新创建索引。这解决了100次问题99次。 和另外一次,我们再次运行脚本,它都可以正常工作

我们尝试过重建全文索引,但是这并没有解决问题。

我的问题是,为什么我们要这么做?我们可以做些什么来对索引进行排序?

这里有点脚本,

IF EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]')) 
ALTER FULLTEXT INDEX ON [dbo].[Address] DISABLE 
GO 
IF EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]')) 
DROP FULLTEXT INDEX ON [dbo].[Address] 

GO 



IF EXISTS (SELECT * FROM sysfulltextcatalogs ftc WHERE ftc.name = N'DbName.FullTextCatalog') 
DROP FULLTEXT CATALOG [DbName.FullTextCatalog] 
GO 




     -- may need this line if we get an error 
     BACKUP LOG SMS2 WITH TRUNCATE_ONLY 

     CREATE FULLTEXT CATALOG [DbName.FullTextCatalog] ON FILEGROUP [FullTextCatalogs] 
     IN PATH N'F:\Data' 
     AS DEFAULT 
     AUTHORIZATION [dbo] 



CREATE FULLTEXT INDEX ON [Address](CommonPlace LANGUAGE 'ENGLISH') 
    KEY INDEX PK_Address 
      ON [DbName.FullTextCatalog] 
    WITH 
      CHANGE_TRACKING AUTO 
go 
+0

是14个表被丢弃并重新加载? – 2010-05-21 02:56:37

+0

不,他们有时会更改一些数据,但不会超过此数据。 存储过程,触发器和函数被删除并重新创建。 与SQL脚本多为释放部分 – 2010-05-21 03:00:20

+0

它好像你可能有某种问题 – Scozzard 2010-05-24 21:29:03

回答

2

This MSDN article在SQL Server全文索引失败2005年6个列出可能的原因。我在这里总结 - 详细信息请参阅完整文章。

  • 索引器无法找到或加载过滤器或分词组件。
  • 组件(如分词器或筛选器)失败并向索引器返回错误。
  • 全文索引超过可以包含在全文目录中的行数限制。
  • 索引表上的聚簇索引或全文索引会被更改,删除或重建。
  • 硬件故障或磁盘损坏导致全文目录损坏。
  • 包含全文索引表的文件组脱机或成为只读。

文章的结论是:

你应该在任何显著的全文索引填充操作结束查看爬网日志,或当你发现一个群体没有完成。

相关问题