2012-05-10 16 views
10

Der dritte Teil dieser Aufgabe, an der ich arbeite, lautet: "Erstellen und indizieren Sie die vorhandene Northwind-Sicht" dbo.Orders Qry "basierend auf den Spalten OrderID und Mitarbeiter-ID. "Index für Sicht kann nicht erstellt werden, da die Sicht nicht schemagebunden ist Fehler 1939

Es wird erwartet, dass ich einen Fehler erhalten werde; Mein Lehrer hat uns jedoch nur gesagt, dass wir es googlen sollen. Ich habe es getan, aber die Bindung des Schemas ist nicht einmal in der Unterrichtsstunde dieser Woche oder anderen, und die Dinge, die ich gefunden habe, sind zu tiefgehend, als dass ich sie verstehen könnte.

Ist das ein Problem von mir nicht eine Box zu überprüfen oder eine Einstellung irgendwo zu ändern?

Antwort

20

Sounds wie dies beschreibt eine indizierte Sicht, können Sie sie auf Microsofts Website here nachlesen. Microsoft ermöglicht diese Fähigkeit mit SQL 2005 beginn

Im Text für die Sichtdefinition, müssen Sie würden die Worte zum Beispiel WITH SCHEMABINDING kurz nach der CREATE VIEW Anweisung hinzuzufügen:

CREATE VIEW dbo.MyView 
WITH SCHEMABINDING 

AS 

SELECT a, b, c 
FROM dbo.MyTable 

Indizierung hinzuzufügen, Sie würden der Ansichtsdefinition eine ähnliche Anweisung wie folgt hinzufügen:

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

GO 
+0

Die Schemaansicht 'MyView' kann nicht gebunden werden, da der Name 'MyTable' für die Schemaanbindung ungültig ist. Namen müssen zweiteilig sein und ein Objekt darf nicht selbst referenzieren. –

+3

"dbo." Hinzufügen neben dem Namen Ihrer Ansicht. –

+2

die "dbo." sollte neben den Tabellen sein, aus denen die Ansicht liest. –

1

Ich suchte genau nach was von Darth Continent gepostet wurde. Das funktionierte wie ein Zauber, aber es war eine ganz andere Situation. Ich bin der Meinung, dass die obige Antwort zumindest als Resolution gelten sollte, und wenn nicht, wäre ein Follow-up großartig.

+0

Das ist für mich gearbeitet: CREATE VIEW [dbo] [PERSON_V] MIT SCHEMA 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 VON dbo.PERSON GO CREATE UNIQUE CLUSTERED INDEX IX_PERSON_ID ON dbo.PERSON_V (PERSON_ID) GO –

Verwandte Themen