Ich habe die folgenden Objekte in einer create view-Anweisung im folgenden Format verwendet.
%Vor% Die objects1
ist eine Tabelle aus Database1
, die Indizes enthält. Die objects2 through objects5
befinden sich in einem anderen database
und alle diese 4 Objekte werden mit No indexes
angezeigt.
Jetzt versuche ich eine indizierte Sicht mit allen oben genannten fünf Objekten zu erstellen, aber der SQL-Server erlaubt es mir nicht.
Erster Fehler ist:
Names must be in two-part format and an object cannot reference itself.
Zweiter Fehler ist:
Cannot schema bind view 'dbo.vw_Order' because name 'db2.dbo.object2' is invalid for schema binding.
Nun habe ich diese Fehler gegoogelt und ich kam zu folgenden Annahmen:
Wenn ich die Ansicht wie eine Abfrage ausführen lasse, empfiehlt Execution Plan, einen Index für Spalten aus Objekten in db2 zu erstellen. Bitte lassen Sie mich wissen, ob meine Annahmen richtig sind. Wenn nicht, lassen Sie mich bitte wissen, wie ich in dieser Situation eine Ansicht erstellen kann.
Da Sie bereits untersucht haben, dass alle Objekte (Tabellen / View) in einer Definition einer indizierten Sicht TWO PART
name haben müssen, dh [Schema].[Object]
, bedeutet dies, dass sich alle Objekte in einer Datenbank befinden und Sie nicht erstellen können indizierte Sicht über mehrere Datenbanken. Indizierte Sichten weisen eine Reihe von Einschränkungen auf, sollten Sie nach Möglichkeit eine gespeicherte Prozedur erstellen.
Ein anderer Fehler, den Sie bekommen, ist, dass Sie die Option WITH SCHEMABINDING
in der Definition Ihrer Ansicht nicht finden. Es ist eine Voraussetzung für die Erstellung einer indizierten Sicht, dass Sie beim Erstellen der indizierten Sicht die Option WITH SCHEMABINDING verwenden müssen, d. H. Keines der zugrunde liegenden Schemata für Tabellen / Objekte kann geändert werden, bis Sie diese Sicht löschen.
Auch hier würde ich vorschlagen, in gespeicherte Prozeduren zu schauen, da es in Ihrem Fall unmöglich erscheint, eine indizierte Ansicht zu erstellen, wegen all der Einschränkungen, die damit verbunden sind.
Fügen Sie dem Namen und den Tabellen der Ansicht den Besitzer hinzu. Wie:
%Vor%Sie können die indizierte Sicht nicht mit zwei Objekten verschiedener Datenbanken erstellen.
Tags und Links sql sql-server-2008 tsql sql-server-2012