SqlFunctionAttribute.IsDeterministic 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指示用户定义的函数是否是确定性的。
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 还可用于以索引计算列和索引视图的形式为函数的结果编制索引。 如果未指定此属性,则假定该函数为非确定性函数。
访问本地数据的函数可以是确定性的。 数据访问特征由 DataAccess 和 SystemDataAccess 属性单独捕获。
请注意,对远程服务器的数据访问 (例如,使用 SqlConnection 连接到另一个 SQL Server 实例) 在用户定义的函数中可用。 但是,你仍必须遵守声明 IsDeterministic 。 如果 CLR) 函数的公共语言运行时 (标记为确定性,则它不应在远程服务器中引起副作用。 虽然对上下文连接的副作用受到限制,但SQL Server不会对远程连接的副作用强制实施限制。
此特性的默认值为 false
。
如果给定相同的输入值和相同的数据库状态,则不要将函数标记为确定性函数。 当函数不是真正的确定性时,将函数标记为确定性可能会导致索引视图和计算列损坏。