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.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Způsobuje, že SQL Server dodržuje pravidla ISO týkající se uvozovek a literálních řetězců. Identifikátory ohraničené dvojitými uvozovkami mohou být buď Transact-SQL vyhrazených klíčových slov, nebo mohou obsahovat znaky, které nejsou obecně povoleny pravidly syntaxe Transact-SQL pro identifikátory.
Syntaxe
Syntax for SQL Server, Azure SQL Database, serverless SQL pool in Azure Synapse Analytics a Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Syntaxe pro Azure Synapse Analytics a paralelní datový sklad
SET QUOTED_IDENTIFIER ON
Poznámky
Když SET QUOTED_IDENTIFIER je ( ON výchozí), identifikátory lze vymezit dvojitými uvozovkami (""), a literály musí být vymezeny jednotlivými uvozovkami (''). Všechny řetězce vymezené dvojitými uvozovkami jsou interpretovány jako identifikátory objektů. Citované identifikátory nemusí dodržovat pravidla Transact-SQL pro identifikátory. Mohou to být klíčová slova a mohou obsahovat znaky, které nejsou povoleny v Transact-SQL identifikátorech. Pokud je součástí identifikátoru dvojitá uvozovka ("), lze ji reprezentovat dvěma dvojitými uvozovkami ("").
SET QUOTED_IDENTIFIER musí být při ON použití rezervovaných klíčových slov pro názvy objektů v databázi.
Když SET QUOTED_IDENTIFIER je OFF, identifikátory nelze citovat a musí dodržovat všechna Transact-SQL pravidla pro identifikátory. Další informace naleznete v tématu Identifikátory databáze. Literály lze ohraničit buď jednoduchými, nebo dvojitými uvozovkami. Pokud je literální řetězec vymezen dvojitými uvozovkami, může 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 ]).
SET QUOTED_IDENTIFIER musí být ON při vytváření nebo změně indexů na vypočítaných sloupcích nebo indexovaných zobrazeních. Pokud SET QUOTED_IDENTIFIER je , OFFpak CREATE, UPDATE, , INSERT, a DELETE příkazy selhávají u tabulek s indexy na vypočítaných sloupcích nebo v tabulkách 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.
SET QUOTED_IDENTIFIER Musí to být ON při vytváření filtrovaného indexu.
SET QUOTED_IDENTIFIERMusí to být ON při volání XML datových typů.
SQL Server Native Client ODBC ovladač a SQL Server Native Client OLE DB Provider pro SQL Server se automaticky nastaví QUOTED_IDENTIFIER při ON připojení. To lze nastavit ve zdrojích dat ODBC, v atributech spojení ODBC nebo ve vlastnostech spojení v databázi OLE. Výchozí SET QUOTED_IDENTIFIER pro je pro OFF spojení z DB-Library aplikací.
Když je tabulka vytvořena, volba QUOTED IDENTIFIER je vždy uložena jako ON v metadatech tabulky, i když je volba nastavena na OFF okamžik vytvoření tabulky.
Když je vytvořena uložená procedura, SET QUOTED_IDENTIFIER nastavení a jsou SET ANSI_NULLS zachycena a použita pro následné volání této uložené procedury.
Při spuštění v uložené procedurě se nastavení nemění SET QUOTED_IDENTIFIER .
Když SET ANSI_DEFAULTS je ON, QUOTED_IDENTIFIER je také ON.
SET QUOTED_IDENTIFIERodpovídá QUOTED_IDENTIFIER nastavení ALTER DATABASE.
SET QUOTED_IDENTIFIER působí v Transact-SQL době parsování a ovlivňuje pouze parsování, nikoli 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. Při parsování batch se každé výskyt SET QUOTED_IDENTIFIER změní chování parsování od tohoto okamžiku dál, a toto nastavení si uložte pro relaci. Takže po parsování a spuštění batch bude nastavení relace QUOTED_IDENTIFIER nastaveno podle posledního výskytu v SET QUOTED_IDENTIFIER dávce.
Statický Transact-SQL v uložené procedurě se parsuje pomocí QUOTED_IDENTIFIER nastavení platného pro dávku, která uloženou proceduru vytvořila nebo změnila.
SET QUOTED_IDENTIFIER nemá žádný vliv, když se v těle uložené procedury objeví jako statický Transact-SQL.
Pro vnořenou dávku pomocí sp_executesql nebo exec(), začíná parsování pomocí 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 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é 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 ON, a klíčová slova v názvech tabulek musí být v uvozovkách, aby bylo možné vytvářet a používat objekty s rezervovaný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, jak se používají jednoduché a dvojité uvozovky v řetězcových výrazech s SET QUOTED_IDENTIFIER nastavením na ON a OFF.
SET QUOTED_IDENTIFIER OFF;
GO
USE AdventureWorks2022;
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Test')
DROP TABLE dbo.Test;
GO
USE AdventureWorks2022;
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
- VYTVOŘIT VÝCHOZÍ (Transact-SQL)
- CREATE PROCEDURE (Transact-SQL)
- CREATE RULE (Transact-SQL)
- VYTVOŘIT TABULKU (Transact-SQL)
- VYTVOŘIT SPOUŠŤ (Transact-SQL)
- VYTVOŘIT ZOBRAZENÍ (Transact-SQL)
- Datové typy (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- Příkazy SET (Transact-SQL)
- NASTAVTE ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Identifikátory databází