2012-05-10 24 views
10

La tercera parte de esta tarea en la que estoy trabajando dice: "Crear e indexar la vista existente de Northwind llamada" dbo.Orders Qry "basada en las columnas OrderID y EmployeeID ".No se puede crear un índice en la vista porque la vista no es un esquema de error asociado 1939

Se espera que obtenga un error; sin embargo, mi instructor solo nos dijo que Google. Lo hice, pero el enlace de esquemas no está ni en la lección de esta semana ni en ninguna otra, y las cosas que he encontrado son demasiado profundas para que las entienda.

¿Esto es un problema de mí al no marcar una casilla o cambiar una configuración en alguna parte?

Respuesta

20

Suena como que esto está describiendo una vista indexada , puede leer sobre ellos en el sitio de Microsoft here. Microsoft activar esta capacidad a partir de SQL 2005.

En el texto de la definición de la vista, que había necesidad de añadir las palabras WITH SCHEMABINDING justo después de la declaración CREATE VIEW, por ejemplo:

CREATE VIEW dbo.MyView 
WITH SCHEMABINDING 

AS 

SELECT a, b, c 
FROM dbo.MyTable 

Para añadir indexación, agregaría una declaración a la definición de vista similar a esto:

-- Create an index on the view. 
CREATE UNIQUE CLUSTERED INDEX IDX_MyView_ClusteredIndex 
ON dbo.MyView(a, b, c) 

GO 
+0

No se puede vincular el esquema a la vista 'MyView' porque el nombre 'MyTable' no es válido para el enlace del esquema. Los nombres deben estar en formato de dos partes y un objeto no puede referenciarse a sí mismo. –

+3

Agregar "dbo". al lado de tu nombre de vista. –

+2

el "dbo". debe estar al lado de las tablas desde las que está leyendo la vista. –

1

Estaba buscando exactamente lo que publicó Darth Continent. Esto funcionó como un encanto, sin embargo, era una situación completamente diferente. Creo que la respuesta anterior debería al menos ser acreditada como la resolución, y si no, un seguimiento sería genial.

+0

Esto funcionó para mí: CREATE VIEW [dbo] [PERSON_V] CON SCHEMABINDING AS SELECT SL_LAST_NAME + ';. '+ SL_FIRST_NAME AS RES_NAME, ASSIGNED_ORG, person_id, [USER_NAME] AS WINDOWS_ACCOUNT, OFFICE_BUILDING, OFFICE_ROOM, MAIL_STOP, OFFICE_PHONE, JOB_TITLE, RES_TYPE, '[email protected]' AS EMAIL_ADDR, PARENT_RSRC_ID DE dbo.PERSON IR CREAR UN ÍNDICE CLÚSTER INDIVIDUAL IX_PERSON_ID EN dbo.PERSON_V (PERSON_ID) IR –

Cuestiones relacionadas