2011-12-14 21 views
40

Estoy usando Views en mi Procedimiento almacenado (SQL-Server). Para mejorar el rendimiento, he tratado de crear un índice de esa vista.No se puede crear el índice en la vista 'View_Table_Name' porque la vista no está enlazada al esquema

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER VIEW VW_Table_Name 
AS 
SELECT Col1,Col2,Col3 FROM Table_Name 
GO 
CREATE UNIQUE CLUSTERED INDEX Index_Name ON [VW_Table_Name](Col1) 
GO 

Aquí estoy consiguiendo el error como

Msg 1939, nivel 16, estado 1, línea 1 No se puede crear el índice en la vista 'VW_FML' porque la vista no está obligado esquema.

¿Podemos crear el índice para ver en SQL Server?

Respuesta

60

Existen varias restricciones en las vistas indizadas: sin subconsultas, sin uniones, sin uniones externas, etc. Consulte this article para obtener más detalles. Pero para su caso, simplemente necesita crear la vista con el enlace del esquema.

CREATE VIEW VW_Table_Name WITH SCHEMABINDING 
AS 
SELECT Col1,Col2,Col3 FROM Table_Name 
GO 
2

ya que están tratando de crear una vista indizada o vista materializada. Es obligatorio para una vista tener la opción "CON SCHEMABINDING" si está creando un índice agrupado en la parte superior.

Una vista no es más que una consulta almacenada, si va a crear un índice sobre ella, el índice va a usar esa consulta y ejecutarla en esa tabla, en este caso debe asegurarse de que la tabla no cambia debajo Por lo tanto, al aplicar esta restricción SQL Server se asegura de que todo permanezca sincronizado.

0

Microsoft, Si estás escuchando, sería muy útiles si vistas (que utilizan otros puntos de vista con esquema VINCULANTE) podrían ser indexados para crear vistas materializadas. Parece ser completamente posible. La clave es la última oración del mensaje de error.

Este es el texto completo de error: Msg 1937, nivel 16, estado 1, línea 2 No se puede crear el índice en la vista 'TEST.dbo.v_NH_GRM_SAP_bridge' porque hace referencia a otro punto de vista 'dbo.v_NH_GRM_SAP_bridge_key_1'. Considere expandir la definición de la vista referenciada a mano en la definición de la vista indexada.

Cuestiones relacionadas