Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.