Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся рекомендации по определению табличных типов данных в выделенном пуле Synapse SQL.
Типы данных
Выделенный пул Synapse SQL поддерживает самые распространенные типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции CREATE TABLE. Для Synapse SQL Serverless см. статью "Запрос файлов хранилища с бессерверным пулом SQL в Azure Synapse Analytics и использование OPENROWSET с использованием бессерверного пула SQL в Azure Synapse Analytics"
Уменьшение длины строки
Уменьшение размера типов данных сокращает длину строки, что улучшает производительность запросов. Используйте наименьший тип данных, подходящий для ваших данных.
- Не рекомендуется использовать по умолчанию длинные значения столбцов. Например, если самое длинное значение состоит из 25 знаков, столбец необходимо определить как VARCHAR(25).
- Не нужно использовать NVARCHAR, если вам требуется только VARCHAR.
- По возможности используйте NVARCHAR(4000) или VARCHAR(8000) вместо NVARCHAR(MAX) или VARCHAR(MAX).
- Старайтесь не использовать числа с плавающей точкой и десятичные числа с нулевой (0) шкалой. Они должны быть TINYINT, SMALLINT, INT или BIGINT.
Примечание.
Если для загрузки таблиц Synapse SQL используются внешние таблицы PolyBase, определенная длина строки таблицы не должна превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, можно загрузить строку с помощью BCP, а не PolyBase.
Определение неподдерживаемых типов данных
При переносе вашей базы данных из другой базы данных SQL вы можете столкнуться с типами данных, которые не поддерживаются в Synapse SQL. Используйте этот запрос для определения неподдерживаемых типов данных в существующей схеме 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')
OR y.[is_user_defined] = 1;
Обходные решения для неподдерживаемых типов данных
В следующем списке показаны типы данных, которые Synapse SQL не поддерживаются и предоставляют альтернативные варианты, которые можно использовать вместо неподдерживаемых типов данных.
Неподдерживаемые типы данных | Обходное решение |
---|---|
geometry | varbinary |
geography | varbinary |
hierarchyid | nvarchar(4000) |
Изображение | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Разделите столбец на несколько строго типизированных столбцов. |
table | Преобразуйте во временные таблицы или сохраните в хранилище с помощью CETAS. |
timestamp | Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. В качестве значений по умолчанию поддерживаются только константы, поэтому current_timestamp нельзя определить как ограничение по умолчанию. Если нужно перенести значения версии строки из столбца типа timestamp, используйте BINARY(8) или VARBINARY(8) для значений версии строки, которые могут быть NOT NULL или NULL. |
xml | varchar |
Определяемый пользователем тип | По возможности выполните преобразование в исходный тип данных. |
Значения по умолчанию | Значения по умолчанию поддерживают только литералы и константы. |
Связанный контент
Дополнительные сведения о разработке таблиц см. в обзоре разработки.