Tipos de datos de tabla del grupo de SQL dedicado (anteriormente SQL DW) en Azure Synapse Analytics

En este artículo se incluyen recomendaciones para definir los tipos de datos de tabla en el grupo de SQL dedicado.

Tipos de datos admitidos

El grupo de SQL dedicado (anteriormente SQL DW) admite los tipos de datos usados más comúnmente. Para obtener una lista de los tipos de datos admitidos, consulte tipos de datos en la instrucción CREATE TABLE.

Minimizar la longitud de fila

Minimizar el tamaño de los tipos de datos acorta la longitud de fila, lo que conduce a un mejor rendimiento de las consultas. Utilice el tipo de datos más pequeño que sirva para los datos.

  • Evite definir las columnas de caracteres con una longitud predeterminada de gran tamaño. Por ejemplo, si el valor más largo es de 25 caracteres, defina la columna como VARCHAR(25).
  • Evite el uso de NVARCHAR cuando solo necesite VARCHAR.
  • Utilice NVARCHAR(4000) o VARCHAR(8000) cuando sea posible en lugar de NVARCHAR(MAX) o VARCHAR(MAX).

Si usa tablas externas de PolyBase para cargar las tablas, la longitud definida para la fila de la tabla no puede superar 1 MB. Cuando una fila con datos de longitud variable supera 1 MB, puede cargar la fila con BCP, pero no con PolyBase.

Identificar los tipos de datos no admitidos

Si va a migrar la base de datos desde otra base de datos SQL, puede encontrar tipos de datos que no se admiten en el grupo de SQL dedicado. Utilice la siguiente consulta para detectar tipos de datos no admitidos en el esquema de SQL existente:

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;

Soluciones alternativas para los tipos de datos no admitidos

En la lista siguiente se muestran los tipos de datos que el grupo de SQL dedicado (anteriormente SQL DW) no admite, y proporciona alternativas útiles para los tipos de datos no admitidos.

Tipo de datos no admitido Solución alternativa
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
image varbinary
text varchar
ntext nvarchar
sql_variant Divida la columna en varias columnas fuertemente tipadas.
table Convierta en tablas temporales.
timestamp Cambie el código para usar datetime2 y la función CURRENT_TIMESTAMP. Solo se admiten las constantes como valores predeterminados, por lo tanto, current_timestamp no se puede definir como una restricción predeterminada. Si tiene que migrar valores de la versión de fila de una columna de tipo timestamp, use BINARY(8) o VARBINARY(8) para valores de versión de fila NOT NULL o NULL.
xml varchar
tipo definido por el usuario Volver a convertir el tipo de datos nativo cuando sea posible.
valores predeterminados Los valores predeterminados solo admiten literales y constantes.

Pasos siguientes

Para obtener más información sobre el desarrollo de tablas, vea Información general sobre tablas.