SqlFunctionAttribute.IsDeterministic Proprietà

Definizione

Indica se la funzione definita dall'utente è deterministica.

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

Valore della proprietà

true se la funzione è deterministica; in caso contrario, false.

Commenti

Una funzione definita dall'utente deve essere deterministica se produce sempre gli stessi valori di output specificati gli stessi valori di input e lo stesso stato del database.

La IsDeterministic proprietà è utile anche per indicizzare il risultato della funzione sotto forma di colonne calcolate indicizzate e viste indicizzate. Se questa proprietà non è specificata, si presuppone che la funzione sia non deterministica.

Le funzioni che accedono ai dati locali possono essere deterministiche. La caratteristica di accesso ai dati viene acquisita separatamente dalle DataAccess proprietà e SystemDataAccess .

Si noti che l'accesso ai dati ai server remoti (ad esempio, l'uso di un SqlConnection per connettersi a un'altra istanza di SQL Server) è disponibile nelle funzioni definite dall'utente. Tuttavia, è comunque necessario rispettare la IsDeterministic dichiarazione. Se la funzione COMMON Language Runtime (CLR) è contrassegnata come deterministica, non deve causare effetti collaterali nel server remoto. Mentre gli effetti collaterali sulla connessione al contesto sono limitati, SQL Server non applichererà la restrizione per gli effetti collaterali sulle connessioni remote.

Il valore predefinito di questo attributo è false.

Non contrassegnare una funzione come deterministica se la funzione non produce sempre gli stessi valori di output, dato gli stessi valori di input e lo stesso stato del database. Contrassegnando una funzione come deterministica quando la funzione non è veramente deterministica può causare visualizzazioni indicizzate danneggiate e colonne calcolate.

Si applica a