SET QUOTED_IDENTIFIER (Transact-SQL), Microsoft Docs

Примушує SQL Server дотримуватися правил ISO щодо поділу лапками ідентифікаторів та рядків-літералів. Ідентифікатори, укладені в подвійні лапки, можуть бути зарезервованими ключовими словами Transact-SQL, або можуть містити символи, які зазвичай заборонені правилами синтаксису для ідентифікаторів Transact-SQL.

Синтаксичні позначення Transact-SQL

Якщо параметру SET QUOTED_IDENTIFIER присвоєно значення ON, ідентифікатори можна укладати в подвійні лапки і літерали повинні бути розділені одинарними лапками. Якщо параметру SET QUOTED_IDENTIFIER присвоєно значення OFF, ідентифікатори не можна укладати в лапки і повинні враховуватися всі правила Transact-SQL для ідентифікаторів. Щоб отримати додаткові відомості, див. Ідентифікатори. Літерали можуть розділятися як одинарними, і подвійними лапками.

Якщо параметру SET QUOTED_IDENTIFIER присвоєно значення ON (за замовчуванням), всі рядки, розділені подвійними лапками, розглядаються як ідентифікатори об'єктів. Таким чином, ідентифікатори, що укладені в лапки, не повинні задовольняти правила мови Transact-SQL для ідентифікаторів. Вони можуть бути зарезервованими ключовими словами, а також можуть містити символи, які зазвичай заборонені для ідентифікаторів мови Transact-SQL. Вирази з рядками-літералами не можна укладати у подвійні лапки; Для цього необхідно використовувати одинарні лапки. Якщо одинарна лапка (' ) є частиною рядка-літералу, то її необхідно записати через дві одинарні лапки (" ). Якщо в іменах об'єктів бази даних використовуються зарезервовані ключові слова, то параметру SET QUOTED_IDENTIFIER має бути присвоєно значення ON.

Якщо параметр SETQUOTED_IDENTIFIER присвоєно значення OFF, рядки-літерали у виразах можна розділяти або одинарними або подвійними лапками. Якщо рядки-літерали поділяються подвійними лапками, то рядку можуть утримуватися впроваджені одинарні лапки, такі як апострофи.

При створенні або зміні індексів у обчислюваних стовпцях або індексованих уявленнях параметру SET QUOTED_IDENTIFIER має бути присвоєно значення OFF. Якщо параметр SET QUOTED_IDENTIFIER має значення OFF, то в таблицях з індексами інструкції CREATE, UPDATE, INSERT і DELETE в обчислюваних стовпцях або індексованих уявленнях не працюватимуть. Додаткові відомості про налаштування параметрів SET з індексованими уявленнями та індексами на обчислюваних стовпцях див. у розділі «Аналіз використання інструкцій SET» розділу SET (Transact-SQL).

При з'єднанні з драйвером ODBC для власного клієнта SQL Server та постачальника OLE DB для власного клієнта SQL Server для SQL Server параметр QUOTED_IDENTIFIER автоматично встановлюється у значення ON. Це може бути налаштовано в джерелах даних ODBC, атрибутах з'єднання ODBC або властивостях з'єднання OLE DB. За замовчуванням параметр SET QUOTED_IDENTIFIER має значення OFF для з'єднань із програм DB-Library.

Після створення таблиці параметр QUOTED IDENTIFIER завжди записується в метадані таблиці зі значенням ON, навіть якщо він був встановлений у OFF під час створення таблиці.

Коли створюється процедура, що зберігається, параметри SET QUOTED_IDENTIFIER і SET ANSI_NULLS фіксуються і використовуються для подальших викликів цієї процедури, що зберігається.

При виконанні операцій всередині процедури, що зберігається, значення SET QUOTED_IDENTIFIER не змінюється.

Якщо параметр SET ANSI_DEFAULTS має значення ON, параметр SETQUOTED_IDENTIFIER включається.

Також параметр SET QUOTED_IDENTIFIER пов'язаний із налаштуваннями QUOTED_IDENTIFER інструкції ALTER DATABASE. Додаткові відомості про налаштування властивостей бази даних див. у розділах ALTER DATABASE (Transact-SQL) та Встановлення параметрів бази даних.

Параметр SET QUOTED_IDENTIFIER встановлюється під час синтаксичного аналізу. Установка під час синтаксичного аналізу означає, що якщо інструкція SET присутня в пакеті або процедурі, що зберігається, то вона набирає чинності незалежно від того, чи досягає фактичне виконання коду відповідної точки. Крім того, інструкція SET набирає чинності до виконання будь-яких інструкцій.

Налаштування QUOTED_IDENTIFIER не впливає на поділ ідентифікаторів за допомогою квадратних дужок[ та].