Tabelgegevenstypen in Synapse SQL

In dit artikel vindt u aanbevelingen voor het definiëren van tabelgegevenstypen in synapse SQL Dedicated Pool.

Data types

Synapse SQL Dedicated Pool ondersteunt de meest gebruikte gegevenstypen. Zie de gegevenstypen in de instructie CREATE TABLE voor een lijst met de ondersteunde gegevenstypen. Raadpleeg voor Synapse SQL Serverless het artikel Query-opslagbestanden met een serverloze SQL-pool in Azure Synapse Analytics en het gebruik van OPENROWSET met behulp van een serverloze SQL-pool in Azure Synapse Analytics

Rijlengte minimaliseren

Het minimaliseren van de grootte van gegevenstypen verkort de rijlengte, wat leidt tot betere queryprestaties. Gebruik het kleinste gegevenstype dat geschikt is voor uw gegevens.

  • Vermijd het definiëren van tekenkolommen met een grote standaardlengte. Als de langste waarde bijvoorbeeld 25 tekens is, definieert u uw kolom als VARCHAR(25).
  • Vermijd het gebruik van NVARCHAR wanneer u alleen VARCHAR nodig hebt.
  • Gebruik indien mogelijk NVARCHAR(4000) of VARCHAR(8000) in plaats van NVARCHAR(MAX) of VARCHAR(MAX).
  • Vermijd het gebruik van floats en decimalen met 0 (nul) schaal. Dit moet TINYINT, SMALLINT, INT of BIGINT zijn.

Notitie

Als u externe PolyBase-tabellen gebruikt om uw Synapse SQL-tabellen te laden, mag de gedefinieerde lengte van de tabelrij niet groter zijn dan 1 MB. Wanneer een rij met gegevens met een variabele lengte groter is dan 1 MB, kunt u de rij laden met BCP, maar niet met PolyBase.

Niet-ondersteunde gegevenstypen identificeren

Als u uw database migreert vanuit een andere SQL-database, kunt u gegevenstypen tegenkomen die niet worden ondersteund in Synapse SQL. Gebruik deze query om niet-ondersteunde gegevenstypen in uw bestaande SQL-schema te detecteren.

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;

Tijdelijke oplossingen voor niet-ondersteunde gegevenstypen

De volgende lijst bevat de gegevenstypen die synapse SQL niet ondersteunt en biedt alternatieven die u kunt gebruiken in plaats van de niet-ondersteunde gegevenstypen.

Niet-ondersteund gegevenstype Tijdelijke oplossing
Geometrie varbinary
Geografie varbinary
hiërarchie-id nvarchar(4000)
afbeelding varbinary
tekst Varchar
ntekst Nvarchar
sql_variant Kolom splitsen in verschillende sterk getypte kolommen.
table Converteer naar tijdelijke tabellen of overweeg om gegevens op te slaan in opslag met CETAS.
Tijdstempel Werk code opnieuw om datum/tijd2 en de functie CURRENT_TIMESTAMP te gebruiken. Alleen constanten worden ondersteund als standaardwaarden. Daarom kan current_timestamp niet worden gedefinieerd als een standaardbeperking. Als u rijversiewaarden van een kolom met tijdstempels wilt migreren, gebruikt u BINARY(8) of VARBINARY(8) voor de versiewaarden NOT NULL of NULL-rij.
xml Varchar
door de gebruiker gedefinieerd type Converteer indien mogelijk terug naar het systeemeigen gegevenstype.
standaardwaarden Standaardwaarden ondersteunen alleen letterlijke waarden en constanten.

Volgende stappen

Zie Tabeloverzicht voor meer informatie over het ontwikkelen van tabellen.