Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
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, Azure SQL Database, бессерверного пула SQL в Azure Synapse Analytics и Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Синтаксис для Azure Synapse Analytics и параллельных Data Warehouse.
SET QUOTED_IDENTIFIER ON
Замечания
Если задано значение SET QUOTED_IDENTIFIERON (по умолчанию), можно использовать двойные кавычки ("") для идентификаторов разделителей, и для разделителей необходимо использовать одинарные кавычки (''). Все строки, заключенные в двойные кавычки, интерпретируются как идентификаторы объектов. Кавычек не нужно следовать правилам 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)
- СОЗДАТЬ ПРОЦЕДУРУ (Transact-SQL)
- CREATE RULE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CREATE TRIGGER (Transact-SQL)
- СОЗДАТЬ ПРЕДСТАВЛЕНИЕ (Transact-SQL)
- Типы Data (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- Инструкции SET (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Идентификаторы базы данных