Typy danych tabeli dla dedykowanej puli SQL (dawniej SQL DW) w usłudze Azure Synapse Analytics

W tym artykule przedstawiono zalecenia dotyczące definiowania typów danych tabeli w dedykowanej puli SQL.

Obsługiwane typy danych

Dedykowana pula SQL (dawniej SQL DW) obsługuje najczęściej używane typy danych. Aby uzyskać listę obsługiwanych typów danych, zobacz typy danych w instrukcji CREATE TABLE.

Minimalizuj długość wiersza

Minimalizacja rozmiaru typów danych skraca długość wiersza, co prowadzi do lepszej wydajności zapytań. Użyj najmniejszego typu danych, który działa dla danych.

  • Unikaj definiowania kolumn znaków o dużej długości domyślnej. Jeśli na przykład najdłuższa wartość to 25 znaków, zdefiniuj kolumnę jako VARCHAR(25).
  • Unikaj używania NVARCHAR , gdy potrzebujesz tylko VARCHAR.
  • Jeśli to możliwe, użyj NVARCHAR(4000) lub VARCHAR(8000) zamiast NVARCHAR(MAX) lub VARCHAR(MAX).

Jeśli używasz tabel zewnętrznych programu PolyBase do załadowania tabel, zdefiniowana długość wiersza tabeli nie może przekraczać 1 MB. Gdy wiersz z danymi o zmiennej długości przekracza 1 MB, można załadować wiersz przy użyciu narzędzia BCP, ale nie z technologią PolyBase.

Identyfikowanie nieobsługiwanych typów danych

Jeśli przeprowadzasz migrację bazy danych z innej bazy danych SQL, możesz znaleźć typy danych, które nie są obsługiwane w dedykowanej puli SQL. Użyj następującego zapytania, aby odnaleźć nieobsługiwane typy danych w istniejącym schemacie SQL:

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;

Obejścia nieobsługiwanych typów danych

Na poniższej liście przedstawiono typy danych, których dedykowana pula SQL (dawniej SQL DW) nie obsługuje i udostępnia przydatne alternatywy dla nieobsługiwanych typów danych.

Nieobsługiwany typ danych Obejście
Geometrii varbinary
Geografia varbinary
Hierarchyid nvarchar(4000)
Obrazu varbinary
Tekst varchar
Ntext nvarchar
Sql_variant Podziel kolumnę na kilka silnie typiowanych kolumn.
table Konwertuj na tabele tymczasowe.
Sygnatury czasowej Przepracuj kod, aby użyć funkcji datetime2 i CURRENT_TIMESTAMP . Tylko stałe są obsługiwane jako wartości domyślne, więc current_timestamp nie można zdefiniować jako domyślnego ograniczenia. Jeśli musisz przeprowadzić migrację wartości wersji wierszy z kolumny typizowanej sygnatury czasowej, użyj wartości BINARY(8) lub VARBINARY(8) dla wartości wersji wiersza NOT NULL lub NULL.
Xml varchar
typ zdefiniowany przez użytkownika W miarę możliwości przekonwertuj z powrotem na natywny typ danych.
wartości domyślne Wartości domyślne obsługują tylko literały i stałe.

Następne kroki

Aby uzyskać więcej informacji na temat tworzenia tabel, zobacz Omówienie tabel.