Partager via


Types de données de table pour un pool SQL dédié (anciennement SQL DW) dans Azure Synapse Analytics

Inclus dans cet article, vous trouverez des recommandations pour définir des types de données de table dans un pool SQL dédié.

Types de données prises en charge

Le pool SQL dédié (anciennement SQL DW) prend en charge les types de données les plus couramment utilisés. Pour obtenir la liste des types de données pris en charge, consultez les types de données dans l’instruction CREATE TABLE.

Réduire la longueur des lignes

La réduction de la taille des types de données raccourcit la longueur de ligne, ce qui entraîne de meilleures performances de requête. Utilisez le plus petit type de données qui fonctionne pour vos données.

  • Évitez de définir des colonnes de caractères avec une grande longueur par défaut. Par exemple, si la valeur la plus longue est de 25 caractères, définissez votre colonne comme VARCHAR(25).
  • Évitez d’utiliser NVARCHAR quand vous n’avez besoin que de VARCHAR.
  • Si possible, utilisez NVARCHAR(4000) ou VARCHAR(8000) au lieu de NVARCHAR(MAX) ou VARCHAR(MAX).

Si vous utilisez des tables externes PolyBase pour charger vos tables, la longueur définie de la ligne de table ne peut pas dépasser 1 Mo. Lorsqu’une ligne avec des données de longueur variable dépasse 1 Mo, vous pouvez charger la ligne avec BCP, mais pas avec PolyBase.

Identifier les types de données non pris en charge

Si vous migrez votre base de données à partir d’une autre base de données SQL, vous pouvez trouver des types de données qui ne sont pas pris en charge dans le pool SQL dédié. Utilisez la requête suivante pour découvrir les types de données non pris en charge dans votre schéma SQL existant :

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;

Solutions de contournement pour les types de données non pris en charge

La liste suivante montre les types de données que le pool SQL dédié (anciennement SQL DW) ne prend pas en charge et fournit des alternatives utiles pour les types de données non pris en charge.

Type de données non pris en charge Solution de contournement
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
image varbinary
texte varchar
ntext nvarchar
sql_variant Fractionner une colonne en plusieurs colonnes fortement typées.
table Convertir en tables temporaires.
timestamp Remaniez le code pour utiliser datetime2 et la fonction CURRENT_TIMESTAMP . Seules les constantes sont prises en charge comme valeurs par défaut. Par conséquent, current_timestamp ne peut pas être définie comme contrainte par défaut. Si vous devez migrer les valeurs de version de ligne à partir d’une colonne de type horodatage, utilisez le paramètre BINARY(8) ou VARBINARY(8) pour les valeurs de version de ligne NOT NULL ou NULL.
xml varchar
type défini par l’utilisateur Revenez au type de données natif lorsque cela est possible.
valeurs par défaut Les valeurs par défaut prennent uniquement en charge les littéraux et les constantes.

Étapes suivantes

Pour plus d’informations sur le développement de tables, consultez Vue d’ensemble du tableau.