Типы данных таблиц для выделенного пула SQL (ранее — SQL DW) в Azure Synapse Analytics

В эту статью включены рекомендации по определению типов данных таблиц в выделенном пуле SQL.

Поддерживаемые типы данных

Выделенный пул SQL (ранее — SQL DW) поддерживает самые распространенные типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции CREATE TABLE.

Уменьшение длины строки

Уменьшение размера типов данных сокращает длину строки, что улучшает производительность запросов. Используйте наименьший тип данных для данных.

  • Не рекомендуется использовать по умолчанию длинные значения столбцов. Например, если самое длинное значение состоит из 25 знаков, столбец необходимо определить как VARCHAR(25).
  • Не нужно использовать NVARCHAR, если вам требуется только VARCHAR.
  • По возможности используйте NVARCHAR(4000) или VARCHAR(8000) вместо NVARCHAR(MAX) или VARCHAR(MAX).

Если для загрузки таблиц используются внешние таблицы PolyBase, определенная длина таблицы не должна превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, можно загрузить строку с помощью BCP, а не PolyBase.

Определение неподдерживаемых типов данных

Если вы переносите базу данных из другой базы данных SQL, вы можете обнаружить некоторые типы данных, которые не поддерживаются в выделенном пуле 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')
 AND  y.[is_user_defined] = 1;

Обходные решения для неподдерживаемых типов данных

В следующем списке показаны типы данных, которые не поддерживает выделенный пул SQL (ранее — SQL DW), и предоставлены полезные альтернативы для неподдерживаемых типов данных.

Неподдерживаемые типы данных Возможное решение
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
image varbinary
text varchar
ntext nvarchar
sql_variant Разделите столбец на несколько строго типизированных столбцов.
table Преобразуйте во временные таблицы.
timestamp Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. По умолчанию поддерживаются только константы, поэтому использовать current_timestamp как ограничение по умолчанию невозможно. Если нужно перенести значения версии строки из типизированного столбца timestamp, используйте BINARY(8) или VARBINARY(8) в качестве значений версии строки NOT NULL или NULL.
xml varchar
Определяемый пользователем тип По возможности выполните преобразование в исходный тип данных.
Значения по умолчанию Значения по умолчанию поддерживают только литералы и константы.

Дальнейшие действия

Дополнительные сведения о разработке таблиц см. в статье Общие сведения о проектировании таблиц в хранилище данных SQL Azure.