Megosztás a következőn keresztül:


SET QUOTED_IDENTIFIER (Transact-SQL)

A következőre vonatkozik: SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-elemzési végpont Microsoft Fabric< /c12>Warehouse in Microsoft FabricSQL-adatbázis a Microsoft Fabric

A QUOTED_IDENTIFIER beállítás miatt SQL Server az idézőjel azonosítók és literális sztringek ISO-szabályait kell követnie. Ha kettős idézőjelekkel elválasztja az azonosítókat, használhatja Transact-SQL fenntartott kulcsszavakat, vagy olyan karaktereket is tartalmazhat, amelyeket a Transact-SQL szintaxis szabályai általában nem engedélyeznek az azonosítókban.

Transact-SQL szintaxis konvenciók

Szemantika

Szintaxis SQL Server, Azure SQL Database, kiszolgáló nélküli SQL-készlethez Azure Synapse Analytics és Microsoft Fabric.

SET QUOTED_IDENTIFIER { ON | OFF }

A Azure Synapse Analytics és a párhuzamos Data Warehouse szintaxisa.

SET QUOTED_IDENTIFIER ON

Megjegyzések

Ha az alapértelmezett értékre van állítvaSET QUOTED_IDENTIFIER, dupla idézőjelekkel ("") elválaszthatja az azonosítókat, a literálok elválasztásához pedig egyetlen idézőjelet ('') kell használnia.ON A kettős idézőjelek közé zárt összes sztring objektumazonosítóként van értelmezve. Az idézett azonosítóknak nem kell követnie az azonosítók Transact-SQL szabályait. Kulcsszavak lehetnek, és olyan karaktereket is tartalmazhatnak, amelyek nem engedélyezettek Transact-SQL azonosítókban. Ha a kettős idézőjel (") az azonosító része, két idézőjel ("") alapján jelölheti. Meg kell adnia SET QUOTED_IDENTIFIER , ON hogy mikor használ fenntartott kulcsszavakat az adatbázis objektumneveihez.

Ha SET QUOTED_IDENTIFIEROFF értékre állítja, nem idézhet azonosítókat, és az azonosítókra vonatkozó összes Transact-SQL szabályt be kell tartania. További információ: Adatbázis-azonosítók. A literálokat egyetlen vagy két idézőjellel is elválaszthatja. Ha kettős idézőjelekkel elválaszt egy literális sztringet, a sztring tartalmazhat beágyazott idézőjeleket, például aposztrófokat.

Megjegyzés:

QUOTED_IDENTIFIER nem érinti a zárójelben[ ( és ]) bezárt departált azonosítókat.

Az indexek számítási oszlopokon vagy indexelt nézeteken való létrehozásakor vagy módosításakor meg kell adnia SET QUOTED_IDENTIFIERON . Ha be van állítva SET QUOTED_IDENTIFIER a , CREATE, UPDATE, INSERTés DELETE az utasítások sikertelenek a számított oszlopokon lévő indexekkel rendelkező táblákon, vagy indexelt nézetekkel rendelkező táblákon.OFF További információért az indexelt nézetekkel és számolt oszlopokon végzett indexekkel kapcsolatos szükséges SET opcióbeállításokról lásd: A SET utasítások használatakor megfontolható tényezők.

Szűrt index létrehozásakor be kell állítania SET QUOTED_IDENTIFIERON .

Xml-adattípus-metódusok meghívásához be kell állítania a beállításokatSET QUOTED_IDENTIFIER.ON

Az SQL Server natív ügyfél ODBC-illesztőprogramja és SQL Server natív ügyféloldali OLE DB-szolgáltató SQL Server automatikusan QUOTED_IDENTIFIERON-ra a csatlakozáskor. Ezt a beállítást ODBC-adatforrásokban, ODBC-kapcsolatattribútumokban vagy OLE DB-kapcsolattulajdonságokban konfigurálhatja. Az alapértelmezett beállítás SET QUOTED_IDENTIFIEROFF DB-Library alkalmazásokból érkező kapcsolatokra vonatkozik.

Tábla létrehozásakor a tábla metaadatai mindig úgy tárolják a QUOTED_IDENTIFIER beállítást, mintha ON a beállítást OFF a tábla létrehozásakor állítanák be.

Tárolt eljárás létrehozásakor a rendszer rögzíti és SET ANSI_NULLS használja a SET QUOTED_IDENTIFIER beállításokat a tárolt eljárás későbbi meghívásához.

Ha tárolt eljáráson belül hajtja végre a műveletet SET QUOTED_IDENTIFIER , a beállítás nem változik.

Ha be ONvan állítvaSET ANSI_DEFAULTS, QUOTED_IDENTIFIER akkor a beállítás ONértéke is .

SET QUOTED_IDENTIFIER megfelel az QUOTED_IDENTIFIERALTER DATABASE beállításának.

SET QUOTED_IDENTIFIER Transact-SQL elemzési időpontban lép érvénybe, és csak az elemzésre van hatással, nem a lekérdezésoptimalizálásra vagy a lekérdezések végrehajtására.

A felső szintű ad hoc szakasz esetén a parsing a session aktuális beállításával kezd el .QUOTED_IDENTIFIER A köteg elemzésekor a művelet minden előfordulása SET QUOTED_IDENTIFIER megváltoztatja az elemzési viselkedést attól a ponttól kezdve, és menti a beállítást a munkamenethez. Így a köteg elemzése és végrehajtása után a munkamenet QUOTED_IDENTIFIER beállítása a köteg utolsó előfordulásának SET QUOTED_IDENTIFIER megfelelően lesz beállítva.

A tárolt eljárás statikus Transact-SQL a tárolt eljárást létrehozó vagy módosító kötegre érvényes QUOTED_IDENTIFIER beállítással történik. SET QUOTED_IDENTIFIER nincs hatása, ha a tárolt eljárás törzsében statikus Transact-SQL jelenik meg.

A sp_executesql vagy exec(), elemzést használó beágyazott kötegek esetében az elemzés a QUOTED_IDENTIFIER munkamenet beállításával kezdődik. Ha a beágyazott kötet egy tárolt eljárásban van, a parsing a tárolt eljárás beállításaival kezdődik QUOTED_IDENTIFIER . Ahogy a beágyazott köteg elemzése történik, bármilyen előfordulás SET QUOTED_IDENTIFIER megváltoztatja a parzálási viselkedést onnantól kezdve, de a session QUOTED_IDENTIFIER beállításai nem frissülnek.

A jelenlegi beállítás megtekintéséhez futtasd le a következő lekérdezést:

DECLARE @QUOTED_IDENTIFIER AS VARCHAR (3) = 'OFF';

IF ((256 & @@OPTIONS) = 256)
BEGIN
    SET @QUOTED_IDENTIFIER = 'ON';
END

SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;

Permissions

A nyilvános rögzített adatbázis szerepkör tagságát igényli.

Példák

A. Használd a idézőjeles azonosító beállítást és a fenntartott szó objektumneveket

Az alábbi példa azt mutatja, hogy a SET QUOTED_IDENTIFIER beállításnak meg kell lennie ON, és a táblanevekben szereplő kulcsszavaknak dupla idézőjelekben kell lenniük a fenntartott kulcsszónevekkel rendelkező objektumok létrehozásához és használatához.

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. Használd az idézőjeles azonosító beállítást idézőjelekkel és dupla idézőjelekkel

Az alábbi példa bemutatja, hogyan használják az egy- és dupla idézőjeleket a sztringkifejezésekben SET QUOTED_IDENTIFIER a ON beállított és OFFa .

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

Itt van az eredmények összessége.

 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