In SQL Server 2005, sto tentando di utilizzare una funzione definita dall'utente in una vista indicizzata che verrà utilizzata in un indice full-text. Sono stato in grado di far funzionare l'UDF con una stored procedure e la vista in questione. Ma, quando cerco di creare un indice sulla vista ottengo il seguente errore ...Impossibile creare indice sulla vista con la funzione definita dall'utente in SQL Server
Impossibile creare l'indice sulla vista "DevDatabase.dbo.View_PersonSearch" perché la funzione "dbo.GetCurrentImage" a cui fa riferimento la vista esegue utente o accesso ai dati di sistema.
Sono perplesso da questo. Di seguito è riportato un esempio di ciò che sto cercando di fare. Mi sto perdendo qualcosa o è anche possibile?
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
View con la creazione dell'indice
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 ... ho capito ora. Grazie per averlo portato alla luce per me. – Eddie
Quindi qual è la soluzione? –
Anche io vorrei sapere come hai superato questo problema. – Jeremy