2009-04-21 37 views
1

我使用的是SQL Server 2008和我有一個觀點,看起來像這樣:把視圖上全文搜索索引與函數

select ID, dbo.functionname(ID) from tablename 

我試圖把全文這個索引,但它似乎沒有一個我可以去掉的唯一索引。 tablename.ID是唯一標識符。

我試着在它上面創建一個索引,但是它表示它不能架構綁定視圖,因爲這個函數沒有被綁定。

我需要做些什麼來創建全文索引?

+0

您是否試圖將其設置爲索引視圖? (所以結果存儲在數據庫的文件系統)? – 2009-04-21 07:52:22

回答

2

爲了能夠創建索引視圖,視圖必須是確定性的,也就是說,必須保證每個查詢都是相同的。您的用戶功能deterministic

用戶定義函數確定性

無論用戶定義的函數是 確定性或非確定性 取決於函數是如何編碼的。 用戶定義的函數是 確定性,如果:

* The function is schema-bound. 

* All built-in or user-defined functions called by the user-defined 

功能是確定性的。

* The body of the function references no database objects outside 

函數的作用域。例如,對於 示例,確定性函數 無法引用除 函數本地的 表以外的表。不 滿足這些標準

* The function does not call any extended stored procedures. 

用戶定義的函數被標記爲 不確定的。內置的 非確定性函數不是 允許在用戶自定義的 函數中。

是你的函數SchemaBound?

alter function [dbo].[UserFunction] 
(@example int = 1) 
returns int 
with schemabinding 
as 
begin 
    return 1 
end 

您的看法是SchemaBound?

ALTER VIEW dbo.UserView 
WITH SCHEMABINDING 
AS 
SELECT ID, [dbo].userFunction 

要創建一個索引視圖,您必須首先創建一個unique clustered index(See FAQ a bottom)

0

我想你mean't「而不是」架構綁定在上面 意見重新創建視圖「WITH SCHEMABINDING」 然後創建一個獨特的clusterred指數 這裏http://www.mssqltips.com/tip.asp?tip=1610 然後嘗試將您的全文索引解釋