set quoted identifier on что это в sql

SET QUOTED_IDENTIFIER

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql������� � ����� �� ���������� � ���������� SQL Server, ����������� SET. ��� ���� �� ��� ���� �����������, � ������ � SET QUOTED_IDENTIFIER, �.�. ��� ���������� ���� � ���� ����� ����� ���������� ������������, � ������� ������ ���� �� ������������.

���� �� ����������� � ����� ������ ��� ������ XML, � �������� ������ ���� ������ XML, �� ��� ���������� �����������, ��� ��������� set quoted_identifier ����� �������� ON. set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

� ��������� ������, �� ������� ������ ���������� ������ �������: Msg 1934, Level 16, State 1, Line 6
SELECT failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

Msg 1934, Level 16, State 1, Line 4
CREATE INDEX failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with spatial index operations.

Msg 1934, Level 16, State 1, Line 4
CREATE INDEX failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

Msg 1934, Level 16, State 1, Line 4
CREATE INDEX failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

Msg 1934, Level 16, State 1, Line 4
CREATE INDEX failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

��� ���� �������: � ���� ����������� �����������: Msg 103, Level 15, State 4, Line 1
The identifier that starts with ‘C:\Program Files\Microsoft Visual Studio\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\X64\Microsoft Visual Studio Test’ is too long. Maximum length is 128.

��� ��������, ������������� ����, ���������� ���������, �.�., ������� ������, �� ����� ���������� �������� �������� ����������. �� ���������� ��� ���� �����������, ���� ���� �� ������ ������� ������ � �������� ��� ������ �� ����������� ����, �� ����������� �� ������ ������ �� ������������, �.�. �� ����� �� ������� �� ���������� set quoted_identifier ON. � ������ ������������: set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql
set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

� ������ ��� �� �������, �� � ���������� OFF set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql
set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Msg 1934, Level 16, State 1, Procedure test_proc_01, Line 5
INSERT failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

��� ���� �� �� �������� ����� ��������� ���������� � ON: � ���� ���� �� � ���� ����� ��������� ���� �� ���������� ON, �� �������� �� ��� ������: ��� � ��� ������ ����, ��������� ��������� ����������� � ������ ��������/���������. ��������� �� ����� � ������� ��������� ��������:
�� � ��� ��� �� ��� ��������. ���� � ��� ��������� ������� ������ ���������, �� ��� ��� �� ��������� ���������, � �������� ���� �������������� ������� ���������. ������: set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

�� � ��� �� �� ��� ������, �����������, ��� �������� �������� � ��������� ��� �� �� ������, � ����� xp_cmdshell, ������� � ���� ������� �������� ������� ��������� ������ sqlcmd.exe � ��� ����� �� ������ ������: set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Источник

ANSI NULLS и QUOTED IDENTIFIER убивали вещи. Для чего они?

примечание: Я проверил понимание значение параметра и это не ответ на мой вопрос.

Я получил мои DBAs для запуска индекса, который я сделал на моих серверах Prod (они просмотрели его и одобрили).

это ускорило мои запросы, как я и хотел. Однако я начал получать такие ошибки:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

как разработчик я обычно игнорировал эти настройки. И это никогда не имело значения. (За 9+ лет). Ну, сегодня это важно.

Я пошел и посмотрел на один из sprocs, которые терпят неудачу, и у него есть это перед созданием для sproc:

может ли кто-нибудь сказать мне с точки зрения разработчика приложений, что делают эти операторы set? (просто добавление вышеуказанного кода перед моими инструкциями Index create не устранило проблему.)

Примечание: вот пример того, как выглядели мои индексы:

4 ответов

OK, с точки зрения разработчика приложений, вот что делают эти настройки:

значение параметра

