SET Утверждения (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

Язык программирования Transact-SQL предоставляет несколько SET операторов, которые изменяют текущую обработку сессии с конкретной информацией. Утверждения сгруппированы по категориям, SET показаным в следующей таблице.

Для информации о задании локальных переменных с помощью SET оператора см. SET @local_variable (Transact-SQL).

Категория Выписки
Инструкции даты и времени SET DATEFIRST

SET DATEFORMAT
Инструкции блокировки SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT
Прочие инструкции SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER
Инструкции выполнения запросов SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY
Примечание. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET КЭШИРОВАНИЕ РЕЗУЛЬТАТОВ SET (Предварительный просмотр)
Примечание. Эта функция применима только к Azure Synapse Analytics.

SET ROWCOUNT

SET TEXTSIZE
Инструкции настроек ISO SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS
Статистические инструкции SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET SHOWPLAN_XML

SET STATISTICS IO

SET STATISTICS XML

SET STATISTICS PROFILE

SET STATISTICS TIME
Инструкции управления транзакциями SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

Соображения при использовании этих SET утверждений

  • Все SET операторы выполняются во время выполнения или выполнения, за исключением этих, которые запускаются во время разбора:

    • SET FIPS_FLAGGER
    • SET OFFSETS
    • SET PARSEONLY
    • и SET QUOTED_IDENTIFIER.
  • Если SET оператор выполняется в хранимой процедуре или триггере, значение SET опции восстанавливается после того, как сохранённая процедура или триггер возвращает управление. Также, если указать SET оператор в динамической SQL-строке, который запускается с помощью sp_executesql или EXECUTE, значение опции восстанавливается после возвращения SET контроля из пакета, указанного в динамической SQL-строке.

  • Хранимые процедуры выполняются с настройками, SET заданными во время выполнения, за исключением SETSET ANSI_NULLS и SETSET QUOTED_IDENTIFIER. Хранящиеся процедуры, SETSET ANSI_NULLS указывающие или SETSET QUOTED_IDENTIFIER использующие параметры, указанные во время создания хранимой процедуры. Если использовать внутри сохранённой процедуры, любая SET настройка игнорируется.

  • Параметр user options процедуры sp_configure допускает настройку в пределах сервера и работает с множеством баз данных. Эта настройка также ведёт себя как явное SET утверждение, за исключением того, что происходит во время входа.

  • Настройки базы данных, установленные by use ALTER DATABASE , действительны только на уровне базы данных и вступают в силу только при явной установке. Параметры базы данных переопределяют параметры экземпляра, которые устанавливаются с помощью процедуры sp_configure.

  • Если SET оператор использует ВКЛЮЧЕНО и ВЫКЛЮЧЕНО, вы можете выбрать любой из них для нескольких SET вариантов.

    Примечание.

    Это не относится к SET статистическим параметрам.

    Например, SET QUOTED_IDENTIFIER, ANSI_NULLS ON устанавливает оба QUOTED_IDENTIFIER и ANSI_NULLS в ON.

  • SET Настройки операторов переопределяют идентичные настройки базы данных, которые устанавливаются с помощью ALTER DATABASE. Например, значение, указанное в операторе SET ANSI_NULLS , переопределит настройки базы данных для ANSI_NULLs. Кроме того, для некоторых настроек подключений автоматически устанавливается значение ON, если пользователь подключается к базе данных, основываясь на значениях, заданных предыдущим использованием настроек процедуры sp_configure user options, или на значениях, которые применимы ко всем подключениям ODBC и OLE/DB.

  • ALTER, CREATE и DROP DATABASE заявления не уважают сеттинг SETSET LOCK_TIMEOUT .

  • Когда глобальная или ярлыковая SET оператор устанавливает несколько настроек, выпуск ярлыка SET сбрасывает предыдущие настройки для всех тех параметров, которые затрагивает этот SET ярлык. Если после выпуска ярлыка устанавливается SET опция, SET на которую влияет оператор ярлыка SET , индивидуальный SET оператор перекрывает сопоставимые настройки ярлыка. Примером утверждения с ярлыками SET может быть SETSET ANSI_DEFAULTS.

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

  • Несколько запросов Active Result Set (MARS) имеют общее глобальное состояние, содержащее самые свежие настройки сессии SET . Когда каждый запрос выполняется, он может изменять параметры SET . Эти изменения специфичны для контекста запроса, в котором они устанавливаются, и не влияют на другие параллельные запросы режима MARS. Однако после завершения выполнения запроса новые SET опции копируются в глобальное состояние сессии. Новые запросы, выполняющиеся в рамках той же сессии после этого изменения, будут использовать эти новые SET настройки опций.

  • При выполнении хранимой процедуры из пакета либо из другой хранимой процедуры она выполняется под значениями параметров, которые установлены в базе данных, содержащей хранимую процедуру. Например, если хранимая процедура db1.dbo.sp1 вызывает хранимую процедуру db2.dbo.sp2, то хранимая процедура sp1 выполняется под текущим значением уровня совместимости базы данных db1, а хранимая процедура sp2 — под текущим значением уровня совместимости базы данных db2.

  • Когда инструкция Transact-SQL ссылается на объекты, которые размещены в многих базах данных, к ней применяется текущий контекст базы данных и текущий контекст подключения. В этом случае, если инструкция языка Transact-SQL находится в пакете, текущим контекстом соединения является база данных, определенная инструкцией USE. Если инструкция языка Transact-SQL находится в хранимой процедуре, то контекстом соединения является база данных, которая содержит хранимую процедуру.

  • При создании и обработке индексов на вычисленных столбцах или индексных представлениях необходимо установить следующие SET параметры на ВКЛ: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLSANSI_PADDING, , и ANSI_WARNINGS. Установите опцию NUMERIC_ROUNDABORT ВЫКЛЮЧЕНО.

    Если вы не установите ни одну из этих опций с необходимыми значениями, INSERT, UPDATEDELETE, действия DBCC CHECKDB и DBCC CHECKTABLE в индексных представлениях или таблицах с индексами в вычисленных столбцах не сработают. SQL Server сформирует ошибку с указанием всех неправильно заданных параметров. Также SQL Server будет выполнять инструкции SELECT в этих таблицах или индексных представлениях, как будто индексы в вычисляемых столбцах или представлениях не существуют.

  • Когда SET RESULT_SET_CACHING ВКЛЮЧЕН, он включает функцию кэширования результатов для текущей клиентской сессии. Для RESULT_SET_CACHING нельзя указать значение ON для сеанса, если на уровне базы данных указано значение OFF. Когда SET RESULT_SET_CACHING ВЫКЛЮЧЕН, функция кэширования наборов результатов отключается для текущей клиентской сессии. Для изменения этого параметра требуется членство в роли public. Область применения: Azure Synapse Analytics 2-го поколения