В 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