этот параметр управляет тем, как кавычки «..» интерпретируются компилятором SQL. Когда QUOTED_IDENTIFIER включено, тогда кавычки рассматриваются как скобки ( [. ] ) и может использоваться для цитирования имен объектов SQL, таких как имена таблиц, имена столбцов и т. д. Когда он выключен (не рекомендуется), кавычки обрабатываются как апострофы ( ‘..’ ) и может использоваться для цитаты текстовые строки в командах SQL.

параметр ansi_nulls

параметр concat_null_yields_null

найти документация, блога, и StackOverflow ответы бесполезно объяснять, что включается QUOTED_IDENTIFIER средства.

былые времена

первоначально SQL Server разрешал использовать кавычки ( «. » ) и Апостроф ( ‘. ‘ ) вокруг строк взаимозаменяемо (как это делает Javascript):

и все это работало, и имело смысл.

затем Анси и другие идеи:

что означает, что если вы хотите «цитата» фанки имя столбца или таблицы вы должны использовать кавычки:

если вы знали SQL Server, вы знали, что цитата Маркс!—31—> уже использовались для представления строк. Если вы слепо пытались выполнить это В ANSI-SQL В как будто T-SQL: это ерунда, и SQL Server сказал вам так:

вы должны выбрать новое поведение ANSI

таким образом, Microsoft добавила функцию, чтобы позволить вам выбрать в ANSI вкус SQL.

Оригинал

УСТАНОВИТЬ QUOTED_IDENTIFIER ON

T-SQL (плохо?) (например, SQL, созданный Entity Framework)

ANSI-SQL (хорошо?)

Я думаю, что при перестройке индексов он был выключен.

при работе с фильтрованным индексом необходимо включить нижеприведенную настройку:

вам нужно добавить, чтобы добавить

для всех моих хранимых процедур редактирование таблицы с вычисляемым столбцом, чтобы избежать этого ошибка.

когда SET ANSI_NULLS включен, оператор SELECT, который использует WHERE column_name = NULL возвращает нулевые строки, даже если в имя столбца. Инструкция SELECT, использующая WHERE column_name NULL возвращает нулевые строки, даже если в column_name есть значения nonnull.

когда SET ANSI_NULLS выключен, равно ( = ) и не равно () операторы сравнения не следуют стандарт ISO. ОТБОР оператор, использующий WHERE column_name = NULL возвращает строки, которые имеют значения null в column_name. Инструкция SELECT, использующая WHERE column_name NULL возвращает строки, которые имеют значения nonnull в колонна. Кроме того, оператор SELECT, который использует WHERE column_name Возвращает XYZ_value всех строк, которые не XYZ_value и что не НОЛЬ.

при установке QUOTED_IDENTIFIER включен, идентификаторы могут быть разделены двойные кавычки, и литералы должны быть заключены в одинарные кавычки. Когда SET QUOTED_IDENTIFIER выключен, идентификаторы не могут быть в кавычках и должен следовать всем правилам Transact-SQL для идентификаторов. Для дополнительные сведения см. В разделе идентификаторы базы данных. Литералы могут быть разделены одинарными или двойными кавычками.

