10138: Das %1!-Objekt kann für die '%2!'-Sicht nicht erstellt werden, da in der Auswahlliste
Fehlermeldung:
Meldung 10138, Ebene 16, Status 1, Zeile 2
Das %1!-Objekt kann für die '%2!'-Sicht nicht erstellt werden, da in der Auswahlliste COUNT_BIG nicht ordnungsgemäß verwendet wird. Fügen Sie der Auswahlliste COUNT_BIG(*) hinzu.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, eine indizierte Sicht, die eine Aggregatsfunktion verwendet, ohne die in diesen Fällen vorgeschriebene COUNT_BIG(*) Angabe zu verwenden.
Auswirkungen:
Das SQL Statement kann nicht geparst werden. Die weitere Ausführung wird abgebrochen.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. In indizierten Sichten, die eine Aggregatsfunktion verwenden, muß ein COUNT_BIG(*) vorhanden sein.
Versionen:
Alle Versionen von SQL Server (ab SQL Server 2000).
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(UnitPrice*Quantity*(1.00-Discount)) AS Revenue,
OrderDate, ProductID
FROM dbo.[Order Details] AS od
JOIN dbo.Orders AS o
ON od.OrderID = o.OrderID
GROUP BY OrderDate, ProductID;
GO
CREATE UNIQUE CLUSTERED INDEX cix_MyOrderView
ON dbo.MyOrderView (OrderDate, ProductID);
GO
Anmerkungen:
Das obige Beispiel verwendet die SUM() Aggregatsfunktion in der indizierten Sicht MyOrderView. Da Aggregatsfunktionen in einer indizierten Sicht ein COUNT_BIG(*) notwendig machen, wird der Fehler ausgelöst.