Tabelldatatyper i Synapse SQL

I den här artikeln hittar du rekommendationer för att definiera tabelldatatyper i Synapse SQL Dedicated Pool.

Datatyper

Synapse SQL Dedicated Pool stöder de vanligaste datatyperna. En lista över de datatyper som stöds finns i datatyper i CREATE TABLE-instruktionen. För Synapse SQL Serverless kan du läsa artikeln Fråga lagringsfiler med serverlös SQL-pool i Azure Synapse Analytics och Använda OPENROWSET med serverlös SQL-pool i Azure Synapse Analytics

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.
  • Om möjligt använder du NVARCHAR(4000) eller VARCHAR(8000) i stället för NVARCHAR(MAX) eller VARCHAR(MAX).
  • Undvik att använda flyttal och decimaler med skalan 0 (noll). Dessa bör vara TINYINT, SMALLINT, INT eller BIGINT.

Kommentar

Om du använder externa PolyBase-tabeller för att läsa in dina Synapse SQL-tabeller får den definierade längden på tabellraden 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 kan du stöta på datatyper som inte stöds i Synapse SQL. Använd den här frågan 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')
 OR  y.[is_user_defined] = 1;

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

I följande lista visas de datatyper som Synapse SQL inte stöder och ger alternativ som du kan använda i stället för datatyper som inte stöds.

Datatypen stöds inte Lösning
Geometri 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 tillfälliga tabeller eller överväg att lagra data till lagring med hjälp av CETAS.
Tidsstämpel Omarbeta kod för att använda datetime2 och funktionen CURRENT_TIMESTAMP . Endast konstanter stöds som standardvärden, och därför kan current_timestamp 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 VERSIONSvärdena NOT NULL eller NULL.
xml Varchar
användardefinierad typ Konvertera tillbaka till den interna 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.