1949: %1! für die '%2!'-Sicht kann nicht erstellt werden.

By Frank Kalis

Posted on Dez 9, 2010 von in 1000-1999

Fehlermeldung:
Meldung 1949, Ebene 16, Status 1, Zeile 2
%1! für die '%2!'-Sicht kann nicht erstellt werden. Die '%3!'-Funktion führt zu nicht deterministischen Ergebnissen. Verwenden Sie eine deterministische Systemfunktion, oder ändern Sie die benutzerdefinierte Funktion, um deterministische Ergebnisse zurückzugeben.

Ebene:
16.

Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, einen Index für eine Sicht zu erstellen, die eine nicht-deterministische Funktion verwendet.

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. Die nicht-deterministische Funktion muß aus der Sicht entfernt und/oder durch eine deterministische ersetzt werden.

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))* RAND() AS Revenue,
    OrderDate, ProductID, COUNT_BIG(*) AS MyCount
  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:
Im obigen Beispiel führt die Verwendung der Funktion RAND() zu dem Fehler.

Dieser Eintrag wurde eingetragen von und ist abgelegt unter 1000-1999.

Noch kein Feedback


Formular wird geladen...