Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Součástí tohoto článku jsou 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. Pro seznam podporovaných datových typů se podívejte na datové typy v příkazu CREATE TABLE.
Minimalizace délky řádku
Minimalizace velikosti datových typů zkracuje délku řádku, což vede k lepšímu výkonu dotazů. Použijte nejmenší datový typ, který funguje pro vaše data.
- Vyhněte se definování sloupců znaků s velkou výchozí délkou. Pokud je například nejdelší hodnota 25 znaků, definujte sloupec jako VARCHAR(25).
- Nepoužívejte NVARCHAR , pokud potřebujete jenom VARCHAR.
- Pokud je to možné, použijte nVARCHAR(4000) nebo VARCHAR(8000) místo NVARCHAR(MAX) nebo VARCHAR(MAX).
Pokud k načtení tabulek používáte externí tabulky PolyBase, definovaná délka řádku tabulky nesmí překročit 1 MB. Pokud řádek s daty s proměnlivou délkou překročí 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 ve stávají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 poskytuje užitečné alternativy pro nepodporované datové typy.
Nepodporovaný datový typ | Dočasné řešení |
---|---|
geometrie | varbinary |
zeměpis | varbinary |
hierarchyid | nvarchar(4000) |
obrázek | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Rozdělte sloupec na několik silně typovaných sloupců. |
tabulka | Převeďte na dočasné tabulky. |
časové razítko | Přepracujte kód tak, aby používal datetime2 a funkci CURRENT_TIMESTAMP . Jako výchozí se podporují jenom konstanty, takže current_timestamp nejde definovat jako výchozí omezení. Pokud potřebujete migrovat řádkové verze ze sloupce typu timestamp, použijte BINARY(8) nebo VARBINARY(8) pro NOT NULL nebo NULL řádkové verze. |
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.