Tabell data typer för dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics

I den här artikeln finns rekommendationer för att definiera tabell data typer i dedikerad SQL-pool.

Datatyper som stöds

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

Minimera rad längd

Genom att minimera storleken på data typerna förkortas rad längden, vilket leder till bättre prestanda för frågor. Använd den minsta data typen som används för dina data.

  • Undvik att definiera tecken kolumner med en stor standard lä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 PolyBase-externa tabeller för att läsa in tabeller, får tabell radens definierade längd inte överstiga 1 MB. När en rad med data för variabel längd överskrider 1 MB kan du läsa in raden med BCP, men inte med PolyBase.

Identifiera data typer som inte stöds

Om du migrerar din databas från en annan SQL-databas kan du hitta data typer som inte stöds i dedikerad SQL-pool. Använd följande fråga för att identifiera data typer 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 data typer som inte stöds

Följande lista visar de data typer som dedikerade SQL-poolen (tidigare SQL DW) inte stöder och ger användbara alternativ för data typer som inte stöds.

Datatyp som inte stöds Lösning
geometri varbinary
placering varbinary
hierarchyid nvarchar(4000)
avbildning varbinary
information varchar
ntext nvarchar
sql_variant Dela upp kolumnen i flera kolumner med strikt typ.
table Konvertera till temporära tabeller.
tidsstämpel Återwork-koden för att använda datetime2 och funktionen CURRENT_TIMESTAMP . Endast konstanter stöds som standard, så current_timestamp kan inte definieras som en standard begränsning. Om du behöver migrera rad versions värden från en angiven tidsstämpelkolumn använder du Binary(8) eller varbinary(8) för värden som inte är null eller null.
fil varchar
användardefinierad typ Konvertera tillbaka till den interna data typen när det är möjligt.
standardvärden Standardvärden stöder bara litteraler och konstanter.

Nästa steg

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