Tipos de dados de tabela para piscinas SQL dedicadas (anteriormente SQL DW) em Azure Synapse AnalyticsTable data types for dedicated SQL pool (formerly SQL DW) in Azure Synapse Analytics

Incluído neste artigo estão recomendações para definir tipos de dados de tabela em pool DE SQL dedicado.Included in this article are recommendations for defining table data types in dedicated SQL pool.

Tipos de dados suportadosSupported data types

O pool DE SQL dedicado (anteriormente SQL DW) suporta os tipos de dados mais utilizados.Dedicated SQL pool (formerly SQL DW) supports the most commonly used data types. Para obter uma lista dos tipos de dados suportados, consulte os tipos de dados na declaração CREATE TABLE.For a list of the supported data types, see data types in the CREATE TABLE statement.

Minimizar o comprimento da linhaMinimize row length

Minimizar o tamanho dos tipos de dados encurta o comprimento da linha, o que leva a um melhor desempenho de consulta.Minimizing the size of data types shortens the row length, which leads to better query performance. Utilize o menor tipo de dados que funciona para os seus dados.Use the smallest data type that works for your data.

  • Evite definir colunas de caracteres com um grande comprimento predefinido.Avoid defining character columns with a large default length. Por exemplo, se o valor mais longo for de 25 caracteres, então defina a sua coluna como VARCHAR(25).For example, if the longest value is 25 characters, then define your column as VARCHAR(25).
  • Evite utilizar o NVARCHAR quando necessitar apenas de VARCHAR.Avoid using NVARCHAR when you only need VARCHAR.
  • Quando possível, utilize NVARCHAR(4000) ou VARCHAR(8000) em vez de NVARCHAR(MAX) ou VARCHAR(MAX).When possible, use NVARCHAR(4000) or VARCHAR(8000) instead of NVARCHAR(MAX) or VARCHAR(MAX).

Se estiver a utilizar tabelas externas polyBase para carregar as suas tabelas, o comprimento definido da linha de mesa não pode exceder 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. Quando uma linha com dados de comprimento variável excede 1 MB, pode carregar a linha com o BCP, mas não com a PolyBase.When a row with variable-length data exceeds 1 MB, you can load the row with BCP, but not with PolyBase.

Identificar tipos de dados não suportadosIdentify unsupported data types

Se estiver a migrar a sua base de dados de outra base de dados SQL, poderá encontrar tipos de dados que não sejam suportados em pool 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. Utilize a seguinte consulta para descobrir tipos de dados não suportados no seu esquema 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;

Soluções alternativas para tipos de dados não suportadosWorkarounds for unsupported data types

A lista a seguir mostra os tipos de dados que o pool SQL dedicado (anteriormente SQL DW) não suporta e oferece alternativas úteis para tipos de dados não suportados.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 dados não suportadoUnsupported data type SoluçãoWorkaround
geometriageometry varbináriovarbinary
geografiageography varbináriovarbinary
hierarquiahierarchyid nvarchar(4000)nvarchar(4000)
imagemimage varbináriovarbinary
Textotext varcharvarchar
ntextntext nvarcharnvarchar
sql_variantsql_variant Divida a coluna em várias colunas fortemente dactilografada.Split column into several strongly typed columns.
tabletable Converter-se em mesas temporárias.Convert to temporary tables.
timetamptimestamp Retraia o código para utilizar a data 2 e a função CURRENT_TIMESTAMP.Rework code to use datetime2 and the CURRENT_TIMESTAMP function. Apenas as constantes são suportadas como padrão, por isso current_timestamp não podem ser definidas como uma restrição padrão.Only constants are supported as defaults, so current_timestamp can't be defined as a default constraint. Se precisar de migrar os valores da versão da linha a partir de uma coluna de etiqueta de tempo, utilize BINARY(8) ou VARBINARY(8) para valores de linha NÃO NULOS ou NULOS.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 pelo utilizadoruser-defined type Converta-se de volta para o tipo de dados nativo quando possível.Convert back to the native data type when possible.
valores de incumprimentodefault values Os valores predefinidos suportam apenas as constantes e literais.Default values support literals and constants only.

Passos seguintesNext steps

Para obter mais informações sobre o desenvolvimento de tabelas, consulte a Visão Geral da Tabela.For more information on developing tables, see Table Overview.