Tipos de datos de tabla del grupo de SQL dedicado (anteriormente SQL DW) en Azure Synapse AnalyticsTable data types for dedicated SQL pool (formerly SQL DW) in Azure Synapse Analytics

En este artículo se incluyen recomendaciones para definir los tipos de datos de tabla en el grupo de SQL dedicado.Included in this article are recommendations for defining table data types in dedicated SQL pool.

Tipos de datos admitidosSupported data types

El grupo de SQL dedicado (anteriormente SQL DW) admite los tipos de datos usados más comúnmente.Dedicated SQL pool (formerly SQL DW) supports the most commonly used data types. Para obtener una lista de los tipos de datos admitidos, consulte tipos de datos en la instrucción CREATE TABLE.For a list of the supported data types, see data types in the CREATE TABLE statement.

Minimizar la longitud de filaMinimize row length

Minimizar el tamaño de los tipos de datos acorta la longitud de fila, lo que conduce a un mejor rendimiento de las consultas.Minimizing the size of data types shortens the row length, which leads to better query performance. Utilice el tipo de datos más pequeño que sirva para los datos.Use the smallest data type that works for your data.

  • Evite definir las columnas de caracteres con una longitud predeterminada de gran tamaño.Avoid defining character columns with a large default length. Por ejemplo, si el valor más largo es de 25 caracteres, defina la columna como VARCHAR(25).For example, if the longest value is 25 characters, then define your column as VARCHAR(25).
  • Evite el uso de NVARCHAR cuando solo necesite VARCHAR.Avoid using NVARCHAR when you only need VARCHAR.
  • Utilice NVARCHAR(4000) o VARCHAR(8000) cuando sea posible en lugar de NVARCHAR(MAX) o VARCHAR(MAX).When possible, use NVARCHAR(4000) or VARCHAR(8000) instead of NVARCHAR(MAX) or 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.If you're using PolyBase external tables to load your tables, the defined length of the table row can't exceed 1 MB. Cuando una fila con datos de longitud variable supera 1 MB, puede cargar la fila con BCP, pero no con PolyBase.When a row with variable-length data exceeds 1 MB, you can load the row with BCP, but not with PolyBase.

Identificar los tipos de datos no admitidosIdentify unsupported data types

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.If you're migrating your database from another SQL database, you might find data types that aren't supported in dedicated SQL pool. Utilice la siguiente consulta para detectar tipos de datos no admitidos en el esquema de SQL existente:Use the following query to discover unsupported data types in your existing SQL schema:

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 admitidosWorkarounds for unsupported data types

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.The following list shows the data types that dedicated SQL pool (formerly SQL DW) doesn't support and gives useful alternatives for unsupported data types.

Tipo de datos no admitidoUnsupported data type Solución alternativaWorkaround
geometrygeometry varbinaryvarbinary
geographygeography varbinaryvarbinary
hierarchyidhierarchyid nvarchar(4000)nvarchar(4000)
imageimage varbinaryvarbinary
texttext varcharvarchar
ntextntext nvarcharnvarchar
sql_variantsql_variant Divida la columna en varias columnas fuertemente tipadas.Split column into several strongly typed columns.
tabletable Convierta en tablas temporales.Convert to temporary tables.
timestamptimestamp Cambie el código para usar datetime2 y la función CURRENT_TIMESTAMP.Rework code to use datetime2 and the CURRENT_TIMESTAMP function. Solo se admiten las constantes como valores predeterminados, por lo tanto, current_timestamp no se puede definir como una restricción predeterminada.Only constants are supported as defaults, so current_timestamp can't be defined as a default constraint. 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.If you need to migrate row version values from a timestamp typed column, use BINARY(8) or VARBINARY(8) for NOT NULL or NULL row version values.
xmlxml varcharvarchar
tipo definido por el usuariouser-defined type Volver a convertir el tipo de datos nativo cuando sea posible.Convert back to the native data type when possible.
valores predeterminadosdefault values Los valores predeterminados solo admiten literales y constantes.Default values support literals and constants only.

Pasos siguientesNext steps

Para obtener más información sobre el desarrollo de tablas, vea Información general sobre tablas.For more information on developing tables, see Table Overview.