Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics endpoint in Microsoft Fabric
Warehouse v Microsoft Fabric
SQL v databázi Microsoft Fabric
Nastavení QUOTED_IDENTIFIER způsobí, že SQL Server dodržovat pravidla ISO pro uvozovky delimiting identifiers a literálové řetězce. Pokud k oddělovači identifikátorů používáte dvojité uvozovky, můžete použít buď Transact-SQL rezervovaná klíčová slova, nebo zahrnout znaky, které pravidla syntaxe Transact-SQL obvykle nepovolují v identifikátorech.
Syntaxe
Syntaxe pro SQL Server, Azure SQL Database, bezserverový fond SQL ve Azure Synapse Analytics a Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Syntaxe pro Azure Synapse Analytics a paralelní Data Warehouse
SET QUOTED_IDENTIFIER ON
Poznámky
Když nastavíte SET QUOTED_IDENTIFIER hodnotu ON (výchozí), můžete k oddělovači identifikátorů použít dvojité uvozovky ("") a k oddělovači literálů je nutné použít jednoduché uvozovky (''). Všechny řetězce uzavřené v uvozovkách se interpretují jako identifikátory objektů. Identifikátory quoted nemusí dodržovat pravidla Transact-SQL identifikátorů. Můžou to být klíčová slova a můžou obsahovat znaky, které nejsou v identifikátorech Transact-SQL povolené. Pokud je uvozovka (") součástí identifikátoru, můžete ji znázorňovat dvěma dvojitými uvozovkami (""). Je nutné nastavit SET QUOTED_IDENTIFIER , když ON použijete vyhrazená klíčová slova pro názvy objektů v databázi.
Když nastavíte SET QUOTED_IDENTIFIER na OFF, nemůžete uvozovky a musí dodržovat všechna pravidla Transact-SQL identifikátorů. Další informace naleznete v tématu Identifikátory databáze. Literály můžete oddělovat jednoduchými nebo dvojitými uvozovkami. Pokud řetězec literálu oddělujete dvojitými uvozovkami, může řetězec obsahovat vložené jednoduché uvozovky, například apostrofy.
Poznámka:
QUOTED_IDENTIFIER neovlivňuje ohraničené identifikátory uzavřené v závorkách ([ a ]).
Při vytváření nebo změně indexů ve počítaných sloupcích nebo indexovaných zobrazeních je nutné nastavit SET QUOTED_IDENTIFIER hodnotu ON . Pokud nastavíte hodnotu SET QUOTED_IDENTIFIEROFF , , CREATE, UPDATEINSERT, a DELETE příkazy selžou u tabulek s indexy na počítané sloupce nebo tabulky s indexovanými zobrazeními. Pro více informací o požadovaných SET nastaveních možností s indexovanými zobrazeními a indexy ve vypočítaných sloupcích viz Úvahy při používání příkazů SET.
Při vytváření filtrovaného indexu je nutné nastavit SET QUOTED_IDENTIFIER hodnotu ON .
Při vyvolání metod datového typu SET QUOTED_IDENTIFIER je nutné nastavit ON hodnotu.
Ovladač ODBC nativního klienta SQL Server a SQL Server zprostředkovatele OLE DB nativního klienta pro SQL Server při připojování automaticky nastavte QUOTED_IDENTIFIER na ON. Toto nastavení můžete nakonfigurovat ve zdrojích dat ODBC, v atributech připojení ODBC nebo ve vlastnostech připojení OLE DB. Výchozí SET QUOTED_IDENTIFIER pro je pro OFF spojení z DB-Library aplikací.
Když vytváříte tabulku, metadata tabulky vždy ukládají QUOTED_IDENTIFIER možnost, jako ON kdybyste při vytváření tabulky nastavili možnost OFF .
Při vytváření uložené procedury SET QUOTED_IDENTIFIER se zachytí a SET ANSI_NULLS použijí se pro následné vyvolání této uložené procedury.
Když spustíte SET QUOTED_IDENTIFIER uloženou proceduru, nastavení se nezmění.
Když nastavíte SET ANSI_DEFAULTSONhodnotu , QUOTED_IDENTIFIER je také nastavena na ON.
SET QUOTED_IDENTIFIERodpovídá QUOTED_IDENTIFIER nastavení ALTER DATABASE.
SET QUOTED_IDENTIFIER se projeví při analýze Transact-SQL a má vliv pouze na analýzu, nikoli na optimalizaci dotazů nebo provádění dotazů.
Pro ad hoc dávku nejvyšší úrovně začíná parsování pomocí aktuálního nastavení relace pro QUOTED_IDENTIFIER. Když je dávka analyzována, všechny výskyty SET QUOTED_IDENTIFIER změn chování analýzy od tohoto okamžiku a uloží toto nastavení pro relaci. Takže po parsování a spuštění dávky se nastavení relace QUOTED_IDENTIFIER nastaví podle posledního výskytu SET QUOTED_IDENTIFIER v dávce.
Statické Transact-SQL v uložené proceduře se parsuje pomocí nastavení QUOTED_IDENTIFIER pro dávku, která vytvořila nebo změnila uloženou proceduru.
SET QUOTED_IDENTIFIER nemá žádný vliv, pokud se zobrazí v těle uložené procedury jako statické Transact-SQL.
Pro vnořenou dávku, která používá sp_executesql nebo exec()začne analýza používat QUOTED_IDENTIFIER nastavení relace. Pokud je vnořená dávka uvnitř uložené procedury, začíná parsování pomocí QUOTED_IDENTIFIER nastavení uložené procedury. Při parsování vnořené série se SET QUOTED_IDENTIFIER od té chvíle mění jakékoli její výskyt, ale nastavení relace QUOTED_IDENTIFIER se neaktualizuje.
Pro zobrazení aktuálního nastavení tohoto nastavení spusťte následující dotaz:
DECLARE @QUOTED_IDENTIFIER AS VARCHAR (3) = 'OFF';
IF ((256 & @@OPTIONS) = 256)
BEGIN
SET @QUOTED_IDENTIFIER = 'ON';
END
SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;
Povolení
Vyžaduje členství ve veřejné pevné databázové roli.
Examples
A. Použijte nastavení identifikátorů s úvodovkami a názvy objektů vyhrazených slov
Následující příklad ukazuje, že SET QUOTED_IDENTIFIER nastavení musí být ONa klíčová slova v názvech tabulek musí být v uvozovkách, aby bylo možné vytvářet a používat objekty s vyhrazenými názvy klíčových slov.
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. Použijte nastavení identifikátoru s úvodkami s jednou a dvojitou uvozovkou
Následující příklad ukazuje použití jednoduchých a dvojitých uvozovek ve výrazech řetězců s nastavenou SET QUOTED_IDENTIFIER na ON a 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
Tady je soubor výsledků.
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
Související obsah
- Vytvořit databázi
- CREATE DEFAULT (Transact-SQL)
- KREATE PROCEDURA (Transact-SQL)
- CREATE RULE (Transact-SQL)
- VYTVOŘIT TABULKU (Transact-SQL)
- trigger CREATE (Transact-SQL)
- KREATE VIEW (Transact-SQL)
- Datové typy (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- příkazy SET (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Identifikátory databází