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 还可用于以索引计算列和索引视图的形式为函数的结果编制索引。 如果未指定此属性,则假定函数为非确定性函数。

访问本地数据的函数可以是确定性的。 数据访问特征由 DataAccessSystemDataAccess 属性单独捕获。

请注意,对远程服务器的数据访问 (例如,使用 SqlConnection 连接到另一个SQL Server实例) 在用户定义的函数中可用。 但是,仍必须遵循声明 IsDeterministic 。 如果公共语言运行时 (CLR) 函数标记为确定性,则它不应在远程服务器中引起副作用。 虽然对上下文连接的副作用受到限制,但SQL Server不会对远程连接的副作用强制实施限制。

此特性的默认值为 false

如果函数不始终生成相同的输出值(给定相同的输入值和相同的数据库状态),请不要将函数标记为确定性函数。 当函数不是真正确定性的时,将函数标记为确定性函数可能会导致索引视图和计算列损坏。

适用于