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
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Bewirkt, dass SQL Server die ISO-Regeln für Anführungszeichen bei Bezeichnern und Literalzeichenfolgen befolgt. Bei Bezeichnern, die mit doppelten Anführungszeichen begrenzt werden, kann es sich um reservierte Transact-SQL-Schlüsselwörter oder um Bezeichner mit Zeichen handeln, die nach den Transact-SQL-Syntaxregeln für Bezeichner im Allgemeinen nicht zulässig sind.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für SQL Server, Azure SQL-Datenbank, serverlose SQL-Pool in Azure Synapse Analytics und Microsoft Fabric.
SET QUOTED_IDENTIFIER { ON | OFF }
Syntax für Azure Synapse Analytics und Parallel Data Warehouse.
SET QUOTED_IDENTIFIER ON
Hinweise
Wenn SET QUOTED_IDENTIFIER (Standardeinstellung) ist ON , können Bezeichner durch doppelte Anführungszeichen ("") getrennt werden, und Literale müssen durch einfache Anführungszeichen'' () getrennt werden. Alle Zeichenfolgen, die durch doppelte Anführungszeichen begrenzt werden, werden als Objektbezeichner interpretiert. Bezeichner in Anführungszeichen müssen nicht den Transact-SQL-Regeln für Bezeichner entsprechen. Sie können Schlüsselwörter darstellen und Zeichen enthalten, die in Transact-SQL-Bezeichnern nicht zulässig sind. Wenn ein doppeltes Anführungszeichen (") Teil des Bezeichners ist, kann es durch zwei doppelte Anführungszeichen ("") dargestellt werden.
SET QUOTED_IDENTIFIER muss sein ON , wenn reservierte Schlüsselwörter für Objektnamen in der Datenbank verwendet werden.
Wenn SET QUOTED_IDENTIFIER ja OFF, können Bezeichner nicht zitiert werden und müssen alle Transact-SQL-Regeln für Bezeichner befolgen. Weitere Informationen finden Sie unter Datenbankbezeichner. Literale können in einfache oder doppelte Anführungszeichen eingeschlossen werden. Eine in doppelte Anführungszeichen eingeschlossene Literalzeichenfolge kann eingebundene einfache Anführungszeichen, wie z. B. Apostrophe, enthalten.
Hinweis
QUOTED_IDENTIFIER wirkt sich nicht auf bezeichner mit Trennzeichen aus, die in eckige Klammern ([ und ]) eingeschlossen sind.
SET QUOTED_IDENTIFIER muss auf ON festgelegt sein, wenn Indizes für berechnete Spalten oder indizierte Sichten erstellt oder geändert werden. Wenn SET QUOTED_IDENTIFIER , OFFthen CREATE, UPDATE, INSERT, und DELETE Anweisungen bei Tabellen mit Indizes für berechnete Spalten oder Tabellen mit indizierten Ansichten fehlschlagen. 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.
SET QUOTED_IDENTIFIER muss sein ON , wenn Sie einen gefilterten Index erstellen.
SET QUOTED_IDENTIFIERmuss seinON, wenn Sie XML-Datentypmethoden aufrufen.
Der SQL Server Native Client ODBC-Treiber und sql Server Native Client OLE DB-Anbieter für SQL Server werden beim Herstellen einer Verbindung automatisch festgelegt QUOTED_IDENTIFIERON . Diese Einstellung kann in ODBC-Datenquellen, in ODBC-Verbindungsattributen oder in OLE DB-Verbindungseigenschaften konfiguriert werden. Der Standardwert ist SET QUOTED_IDENTIFIER für OFF Verbindungen von DB-Library-Anwendungen.
Wenn eine Tabelle erstellt wird, wird die QUOTED IDENTIFIER Option immer wie ON in den Metadaten der Tabelle gespeichert, auch wenn die Option auf OFF das Erstellen der Tabelle festgelegt ist.
Wenn eine gespeicherte Prozedur erstellt wird, werden die SET QUOTED_IDENTIFIER Einstellungen SET ANSI_NULLS erfasst und für nachfolgende Aufrufe dieser gespeicherten Prozedur verwendet.
Wenn sie in einer gespeicherten Prozedur ausgeführt wird, wird die Einstellung SET QUOTED_IDENTIFIER nicht geändert.
Wenn SET ANSI_DEFAULTS ist ONQUOTED_IDENTIFIER , ist auch ON.
SET QUOTED_IDENTIFIER entspricht der QUOTED_IDENTIFIER Einstellung von ALTER DATABASE.
SET QUOTED_IDENTIFIER ist während der Analysezeit von Transact-SQL gültig und wirkt sich nur auf die Analyse aus, nicht auf die Optimierung oder Ausführung der Abfrage.
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, werden alle Vorkommen von SET QUOTED_IDENTIFIER Änderungen des Analyseverhaltens von diesem Punkt an analysiert und diese Einstellung für die Sitzung gespeichert. 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 wird mithilfe der QUOTED_IDENTIFIER Einstellung für den Batch analysiert, der die gespeicherte Prozedur erstellt oder geändert hat.
SET QUOTED_IDENTIFIER hat beim Auftreten im Textkörper einer gespeicherten Prozedur als statische Transact-SQL-Anweisung keinerlei Auswirkungen.
Bei einem geschachtelten Batch mit sp_executesql oder 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 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 public -Rolle.
Beispiele
A. Verwenden der Einstellung für zitierte Bezeichner und reservierte Wortobjektnamen
Im folgenden Beispiel wird dargestellt, dass die SET QUOTED_IDENTIFIER-Einstellung auf ON festgelegt sein muss und dass Schlüsselwörter in Tabellennamen in doppelte Anführungszeichen eingeschlossen werden müssen, damit Objekte mit Namen von reservierten Schlüsselwörtern erstellt und verwendet werden können.
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
Im folgenden Beispiel wird die Verwendung von einfachen und doppelten Anführungszeichen in Zeichenfolgenausdrücken dargestellt, für die SET QUOTED_IDENTIFIER einmal auf ON und einmal auf OFF festgelegt ist.
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
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
- STANDARD ERSTELLEN (Transact-SQL)
- PROZEDUR ERSTELLEN (Transact-SQL)
- REGEL ERSTELLEN (Transact-SQL)
- Tabelle erstellen (Transact-SQL)
- TRIGGER ERSTELLEN (Transact-SQL)
- ANSICHT ERSTELLEN (Transact-SQL)
- Data types (Transact-SQL) (Datentypen (Transact-SQL))
- AUSFÜHREN (Transact-SQL)
- SELECT (Transact-SQL)
- SET-Anweisungen (Transact-SQL)
- SET ANSI_DEFAULTS (Transact-SQL)
- sp_rename
- Datenbankbezeichner