Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics в Microsoft Fabric
Warehouse в Microsoft Fabric
SQL базы данных в Microsoft Fabric
Параметр QUOTED_IDENTIFIER приводит к тому, что SQL Server соблюдать правила ISO для кавычки делимитинг идентификаторов и литеральных строк. Если для идентификаторов разделителей используются двойные кавычки, можно использовать Transact-SQL зарезервированные ключевые слова или включать символы, которые правила синтаксиса Transact-SQL обычно не допускаются в идентификаторах.
Transact-SQL соглашения о синтаксисе
Синтаксис
Синтаксис для SQL Server, База данных SQL Azure, бессерверного пула SQL в Azure Synapse Analytics и Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Синтаксис для Azure Synapse Analytics и параллельных Data Warehouse.
SET QUOTED_IDENTIFIER ON
Замечания
Если задано значение ONSET QUOTED_IDENTIFIER (по умолчанию), можно использовать двойные кавычки ("") для идентификаторов разделителей, и для разделителей необходимо использовать одинарные кавычки (''). Все строки, заключенные в двойные кавычки, интерпретируются как идентификаторы объектов. Кавычек не нужно следовать правилам Transact-SQL для идентификаторов. Они могут быть ключевыми словами и могут включать символы, которые не разрешены в Transact-SQL идентификаторах. Если двойная кавычка (") является частью идентификатора, его можно представить двумя двойными кавычками (""). При использовании зарезервированных ключевых слов для имен объектов в базе данных необходимо задать SET QUOTED_IDENTIFIERON значение.
Если для параметра SET QUOTED_IDENTIFIER задано значение OFF, идентификаторы кавычек не могут быть указаны и они должны соответствовать всем правилам Transact-SQL для идентификаторов. Дополнительные сведения см. в разделе "Идентификаторы базы данных". Литералы можно разделять по одним или двойным кавычкам. Если разделять литеральную строку по двойным кавычкам, строка может содержать внедренные одинарные кавычки, например апострофы.
Примечание.
QUOTED_IDENTIFIER не влияет на идентификаторы с разделителями, заключенные в квадратные скобки ([ и ]).
Необходимо задать значение SET QUOTED_IDENTIFIERON при создании или изменении индексов в вычисляемых столбцах или индексированных представлениях. Если задано значение SET QUOTED_IDENTIFIEROFF, CREATE, UPDATEи INSERTDELETE операторы завершаются сбоем в таблицах с индексами вычисляемых столбцов или таблицами с индексируемыми представлениями. Дополнительные сведения о необходимых SET параметрах с индексируемыми представлениями и индексами в вычисляемых столбцах см. в разделе "Рекомендации" при использовании инструкций SET.
При создании отфильтрованного индекса необходимо задать значение SET QUOTED_IDENTIFIERON .
Необходимо задать значение SET QUOTED_IDENTIFIERON при вызове методов типа данных XML .
Драйвер 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_DEFAULTSONзначение , QUOTED_IDENTIFIER также задано значение ON.
SET QUOTED_IDENTIFIER соответствует параметру QUOTED_IDENTIFIERALTER DATABASE.
SET QUOTED_IDENTIFIER действует при Transact-SQL синтаксическом анализе и влияет только на анализ, а не на оптимизацию запросов или выполнение запросов.
Для нерегламентированного пакета верхнего уровня синтаксический анализ начинается с использованием текущего параметра сеанса.QUOTED_IDENTIFIER При анализе пакета все вхождения SET QUOTED_IDENTIFIER изменяют поведение синтаксического анализа с этого момента и сохраняет этот параметр для сеанса. Поэтому после синтаксического анализа и выполнения пакета параметр сеанса QUOTED_IDENTIFIER устанавливается в соответствии с последним вхождением SET QUOTED_IDENTIFIER в пакете.
Статические Transact-SQL в хранимой процедуре анализируются с помощью параметра QUOTED_IDENTIFIER в действии для пакета, создавшего или изменившего хранимую процедуру.
SET QUOTED_IDENTIFIER не влияет, если он отображается в тексте хранимой процедуры как статический Transact-SQL.
Для вложенного пакета, использующего sp_executesql или exec()синтаксический анализ, начинается с настройки QUOTED_IDENTIFIER сеанса. Если вложенный пакет находится внутри хранимой процедуры, синтаксический анализ начинается с настройки QUOTED_IDENTIFIER хранимой процедуры. При синтаксическом анализе вложенного пакета любые изменения SET QUOTED_IDENTIFIER поведения синтаксического анализа с этого момента, но параметр сеанса QUOTED_IDENTIFIER не обновляется.
Чтобы просмотреть текущее значение для этого параметра, выполните следующий запрос:
DECLARE @QUOTED_IDENTIFIER AS VARCHAR (3) = 'OFF';
IF ((256 & @@OPTIONS) = 256)
BEGIN
SET @QUOTED_IDENTIFIER = 'ON';
END
SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;
Разрешения
Требуется членство в роли общедоступной фиксированной базы данных.
Примеры
А. Использование параметра идентификатора с кавычками и зарезервированных имен объектов word
В следующем примере показано, что SET QUOTED_IDENTIFIER параметр должен иметь значение ON, а ключевые слова в именах таблиц должны находиться в двойных кавычках для создания и использования объектов с зарезервированными именами ключевых слов.
SET QUOTED_IDENTIFIER OFF;
GO
-- Create statement fails.
CREATE TABLE "select"
(
"identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL
);
GO
SET QUOTED_IDENTIFIER ON;
GO
-- Create statement succeeds.
CREATE TABLE "select"
(
"identity" INT IDENTITY NOT NULL,
"order" INT NOT NULL
);
GO
SELECT "identity",
"order"
FROM "select"
ORDER BY "order";
GO
DROP TABLE "SELECT";
GO
SET QUOTED_IDENTIFIER OFF;
GO
B. Использование параметра идентификатора кавычки с одними и двойными кавычками
В следующем примере показано, как однократные и двойные кавычки используются в строковых выражениях с SET QUOTED_IDENTIFIER заданным значением ON и OFF.
SET QUOTED_IDENTIFIER OFF;
GO
USE AdventureWorks2025;
GO
IF EXISTS (SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Test')
DROP TABLE dbo.Test;
GO
USE AdventureWorks2025;
GO
CREATE TABLE dbo.Test
(
ID INT,
String VARCHAR (30)
);
GO
-- Literal strings can be in single or double quotation marks.
INSERT INTO dbo.Test
VALUES (1, "'Text in single quotes'");
INSERT INTO dbo.Test
VALUES (2, '''Text in single quotes''');
INSERT INTO dbo.Test
VALUES (3, 'Text with 2 '''' single quotes');
INSERT INTO dbo.Test
VALUES (4, '"Text in double quotes"');
INSERT INTO dbo.Test
VALUES (5, """Text in double quotes""");
INSERT INTO dbo.Test
VALUES (6, "Text with 2 """" double quotes");
GO
SET QUOTED_IDENTIFIER ON;
GO
-- Strings inside double quotation marks are now treated
-- as object names, so they cannot be used for literals.
INSERT INTO dbo."Test"
VALUES (7, 'Text with a single '' quote');
GO
-- Object identifiers do not have to be in double quotation marks
-- if they are not reserved keywords.
SELECT ID,
String
FROM dbo.Test;
GO
DROP TABLE dbo.Test;
GO
SET QUOTED_IDENTIFIER OFF;
GO
Вот результирующий набор.
ID String
----------- ------------------------------
1 'Text in single quotes'
2 'Text in single quotes'
3 Text with 2 '' single quotes
4 "Text in double quotes"
5 "Text in double quotes"
6 Text with 2 "" double quotes
7 Text with a single ' quote
Связанный контент
- СОЗДАТЬ БАЗУ ДАННЫХ
- CREATE DEFAULT (Transact-SQL)
- CREATE PROCEDURE (Transact-SQL)
- CREATE RULE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CREATE TRIGGER (Transact-SQL)
- CREATE VIEW (Transact-SQL)
- Типы Data (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- SET Statements (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Идентификаторы базы данных