Datové typy tabulek pro vyhrazený fond SQL (dříve SQL DW) ve službě Azure Synapse Analytics

Tento článek obsahuje doporučení pro definování datových typů tabulek ve vyhrazeném fondu SQL.

Podporované datové typy

Vyhrazený fond SQL (dříve SQL DW) podporuje nejčastěji používané datové typy. Seznam podporovaných datových typů najdete v části datové typy v příkazu CREATE TABLE.

Minimalizovat délku řádku

Minimalizace velikosti datových typů zkracuje délku řádku, což vede k lepšímu výkonu dotazů. Použijte nejmenší datový typ, který pro vaše data funguje.

  • Vyhněte se definování sloupců znaků s velkou výchozí délkou. Pokud je nejdelší hodnota například 25 znaků, definujte sloupec jako VARCHAR(25).
  • Nepoužívejte NVARCHAR , pokud potřebujete pouze VARCHAR.
  • Pokud je to možné, místo NVARCHAR(MAX) nebo VARCHAR(MAX) použijte NVARCHAR(4000) nebo VARCHAR(8000).

Pokud k načítání tabulek používáte externí tabulky PolyBase, nesmí definovaná délka řádku tabulky překročit 1 MB. Pokud řádek s daty s proměnlivou délkou přesahuje 1 MB, můžete řádek načíst pomocí BCP, ale ne pomocí PolyBase.

Identifikace nepodporovaných datových typů

Pokud migrujete databázi z jiné databáze SQL, můžete najít datové typy, které nejsou ve vyhrazeném fondu SQL podporované. Pomocí následujícího dotazu zjistěte nepodporované datové typy v existujícím schématu 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;

Alternativní řešení pro nepodporované datové typy

Následující seznam ukazuje datové typy, které vyhrazený fond SQL (dříve SQL DW) nepodporuje, a nabízí užitečné alternativy pro nepodporované datové typy.

Nepodporovaný datový typ Alternativní řešení
Geometrie Varbinary
Geografie Varbinary
Hierarchyid nvarchar(4000)
Obrázek Varbinary
text varchar
Ntext nvarchar
Sql_variant Rozdělte sloupec na několik sloupců se silnými typy.
table Převod na dočasné tabulky
Časové razítko Přepracujte kód tak, aby používal funkci datetime2 a CURRENT_TIMESTAMP . Jako výchozí jsou podporovány pouze konstanty, takže current_timestamp nelze definovat jako výchozí omezení. Pokud potřebujete migrovat hodnoty verzí řádků ze sloupce zadaného časovým razítkem, použijte pro hodnoty verze řádku NOT NULL nebo NULL hodnotu BINARY(8) nebo VARBINARY(8).
Xml varchar
uživatelem definovaný typ Pokud je to možné, převeďte zpět na nativní datový typ.
výchozí hodnoty Výchozí hodnoty podporují pouze literály a konstanty.

Další kroky

Další informace o vývoji tabulek najdete v tématu Přehled tabulek.