SqlFunctionAttribute.IsDeterministic プロパティ

定義

ユーザー定義関数が決定的であるかどうかを示します。

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

プロパティ値

関数が決定的である場合は true。それ以外の場合は false

注釈

ユーザー定義関数は、同じ入力値と同じデータベース状態を指定して常に同じ出力値を生成する場合、決定論的であると言われます。

プロパティは IsDeterministic 、インデックス付き計算列とインデックス付きビューの形式で関数の結果にインデックスを作成する場合にも役立ちます。 このプロパティが指定されていない場合、関数は非決定的であると見なされます。

ローカル データにアクセスする関数は、決定的な場合があります。 データ アクセス特性は、 プロパティと SystemDataAccess プロパティによってDataAccess個別にキャプチャされます。

リモート サーバーへのデータ アクセス (たとえば、 を使用してSqlConnection別のSQL Server インスタンスに接続する) は、ユーザー定義関数で使用できます。 ただし、宣言は引き続き尊重する IsDeterministic 必要があります。 共通言語ランタイム (CLR) 関数が決定論的としてマークされている場合は、リモート サーバーで副作用を引き起こさないでください。 コンテキスト接続に対する副作用は制限されていますが、SQL Serverではリモート接続に対する副作用の制限は適用されません。

この属性の既定値は false です。

同じ入力値と同じデータベース状態を指定して、関数が常に同じ出力値を生成するとは限らない場合は、関数を決定論的としてマークしないでください。 関数が真に決定論的でない場合に、関数を決定論的としてマークすると、インデックス付きビューと計算列が破損する可能性があります。

適用対象