1947: %1! für die "%2!"-Sicht kann nicht erstellt werden. Die Sicht enthält eine Selbstverknüpfung

Fehlermeldung:
Meldung 1947, Ebene 16, Status 1, Zeile 2
%1! für die "%2!"-Sicht kann nicht erstellt werden. Die Sicht enthält eine Selbstverknüpfung für "%3!".

Ebene:
16.

Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht eine indizierte Sicht zu erstellen, die einen Self-Join enthält.

Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.

Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Der Self-Join muss entfernt werden.

Versionen:
Alle Version von SQL Server.

Beispiele:
USE Northwind;
GO
SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING,
    ANSI_WARNINGS,
    CONCAT_NULL_YIELDS_NULL,
    ARITHABORT,
    QUOTED_IDENTIFIER,
    ANSI_NULLS ON;
GO

IF OBJECT_ID ('dbo.MyOrderView', 'View') > 0
   DROP VIEW dbo.MyOrderView;
GO
CREATE VIEW dbo.MyOrderView
WITH SCHEMABINDING
AS
SELECT SUM(od.UnitPrice*od.Quantity*(1.00-od.Discount)) AS Revenue,
    o.OrderDate, od.ProductID, COUNT_BIG(*) AS MyCount
  FROM dbo.[Order Details] AS od
  JOIN dbo.Orders AS o
    ON od.OrderID = o.OrderID
    JOIN dbo.Orders t1
      ON o.OrderID = t1.OrderID
 GROUP BY o.OrderDate, od.ProductID;
GO

CREATE UNIQUE CLUSTERED INDEX cix_MyOrderView
    ON dbo.MyOrderView (OrderDate, ProductID);
GO

Anmerkungen:
Im obigen Beispiel enthält die Sicht einen Self-Join auf die Tabelle dbo.Orders. Dies löst den Fehler aus.

Noch kein Feedback
Einen Kommentar hinterlassen

Sie müssen eingeloggt sein, um einen Kommentar zu hinterlassen. Jetzt einloggen!

Sie haben noch kein Konto. Sie können sich jetzt registrieren...
(Es dauert nur ein paar Sekunden!)