【发布时间】:2010-10-12 12:22:34
【问题描述】:
在 SQL Server 2005 中,我尝试在将用于全文索引的索引视图中使用用户定义函数。我已经能够让 UDF 与存储过程和有问题的视图一起使用。但是,当我尝试在视图上创建索引时,出现以下错误...
无法在视图“DevDatabase.dbo.View_PersonSearch”上创建索引,因为视图引用的函数“dbo.GetCurrentImage”执行用户或系统数据访问。
我被这个难住了。下面是我正在尝试做的一个例子。我错过了什么,或者这甚至可能吗?
用户定义函数
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[GetCurrentImage](@Person_ID int)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
-- Declare the return variable here
DECLARE @Img_ID int
SET @Img_ID = (**sql that selects image** )
RETURN @Img_ID
END
GO
创建索引的视图
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[View_PersonSearch]
WITH SCHEMABINDING
AS
SELECT Person_ID,
(**Select fields to search on**) AS SearchArea,
dbo.GetCurrentImage(Person_ID) AS FK_Img_ID
FROM dbo.Person
GO
CREATE UNIQUE CLUSTERED INDEX Index_Person_ID ON [View_PersonSearch](Person_ID)
GO
【问题讨论】:
标签: sql-server indexing views user-defined-functions