Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Язык программирования Transact-SQL предоставляет несколько SET операторов, которые изменяют текущую обработку сессии с конкретной информацией. Утверждения сгруппированы по категориям, SET показаным в следующей таблице.
Для информации о задании локальных переменных с помощью SET оператора см. SET @local_variable (Transact-SQL).
Соображения при использовании этих 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-го поколения