在触发器中重建全文索引

时间:2012-12-16 13:22:28

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

我要求在SQL Server表上有一个全文索引,客户希望在更新记录后立即更新索引。我认为最好的办法是将这个触发器添加到桌面上......

CREATE TRIGGER TR_Section_InsUpd ON dbo.[Section] AFTER INSERT, UPDATE AS

ALTER FULLTEXT CATALOG TUG REBUILD WITH ACCENT_SENSITIVITY = OFF

GO

但是当这被触发时,我被告知我无法在用户事务中重建目录。谁能告诉我如何实现我的目标?每隔几分钟进行一次预定的索引重建似乎是一个坏主意,因为该表不会经常更新,但是当它出现时,他们希望尽快在全文索引中提供这些更改。

2 个答案:

答案 0 :(得分:1)

创建更新表,例如:

  

CREATE TABLE IndexUpdates(TableName NVARCHAR(255),UpdateIndex BIT)

让您的触发器将相关条目更新为1.现在有一个每分钟或两分钟运行一次的作业,查看该表是否已更新并让作业重建索引。完成后,将UpdateIndex重置为0.

答案 1 :(得分:1)

使用AUTO更改跟踪创建FULLTEXT索引。 http://msdn.microsoft.com/en-us/library/ms187317.aspx

CREATE FULLTEXT INDEX on myTable (myColumn) WITH (CHANGE_TRACKING = AUTO)

效果很好,没有触发器。