我正在使用SQL Server 2008,我有一个如下所示的视图:
select ID, dbo.functionname(ID) from tablename
我正在尝试对此进行全文索引,但它似乎没有一个我可以解决的唯一索引。 tablename.ID是唯一标识符。
我尝试在其上创建索引,但它说它无法构建绑定视图,因为该函数不是模式绑定。
创建全文索引需要做什么?
答案 0 :(得分: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)。
答案 1 :(得分:0)
我认为你在上面的评论中并不是“不”模式 重新创建视图“WITH SCHEMABINDING” 然后创建一个唯一的聚集索引 正如此处所解释的那样http://www.mssqltips.com/tip.asp?tip=1610 然后尝试添加全文索引