Dela via


Tabelldatatyper för dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics

I den här artikeln ingår rekommendationer för att definiera tabelldatatyper i en dedikerad SQL-pool.

Datatyper som stöds

Dedikerad SQL-pool (tidigare SQL DW) stöder de vanligaste datatyperna. En lista över de datatyper som stöds finns i datatyper i CREATE TABLE-instruktionen.

Minimera radlängd

Om du minimerar storleken på datatyper förkortas radlängden, vilket ger bättre frågeprestanda. Använd den minsta datatypen som fungerar för dina data.

  • Undvik att definiera teckenkolumner med en stor standardlängd. Om det längsta värdet till exempel är 25 tecken definierar du kolumnen som VARCHAR(25).
  • Undvik att använda NVARCHAR när du bara behöver VARCHAR.
  • När det är möjligt använder du NVARCHAR(4000) eller VARCHAR(8000) i stället för NVARCHAR(MAX) eller VARCHAR(MAX).

Om du använder externa PolyBase-tabeller för att läsa in tabellerna får tabellradens definierade längd inte överstiga 1 MB. När en rad med variabellängdsdata överskrider 1 MB kan du läsa in raden med BCP, men inte med PolyBase.

Identifiera datatyper som inte stöds

Om du migrerar databasen från en annan SQL-databas kanske du hittar datatyper som inte stöds i en dedikerad SQL-pool. Använd följande fråga för att identifiera datatyper som inte stöds i ditt befintliga SQL-schema:

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;

Lösningar för datatyper som inte stöds

I följande lista visas de datatyper som den dedikerade SQL-poolen (tidigare SQL DW) inte stöder och ger användbara alternativ för datatyper som inte stöds.

Datatyp som inte stöds Lösning
geometry varbinary
Geografi varbinary
hierarchyid nvarchar(4000)
Bild varbinary
Text varchar
ntext nvarchar
Sql_variant Dela upp kolumnen i flera starkt skrivna kolumner.
table Konvertera till temporära tabeller.
Tidsstämpel Omarbeta kod för att använda datetime2 och funktionen CURRENT_TIMESTAMP . Endast konstanter stöds som standardvärden, så current_timestamp kan inte definieras som en standardbegränsning. Om du behöver migrera radversionsvärden från en tidsstämpeltypad kolumn använder du BINARY(8) eller VARBINARY(8) för VÄRDEN FÖR NOT NULL- eller NULL-radversion.
Xml varchar
användardefinierad typ Konvertera tillbaka till den inbyggda datatypen när det är möjligt.
Standardvärden Standardvärden stöder endast literaler och konstanter.

Nästa steg

Mer information om hur du utvecklar tabeller finns i Tabellöversikt.