Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 läser du 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.
Anteckning
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 kolumn av typen tidsstämpel, använder du BINARY(8) eller VARBINARY(8) för radversionsvärden som är antingen 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. |
Relaterat innehåll
Mer information om hur du utvecklar tabeller finns i utvecklingsöversikten.