Tipos de dados de tabela no SQL Data Warehouse do AzureTable data types in Azure SQL Data Warehouse

Recomendações para definir tipos de dados de tabela no SQL Data Warehouse do Azure.Recommendations for defining table data types in Azure SQL Data Warehouse.

Quais são os tipos de dados?What are the data types?

O SQL Data Warehouse oferece suporte aos tipos comuns de dados usados.SQL Data Warehouse supports the most commonly used data types. Para obter uma lista dos tipos de dados com suporte, consulte tipos de dados na instrução CREATE TABLE.For a list of the supported data types, see data types in the CREATE TABLE statement.

Minimizar o tamanho da linhaMinimize row length

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

  • Evite definir as colunas de caractere como um tamanho padrão grande.Avoid defining character columns with a large default length. Por exemplo, se o maior valor for 25 caracteres, defina a coluna como VARCHAR(25).For example, if the longest value is 25 characters, then define your column as VARCHAR(25).
  • Evite usar [NVARCHAR][NVARCHAR] quando precisar somente de VARCHAR.Avoid using [NVARCHAR][NVARCHAR] when you only need VARCHAR.
  • Quando possível, use 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 usando tabelas externas do PolyBase para carregar as tabelas, o tamanho definido da linha da tabela não pode exceder 1 MB.If you are using PolyBase external tables to load your tables, the defined length of the table row cannot exceed 1 MB. Quando uma linha com dados de tamanho variável exceder 1 MB, você poderá carregar a linha com BCP, mas não com 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 sem suporteIdentify unsupported data types

Se você estiver migrando o banco de dados de outro banco de dados SQL, poderá encontrar alguns tipos de dados que não têm suporte no SQL Data Warehouse.If you are migrating your database from another SQL database, you might encounter data types that are not supported in SQL Data Warehouse. Use esta consulta para descobrir os tipos de dados sem suporte em seu esquema SQL existente.Use this 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 os tipos de dados sem suporteWorkarounds for unsupported data types

A lista a seguir mostra os tipos de dados para os quais o SQL Data Warehouse não dá suporte e fornece alternativas que você pode usar no lugar dos tipos de dados sem suporte.The following list shows the data types that SQL Data Warehouse does not support and gives alternatives that you can use instead of the unsupported data types.

Tipos de dados sem suporteUnsupported data type Solução alternativaWorkaround
geometriageometry varbinaryvarbinary
geografiageography varbinaryvarbinary
hierarchyidhierarchyid nvarchar(4000)nvarchar(4000)
imagemimage varbinaryvarbinary
texttext varcharvarchar
ntextntext nvarcharnvarchar
sql_variantsql_variant Divida a coluna em várias colunas fortemente tipadas.Split column into several strongly typed columns.
tabelatable Converta em tabelas temporárias.Convert to temporary tables.
timestamptimestamp Refazer o código para usar datetime2 e a função CURRENT_TIMESTAMP.Rework code to use datetime2 and the CURRENT_TIMESTAMP function. Somente as constantes são suportados como padrões, portanto, current_timestamp não pode ser definida como uma restrição padrão.Only constants are supported as defaults, therefore current_timestamp cannot be defined as a default constraint. Se precisar migrar os valores de versão de linha de uma coluna tipada com o carimbo de data/hora, use BINARY(8) ou VARBINARY(8) para os valores de versão de linha NOT NULL ou NULL.If you need to migrate row version values from a timestamp typed column, then use BINARY(8) or VARBINARY(8) for NOT NULL or NULL row version values.
xmlxml varcharvarchar
Tipos definidos pelo usuáriouser-defined type Converta para o tipo de dados nativo quando possível.Convert back to the native data type when possible.
valores padrãodefault values Os valores padrão dão suporte somente a literais e constantes.Default values support literals and constants only.

Próximas etapasNext steps

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