SqlFunctionAttribute.IsDeterministic Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, ob die benutzerdefinierte Funktion deterministisch ist.
public:
property bool IsDeterministic { bool get(); void set(bool value); };
public bool IsDeterministic { get; set; }
member this.IsDeterministic : bool with get, set
Public Property IsDeterministic As Boolean
Eigenschaftswert
true
, wenn die Funktion deterministisch ist, andernfalls false
.
Hinweise
Eine benutzerdefinierte Funktion gilt als deterministisch, wenn Sie bei denselben Eingabewerten und demselben Datenbankzustand auch immer dieselben Ausgabewerte erzeugt.
Die IsDeterministic -Eigenschaft ist auch nützlich, um das Ergebnis der Funktion in Form von indizierten berechneten Spalten und indizierten Ansichten zu indizieren. Wenn diese Eigenschaft nicht festgelegt ist, wird angenommen, dass die Funktion nicht deterministisch ist.
Funktionen, die auf lokale Daten zugreifen, können deterministisch sein. Das Datenzugriffsmerkmal wird separat von den DataAccess Eigenschaften und SystemDataAccess erfasst.
Beachten Sie, dass der Datenzugriff auf Remoteserver (z. B. mithilfe eines zum Herstellen einer SqlConnection Verbindung mit einem anderen SQL Server instance) in benutzerdefinierten Funktionen verfügbar ist. Sie müssen die Erklärung jedoch trotzdem IsDeterministic einhalten. Wenn die ClR-Funktion (Common Language Runtime) als deterministisch gekennzeichnet ist, sollte dies keine Nebenwirkungen auf dem Remoteserver verursachen. Während Nebenwirkungen für die Kontextverbindung eingeschränkt sind, erzwingt SQL Server die Einschränkung für Nebenwirkungen bei Remoteverbindungen nicht.
Der Standardwert dieses Attributs ist false
.
Markieren Sie eine Funktion nicht als deterministisch, wenn die Funktion bei Berücksichtigung der gleichen Eingabewerte und desselben Datenbankzustands nicht immer die gleichen Ausgabewerte erzeugt. Wenn Sie eine Funktion als deterministisch markieren, sie aber nicht wirklich deterministisch ist, kann dies zu beschädigten indizierten Sichten und berechneten Spalten führen.