Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics Endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Die Einstellung QUOTED_IDENTIFIER bewirkt, dass SQL Server die ISO-Regeln für Anführungszeichen trennzeichenbezeichner und Literalzeichenfolgen einhalten. Wenn Sie doppelte Anführungszeichen verwenden, um Bezeichner zu trennen, können Sie entweder Transact-SQL reservierten Schlüsselwörter verwenden oder Zeichen einschließen, die die Transact-SQL Syntaxregeln in der Regel in Bezeichnern nicht zulassen.
Transact-SQL Syntaxkonventionen
Syntax
Syntax für SQL Server, Azure SQL-Datenbank, serverlosen SQL-Pool in Azure Synapse Analytics und Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Syntax für Azure Synapse Analytics und parallele Data Warehouse.
SET QUOTED_IDENTIFIER ON
Hinweise
Wenn Sie auf ON (Standardeinstellung) festlegenSET QUOTED_IDENTIFIER, können Sie doppelte Anführungszeichen ("") verwenden, um Bezeichner zu trennen, und Sie müssen einfache Anführungszeichen ('') verwenden, um Literale zu trennen. Alle in doppelte Anführungszeichen eingeschlossenen Zeichenfolgen werden als Objektbezeichner interpretiert. An zitierte Bezeichner müssen nicht den Transact-SQL Regeln für Bezeichner folgen. Sie können Schlüsselwörter sein und Zeichen enthalten, die in Transact-SQL Bezeichnern nicht zulässig sind. Wenn ein doppeltes Anführungszeichen (") Teil des Bezeichners ist, können Sie es durch zwei doppelte Anführungszeichen ("") darstellen. Sie müssen festlegen SET QUOTED_IDENTIFIERON , wenn Sie reservierte Schlüsselwörter für Objektnamen in der Datenbank verwenden.
Wenn Sie SET QUOTED_IDENTIFIER auf OFF festlegen, können Sie keine Bezeichner anführungszeichen und müssen alle Transact-SQL Regeln für Bezeichner befolgen. Weitere Informationen finden Sie unter Datenbankbezeichner. Sie können Literale entweder durch einfache oder doppelte Anführungszeichen trennen. Wenn Sie eine Literalzeichenfolge durch doppelte Anführungszeichen trennen, kann die Zeichenfolge eingebettete einfache Anführungszeichen enthalten, z. B. Apostrophe.
Hinweis
QUOTED_IDENTIFIER wirkt sich nicht auf bezeichner mit Trennzeichen aus, die in eckige Klammern ([ und ]) eingeschlossen sind.
Sie müssen festlegen SET QUOTED_IDENTIFIERON , wenn Sie Indizes für berechnete Spalten oder indizierte Ansichten erstellen oder ändern. Wenn Sie für INSERTDELETEOFFUPDATECREATETabellen mit Indizes für berechnete Spalten oder Tabellen mit indizierten Ansichten einen Fehler auf Tabellen festlegenSET QUOTED_IDENTIFIER, führen Sie einen Fehler durch. Weitere Informationen zu erforderlichen SET Optionseinstellungen mit indizierten Ansichten und Indizes für berechnete Spalten finden Sie unter "Überlegungen", wenn Sie die SET-Anweisungen verwenden.
Sie müssen festlegen SET QUOTED_IDENTIFIERON , wenn Sie einen gefilterten Index erstellen.
Sie müssen festlegen SET QUOTED_IDENTIFIERON , wenn Sie XML-Datentypmethoden aufrufen.
Der SQL SERVER Native Client ODBC-Treiber und SQL Server OLE DB-Anbieter für nativen Client für SQL Server bei der Verbindung automatisch QUOTED_IDENTIFIER auf ON festlegen. Sie können diese Einstellung in ODBC-Datenquellen, in ODBC-Verbindungsattributen oder OLE DB-Verbindungseigenschaften konfigurieren. Der Standardwert ist SET QUOTED_IDENTIFIER für OFF Verbindungen von DB-Library-Anwendungen.
Wenn Sie eine Tabelle erstellen, speichert die Metadaten der Tabelle immer die QUOTED_IDENTIFIER Option, auch ON wenn Sie die Option OFF beim Erstellen der Tabelle festlegen.
Wenn Sie eine gespeicherte Prozedur erstellen, werden die SET QUOTED_IDENTIFIER Einstellungen SET ANSI_NULLS erfasst und für nachfolgende Aufrufe dieser gespeicherten Prozedur verwendet.
Wenn Sie innerhalb einer gespeicherten Prozedur ausgeführt werden SET QUOTED_IDENTIFIER , ändert sich die Einstellung nicht.
Wenn Sie auf SET ANSI_DEFAULTSON", QUOTED_IDENTIFIER ist auch auf ON" festgelegt" festgelegt.
SET QUOTED_IDENTIFIER entspricht der QUOTED_IDENTIFIER Einstellung von ALTER DATABASE.
SET QUOTED_IDENTIFIER wird zur Transact-SQL Analysezeit wirksam und wirkt sich nur auf die Analyse aus, nicht auf die Abfrageoptimierung oder Abfrageausführung.
Bei einem Ad-hoc-Batch der obersten Ebene beginnt die Analyse mit der aktuellen Einstellung der Sitzung für QUOTED_IDENTIFIER. Wenn der Batch analysiert wird, ändert sich jedes Vorkommen des SET QUOTED_IDENTIFIER Analyseverhaltens von diesem Punkt an und speichert diese Einstellung für die Sitzung. Nachdem der Batch analysiert und ausgeführt wurde, wird die Einstellung der QUOTED_IDENTIFIER Sitzung entsprechend dem letzten Vorkommen SET QUOTED_IDENTIFIER des Batches festgelegt.
Statische Transact-SQL in einer gespeicherten Prozedur werden mithilfe der Einstellung QUOTED_IDENTIFIER für den Batch analysiert, der die gespeicherte Prozedur erstellt oder geändert hat.
SET QUOTED_IDENTIFIER hat keine Auswirkung, wenn sie im Textkörper einer gespeicherten Prozedur als statische Transact-SQL angezeigt wird.
Bei einem geschachtelten Batch, der sp_executesql verwendet, exec()beginnt die Analyse mit der QUOTED_IDENTIFIER Einstellung der Sitzung. Wenn sich der geschachtelte Batch in einer gespeicherten Prozedur befindet, beginnt die Analyse mit der QUOTED_IDENTIFIER Einstellung der gespeicherten Prozedur. Wenn der geschachtelte Batch analysiert wird, wird jedes Vorkommen des SET QUOTED_IDENTIFIER Analyseverhaltens von diesem Zeitpunkt an geändert, die Einstellung der QUOTED_IDENTIFIER Sitzung wird jedoch nicht aktualisiert.
Um die aktuelle Einstellung anzuzeigen, führen Sie die folgende Abfrage aus:
DECLARE @QUOTED_IDENTIFIER AS VARCHAR (3) = 'OFF';
IF ((256 & @@OPTIONS) = 256)
BEGIN
SET @QUOTED_IDENTIFIER = 'ON';
END
SELECT @QUOTED_IDENTIFIER AS QUOTED_IDENTIFIER;
Berechtigungen
Erfordert die Mitgliedschaft in der rolle der öffentlichen festen Datenbank.
Beispiele
A. Verwenden der Einstellung für zitierte Bezeichner und reservierte Wortobjektnamen
Das folgende Beispiel zeigt, dass die SET QUOTED_IDENTIFIER Einstellung sein ONmuss, und die Schlüsselwörter in Tabellennamen müssen in doppelten Anführungszeichen enthalten sein, um Objekte mit reservierten Schlüsselwortnamen zu erstellen und zu verwenden.
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. Verwenden der Einstellung für anführungszeichen enthaltene Bezeichner mit einfachen und doppelten Anführungszeichen
Das folgende Beispiel zeigt, wie einfache und doppelte Anführungszeichen in Zeichenfolgenausdrücken verwendet werden, die auf SET QUOTED_IDENTIFIERON und 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
Hier sehen Sie das Ergebnis.
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
Zugehöriger Inhalt
- Datenbank erstellen
- KRATE DEFAULT (Transact-SQL)
- CREATE PROCEDURE (Transact-SQL)
- KRATE RULE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CREATE TRIGGER (Transact-SQL)
- CREATE VIEW (Transact-SQL)
- Datentypen (Transact-SQL)
- EXECUTE (Transact-SQL)
- SELECT (Transact-SQL)
- SET-Anweisungen (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Datenbankbezeichner