SQL Server - Crear vista indexada que contiene una función (SQL Server 2012)

 
Vista:

Crear vista indexada que contiene una función (SQL Server 2012)

Publicado por Miguel (5 intervenciones) el 20/04/2020 11:54:46
Necesito ayuda para crear una vista indexada en SQL Server 2012.
El problema que tengo es que hago una llamada a una "Scalar-valued Functions".
Algo así:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE VIEW [dbo].[VISTA_NEW]
With SchemaBinding
AS
SELECT DISTINCT Usuario, Nombre_Completo, [dbo].[DireccionUsuario](Id_Usuario) as Direccion_Usuario
FROM(
	SELECT DISTINCT [CodUsuario] AS [Usuario],
        [DesNombreCompleto]	AS [NombreCompleto],
        (SELECT [CR].[CodUsuario]
            FROM [dbo].[CentroUsuario] [CU]
            WHERE CU.fecfin IS NULL AND
                UPPER(RTRIM([CU].[DesCentro])) = UPPER(RTRIM(dbo.DireccionUsuario(Id_Usuario))))       AS [Direccion_Usuario],
FROM [dbo].[Usuarios] ) AS Vista

No se puede enlazar a esquema vista 'dbo.VISTA_NEW' porque el nombre 'dbo.DireccionUsuario' no es válido para enlazar a esquema. Los nombres deben constar de dos partes y los objetos no pueden hacer referencia a sí mismos.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Crear vista indexada que contiene una función (SQL Server 2012)

Publicado por VYT (1 intervención) el 27/10/2022 06:25:49
El problema es que debes incluir el schema en el nombre de tablas por ejemplo:

en la vista tienes el dbo como schema pero veo que hay funcion:

[dbo].[DireccionUsuario](Id_Usuario) , asegurate que dentro de la funcion también tengas el dbo puesto en las referencias a tablas.

CREATE VIEW [dbo].[VISTA_NEW]
With SchemaBinding
AS
SELECT DISTINCT Usuario, Nombre_Completo, [dbo].[DireccionUsuario](Id_Usuario) as Direccion_Usuario
FROM(
SELECT DISTINCT [CodUsuario] AS [Usuario],
[DesNombreCompleto] AS [NombreCompleto],
(SELECT [CR].[CodUsuario]
FROM [dbo].[CentroUsuario] [CU]
WHERE CU.fecfin IS NULL AND
UPPER(RTRIM([CU].[DesCentro])) = UPPER(RTRIM(dbo.DireccionUsuario(Id_Usuario)))) AS [Direccion_Usuario],
FROM [dbo].[Usuarios] ) AS Vista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar