Поделиться через


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 также полезно для индексирования результата функции в виде индексированных вычисляемых столбцов и индексированных представлений. Если это свойство не указано, функция считается недетерминированной.

Функции, которые обращаются к локальным данным, могут быть детерминированными. Характеристика доступа к данным фиксируется отдельно свойствами DataAccess и SystemDataAccess .

Обратите внимание, что доступ к данным к удаленным серверам (например, с помощью SqlConnection для подключения к другому экземпляру SQL Server) доступен в определяемых пользователем функциях. Тем не менее, вы должны по-прежнему IsDeterministic соблюдать заявление. Если функция CLR помечена как детерминированная, она не должна вызывать побочные эффекты на удаленном сервере. Хотя побочные эффекты для контекстного подключения ограничены, SQL Server не будет применять ограничение для побочных эффектов для удаленных подключений.

Значение данного атрибута по умолчанию — false.

Не помечайте функцию как детерминированную, если функция не всегда создает одинаковые выходные значения, учитывая те же входные значения и одинаковое состояние базы данных. Пометка функции как детерминированной, если функция не является действительно детерминированной, может привести к повреждению индексированных представлений и вычисляемых столбцов.

Применяется к