2010-05-20 96 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個列出可能的原因。我在這裏總結 - 詳細信息請參閱完整文章。

  • 索引器無法找到或加載過濾器或分詞組件。
  • 組件(如分詞器或篩選器)失敗並向索引器返回錯誤。
  • 全文索引超過可以包含在全文目錄中的行數限制。
  • 索引表上的聚簇索引或全文索引會被更改,刪除或重建。
  • 硬件故障或磁盤損壞導致全文目錄損壞。
  • 包含全文索引表的文件組脫機或成爲只讀。

文章的結論是:

你應該在任何顯著的全文索引填充操作結束查看爬網日誌,或當你發現一個羣體沒有完成。

相關問題