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.