gpt4 book ai didi

sql - 全文索引需要删除和重新创建 - 为什么?

转载 作者:行者123 更新时间:2023-12-04 12:50:00 25 4
gpt4 key购买 nike

所以我有一个在 .net 3.5 上运行的网络应用程序连接到一个 SQL 2005 框。

我们每 2 周进行一次预定发布。

250 个表中约有 14 个是全文索引。

在不是每次发布后,但有太多的发布后,索引就会崩溃。
它们似乎在那里有数据,但是当我们尝试从前端或 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

最佳答案

This MSDN article在 SQL Server 2005 中全文索引失败列出了 6 种可能的原因。我在这里总结一下 - 有关详细信息,请参阅完整文章。

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

  • 文章的结论是:

    You should view the crawl log at the end of any significant full-text index population operation, or when you find that a population did not complete.

    关于sql - 全文索引需要删除和重新创建 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870677/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com