Tabellendatentypen für dedizierte SQL-Pools (ehemals SQL DW) in Azure Synapse Analytics
In diesem Artikel finden Sie Empfehlungen zum Definieren von Tabellendatentypen in einem dedizierten SQL-Pool.
Unterstützte Datentypen
Dedizierte SQL-Pools (ehemals SQL DW) unterstützen die am häufigsten verwendeten Datentypen. Eine Liste der unterstützten Datentypen finden Sie in der CREATE TABLE-Anweisung unter Datentypen.
Minimieren der Zeilenlänge
Durch das Minimieren der Größe von Datentypen wird die Zeilenlänge verkürzt. Dies führt zu einer besseren Abfrageleistung. Verwenden Sie den kleinsten Datentyp, der für Ihre Daten funktioniert.
- Vermeiden Sie es, für Zeichenspalten eine hohe Standardlänge zu definieren. Wenn der längste Wert 25 Zeichen umfasst, sollten Sie die Spalte VARCHAR(25) definieren.
- Vermeiden Sie die Verwendung von NVARCHAR, wenn Sie nur VARCHAR benötigen.
- Verwenden Sie anstelle von NVARCHAR(MAX) oder VARCHAR(MAX) nach Möglichkeit NVARCHAR(4000) oder VARCHAR(8000).
Wenn Sie die Tabellen mit externen PolyBase-Tabellen laden, darf die definierte Länge der Tabellenzeile 1 MB nicht überschreiten. Wenn eine Zeile mit Daten variabler Länge 1 MB überschreitet, können Sie die Zeile mit BCP, jedoch nicht mit PolyBase laden.
Identifizieren nicht unterstützter Datentypen
Wenn Sie die Datenbank von einer anderen SQL-Datenbank migrieren, kommen unter Umständen einige Datentypen vor, die in einem dedizierten SQL-Pool nicht unterstützt werden. Verwenden Sie die folgende Abfrage, um nicht unterstützte Datentypen in Ihrem vorhandenen SQL-Schema zu ermitteln:
SELECT t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables t
JOIN sys.columns c on t.[object_id] = c.[object_id]
JOIN sys.types y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
AND y.[is_user_defined] = 1;
Problemumgehungen für nicht unterstützte Datentypen
In der folgenden Liste sind die Datentypen aufgeführt, die ein dedizierter SQL-Pool (ehemals SQL DW) nicht unterstützt. Außerdem werden nützliche Alternativen für nicht unterstützte Datentypen angegeben.
Nicht unterstützte Datentypen | Problemumgehung |
---|---|
geometry | varbinary |
geography | varbinary |
hierarchyid | nvarchar(4000) |
image | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Spalte in mehrere Spalten mit starker Typisierung unterteilen. |
Tabelle | In temporäre Tabellen konvertieren. |
timestamp | Überarbeiten Sie Code mit datetime2 und der CURRENT_TIMESTAMP-Funktion. Nur Konstanten werden als Standardwerte unterstützt. Daher kann „current_timestamp“ nicht als Standardeinschränkung definiert werden. Wenn Sie Zeilenversionswerte aus einer Spalte vom Typ „timestamp“ migrieren müssen, sollten Sie BINARY(8) oder VARBINARY(8) für NOT NULL- oder NULL-Zeilenversionswerte verwenden. |
xml | varchar |
Benutzerdefinierter Typ | Führen Sie, wenn möglich, eine Rückkonvertierung in den nativen Datentyp durch. |
Standardwerte | Standardwerte unterstützen nur Literale und Konstanten. |
Nächste Schritte
Weitere Informationen zum Entwickeln von Tabellen finden Sie unter Einführung in das Entwerfen von Tabellen in Azure SQL Data Warehouse.