SnowConvert AI – SQL Server – Azure Synapse – QUOTED_IDENTIFIER¶
Applies to
SQL Server
Azure Synapse Analytics
Beschreibung¶
Diese Anweisung steuert, ob doppelte Anführungszeichen zum Trennen von Bezeichnern (wie Tabellennamen, Spaltennamen usw.) oder von Zeichenfolgenliteralen in SQL Server verwendet werden. Wenn SET QUOTED_IDENTIFIER auf ON gesetzt ist, können Bezeichner durch doppelte Anführungszeichen getrennt werden, und Literale müssen durch einfache Anführungszeichen getrennt werden. Wenn OFF angegeben ist, werden doppelte Anführungszeichen als Trennzeichen für Zeichenfolgenliterale behandelt. Weitere Informationen zu dieser Anweisung finden Sie unter SET QUOTED_IDENTIFIER.
Transact-SQL-Syntax¶
Vergleich der Verhaltensweisen¶
Verhalten von SQL Server¶
In SQL Server legt die Einstellung SET QUOTED_IDENTIFIER fest, wie doppelte Anführungszeichen interpretiert werden:
Bei ON (Standard): Doppelte Anführungszeichen trennen Bezeichner, sodass Sonderzeichen und reservierte Schlüsselwörter in Objektnamen erlaubt sind.
Bei OFF: Doppelte Anführungszeichen werden als Trennzeichen für Zeichenfolgenliterale behandelt (ähnlich wie einfache Anführungszeichen).
Verhalten von Snowflake¶
Snowflake behandelt doppelte Anführungszeichen immer als Bezeichner-Trennzeichen (entspricht dem Wert ONfürQUOTED_IDENTIFIER von SQL Server). Es gibt kein Äquivalent zur Einstellung OFF. Wichtigste Unterschiede:
Unterscheidung nach Groß-/Kleinschreibung:
Nicht in Anführungszeichen gesetzte Bezeichner werden automatisch in Großbuchstaben umgewandelt.
Bezeichner in Anführungszeichen behalten die genaue Groß-/Kleinschreibung bei und unterscheiden dann zwischen Groß- und Kleinschreibung.
QUOTED_IDENTIFIERS_IGNORE_CASE-Parameter: Steuert die Groß-/Kleinschreibung für Bezeichner in Anführungszeichen.
Beispielhafte Quellcode-Muster¶
SET QUOTED_IDENTIFIER ON¶
Wenn QUOTED_IDENTIFIER auf ON in SQL Server gesetzt ist, können doppelte Anführungszeichen verwendet werden, um Bezeichner zu trennen, die Leerzeichen oder Sonderzeichen enthalten.
SQL Server¶
Snowflake¶
Beispiel für den Unterschied
Nehmen wir an, Sie haben eine Tabelle von einer SQL Server-Datenbank mit einer Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung (_CI) migriert:
SQL Server (mit _CI-Sortierung):¶
In diesem Fall macht die CI-Sortierung die beiden SELECT-Anweisungen austauschbar.
Snowflake:¶
Das Snowflake-Verhalten ist anders, da die Groß-/Kleinschreibung des Bezeichners in Anführungszeichen standardmäßig berücksichtigt wird. Es könnte in Betracht gezogen werden, die Sitzung zu ändern.
Wenn Sie den Parameter auf Kontoebene einstellen möchten, können Sie den folgenden Befehl verwenden:
Dadurch wird der Parameter für alle mit dem Konto verbundenen Sitzungen festgelegt. Weitere Informationen finden Sie in der folgenden Dokumentation;
SET QUOTED_IDENTIFIER OFF¶
Wenn QUOTED_IDENTIFIER auf OFF in SQL Server gesetzt ist, werden doppelte Anführungszeichen als Zeichenfolgentrennzeichen behandelt.
SQL Server¶
Snowflake¶
Hinweise zur Migration¶
Groß-/Kleinschreibung des Bezeichners überprüfen: Achten Sie bei der Migration auf Snowflake auf eine konsistente Groß-/Kleinschreibung, insbesondere bei Bezeichnern in Anführungszeichen.
Zeichenfolgenliterale: Ersetzen Sie Zeichenfolgenliterale in doppelten Anführungszeichen durch Literale in einfachen Anführungszeichen.
QUOTED_IDENTIFIERS_IGNORE_CASE verwenden: Setzen Sie diesen Parameter bereits in der frühen Phase der Migration auf
TRUE, um Probleme mit der Groß-/Kleinschreibung zu reduzieren.Gründlich testen: Stellen Sie sicher, dass alle Objektreferenzen nach der Migration korrekt funktionieren.