2014-10-29 95 views
2

SQL Server 2008 R2 - 全文索引正在处理nvarchar列,但不在xml列上。它像它不能索引xml值。我把下面的例子放在一起,在多台服务器上进行测试,除了一台服务器,它都会返回自由文本搜索的数据。在有问题的服务器上,我没有得到第二个select语句的结果(正在查看xml列)。我已经完成了与FullText相关的所有设置,但是我没有看到任何启用/禁用XML的设置。SQL Server全文索引XML数据

注意:最后的两个select语句有时需要在延迟后运行。当您一次运行整个数据块时,似乎正在编制索引。

-- Create Table 
CREATE TABLE [dbo].[a_TestFullText](
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [otherdata] [varchar](250) NOT NULL, 
    [xmldata] [xml] NOT NULL, 
    CONSTRAINT [pk_TestFullText] PRIMARY KEY CLUSTERED 
(
    [id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

-- Populate Data 
Insert Into dbo.a_TestFullText(xmldata, otherdata) Values 
('<nodename>Ham Cheese Sandwich</nodename>', 'Strange'), 
('<nodename>Potatoes</nodename>', 'Tony') 
GO 

-- Create Catalog 
Create FULLTEXT CATALOG TestFullText 
GO 

-- Create Index 
Create FULLTEXT INDEX ON dbo.a_TestFullText(otherdata,xmldata) KEY INDEX [pk_TestFullText] ON [TestFullText] 
GO 

-- Populate Index 
Alter FULLTEXT INDEX on dbo.a_TestFullText START FULL POPULATION; 
GO 

-- Check for results 
Select * 
From dbo.a_TestFullText 
Where FreeText(otherdata, 'Strange') 

Select * 
From dbo.a_TestFullText 
Where FreeText(xmldata, 'Potatoes') 
GO 

回答

1

重新启动SQL Server服务后,它自行解决。最初查看问题时,我们无法重新启动服务,但我们在第二天做了,问题消失了。仍不确定发生了什么或为什么。