когда SET QUOTED_IDENTIFIER включен (по умолчанию), все строки разделены двойная цитата метки интерпретируются как идентификаторы объектов. Таким образом кавычки идентификаторы не должны следовать Transact-SQL правила для идентификаторов. Они могут быть зарезервированы ключевые слова и могут включать символы, не разрешенные в языке Transact-SQL для идентификаторов. Двойной кавычки нельзя использовать для разграничения строковых выражений; одинарные кавычки должны использоваться для заключения символьных строк. Если одинарная кавычка ( ‘ ) является частью литеральной строки, она может быть представлены два один кавычки.)»( УСТАНОВИТЬ ЗНАЧЕНИЕ ПАРАМЕТРА должен быть включен, когда зарезервированные ключевые слова используются для имен объектов в база данных.

когда SET CONCAT_NULL_YIELDS_NULL включен, объединение нулевого значения с помощью строки получается нулевой результат. Например, выберите ‘ abc ‘ + NULL дает NULL. Когда SET CONCAT_NULL_YIELDS_NULL выключен, объединение значения null со строкой дает саму строку (значение null обрабатывается как пустая строка). Например, выберите » abc » + null выходы азбука.

Если SET CONCAT_NULL_YIELDS_NULL не указан, то настройка Применяется параметр базы данных CONCAT_NULL_YIELDS_NULL.

ANSI_NULLS ON делает любое двоичное логическое выражение с нулевым значением равным false. Используя следующий шаблон:

правильный способ проверить значение null-использовать is [not] NULL

QUOTED_IDENTIFER ON просто позволяет использовать двойные кавычки для разграничения идентификаторов (плохая идея IMO, просто квадратные скобки пользователя)

Источник

Инструкции SET (Transact-SQL)

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

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

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

SET DATEFORMAT

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

SET QUOTED_IDENTIFIER

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

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

SET RESULT SET CACHING (предварительная версия)
Примечание. Эта возможность действует только для Azure Synapse Analytics.

SET TEXTSIZE

Инструкции настроек ISOSET ANSI_DEFAULTS

SET ANSI_WARNINGS

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

SET STATISTICS TIME

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

Рекомендации по использованию инструкций SET

Все инструкции SET выполняются во время выполнения или запуска, кроме следующих инструкций, которые выполняются во время анализа:

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

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

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

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

Если в инструкции SET используется значение ON и OFF, можно указать любое из них для нескольких параметров SET.

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

Например, инструкция SET QUOTED_IDENTIFIER, ANSI_NULLS ON устанавливает параметры QUOTED_IDENTIFIER и ANSI_NULLS в значение ON.

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

Настройка SET LOCK_TIMEOUT не влияет на выполнение инструкций ALTER, CREATE и DROP DATABASE.

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

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

Запросы режима MARS совместно используют глобальное состояние, которое содержит большую часть настроек параметров SET последней сессии. Параметры SET могут измениться при выполнении любого запроса. Эти изменения специфичны для контекста запроса, в котором они устанавливаются, и не влияют на другие параллельные запросы режима MARS. Однако после завершения выполнения запроса новые параметры SET копируются в глобальное состояние сеанса. Новые запросы, которые выполняются в том же самом сеансе, после этого изменения будут использовать новые значения параметров SET.

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

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

Если вы создаете индексы в вычисляемых столбцах и индексированных представлениях и управляете ими, необходимо установить для следующих параметров SET значение ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING и ANSI_WARNINGS. Установите для параметра NUMERIC_ROUNDABORT значение OFF.

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

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

Источник

SQLShack

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

SET QUOTED_IDENTIFIER settings in SQL Server

In this article, we will explore QUOTED_IDENTIFIER behavior, default value, and comparison with a different value. Set options at connection level control query behavior in SQL Server. The query might behave differently with different set options and their values.

Introduction

Most of the developers use SET QUOTED_IDENTIFIER ON/OFF option in a stored procedure and user-defined functions. If you have not used it, SQL Server automatically adds this while scripting out the objects. This article explains the configuration and its benefits.

Let’s create a stored procedure with the following script:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

It generates the script in the new query window of SSMS. In the generated script, we can see an option SET QUOTED_IDENTIFIER ON. We have not added any such argument while creating the stored procedure. You can review the stored procedure script again for verification:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

You are probably asking yourself why SSMS adds these options while generating a script for an object?

Let’s understand the QUOTED_IDENTIFIER option in SQL Server in the next section.

SET QUOTED_IDENTIFIER

We use single or double quotes in the script. Suppose we want to store employees’ name in a SQL table. The employee name might include a single quote in the name as well.

Let’s say customer name is O’Brien, if we try to insert this name in a table, we get the following error message:

207, Level 16, State 1, Line 3 Invalid column name ‘O’Brien’.

We can execute the query as shown below, and it inserts record successfully in the table:

We can use single quotes as well to insert the data.

QUOTED_IDENTIFIER controls the behavior of SQL Server handling double-quotes.

Look at the following example with different values of QUOTED_IDENTIFIER:

Example 1: SET QUOTED_IDENTIFIER OFF

It gives the output Rajendra:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Example 2: SET QUOTED_IDENTIFIER ON

Let’s turn this option ON and execute the query.

We get an error message stating invalid column name:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

We cannot use a reserved keyword for object names. For example, function is a reserved keyword, and we cannot create any existing object with this:

It gives the following error message:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

As highlighted earlier, we can use reserved keywords in the object name once we enable the QUOTED_IDENTIFIER ON and SQL Server does not check the string for any existing rules.

In the following query, we use the reserved keyword function as an object:

Once the object is created, we can access the object without specifying the QUOTED_IDENTIFIER option. Both queries execute successfully:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Let’s view the behavior of single quotes along with QUOTED_IDENTIFIER ON and OFF:

As you can see in the following screenshot, it treats string inside single quotes as literal. In the first select statement, it prints the string inside a single quote.

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

With the QUOTED_IDENTIFIER OFF, it gives a similar output. This setting does not impact SQL Server behavior for the single quotes:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

In the following example, let’s observe a single and double quote behavior with QUOTED_IDENTIFIER:

Both Select statements return similar output once we turn off the QUOTED_IDENTIFIER option:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

In another example, we use previous Select statements with the QUOTE_INDENTIFIER ON:

We get an error message with the double-quotes. You can also see that SQL Server does not parse the double-quoted string. It cannot recognize the object and highlights the string with an underline:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Let’s look at a few complex examples with a combination of single and double quotes in a string:

It contains three single quotes marks:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

If we use a double quote and single quote together, it treats double quote as string delimiter and prints the other single quote. We can explore a few more commands to see the behavior of QUOTED_IDENTIFIER:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Identify objects using QUOTED_IDENTIER explicitly

We can use sys.sql_modules to filter the results using the QUOTED_IDENTIFIER setting ON or OFF. It shows the objects in which we defined QUOTED_IDENTIFIER explicitly. It does not show the objects using the default behavior:

Query to find objects using QUOTED_IDENTIFIER ON

Query to find objects using QUOTED_IDENTIFIER OFF

SSMS property to control QUOTED_IDENTIFIER

At the beginning of the article, we created a new stored procedure without specifying QUOTED_IDENTIFIER. Later, we generated the script, and it includes SET QUOTED_IDENTIFIER ON option.

It gives various options to control SSMS behavior such as environment details, query execution, query results behavior:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

It also has a search option in that we can filter out the required configuration. Search for keyword ANSI, and it gives you settings to control query execution behavior.

In this screenshot, we can see it has an option SET QUOTED_IDENTIFIER, and it is enabled. It is the default behavior of SQL Server:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

If we want to turn off QUOTE_IDENIFIER, we can remove the tick from the checkbox:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Click OK and restart the SSMS so that this setting can take effect. Let’s create the procedure [dbo].[SQLTest] again and generate the script for it. In the below screenshot, we can see that it has QUOTED_IDENTIFIER OFF now:

set quoted identifier on что это в sql. Смотреть фото set quoted identifier on что это в sql. Смотреть картинку set quoted identifier on что это в sql. Картинка про set quoted identifier on что это в sql. Фото set quoted identifier on что это в sql

Note: If we change the QUOTED_IDENTIFIER option SSMS tools, it turns off the QUOTED_IDENTIFIER for all client session. You should be careful about modifying this option in the production environment.

Verify QUOTED_IDENTIFIER in the SSMS execution plan

We can use the SQL execution plan to view the current value of QUOTED_IDENTIFIER. Enable Actual execution plan before executing the query (shortcut key – CTRL+M):

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *