W programie SQL Server 2005 próbuję użyć funkcji zdefiniowanej przez użytkownika w indeksowanym widoku, który będzie używany w indeksie pełnotekstowym. Byłem w stanie zmusić UDF do pracy z procedurą składowaną i widokiem, o którym mowa. Ale gdy próbuję utworzyć indeks na widoku pojawia się następujący błąd:Nie można utworzyć indeksu w widoku z funkcją zdefiniowaną przez użytkownika w SQL Server
Nie można utworzyć indeksu w widoku "DevDatabase.dbo.View_PersonSearch", ponieważ funkcja "dbo.GetCurrentImage", do której odwołuje się widok, wykonuje użytkownika lub dostęp do danych systemowych.
Jestem zaskoczony tym. Poniżej znajduje się przykład tego, co próbuję zrobić. Czy czegoś brakuje, czy jest to możliwe?
User Defined Function
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
Widok z tworzenia indeksu
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
ahhh ... Rozumiem. Dziękuję, że przynieście mi to na światło. – Eddie
Jakie jest rozwiązanie? –
Ja też chciałbym wiedzieć, jak przezwyciężyliście ten problem. – Jeremy