Tipi di dati di tabella per il pool SQL dedicato (in precedenza SQL DW) in Azure Synapse Analytics
Incluso in questo articolo sono raccomandazioni per definire i tipi di dati di tabella nel pool SQL dedicato.
Tipi di dati supportati
Il pool SQL dedicato (in precedenza SQL DW) supporta i tipi di dati usati più comunemente. Per un elenco dei tipi di dati supportati, vedere tipi di dati nell'istruzione CREATE TABLE.
Ridurre al minimo la lunghezza di riga
Ridurre al minimo le dimensioni dei tipi di dati consente di ridurre la lunghezza di riga, con conseguenti prestazioni migliori per le query. Usare il tipo di dati più piccolo adatto ai dati.
- Evitare di definire le colonne di tipo carattere con una lunghezza predefinita elevata. Ad esempio, se il valore più lungo è 25 caratteri, definire la colonna come VARCHAR(25).
- Evitare di usare NVARCHAR quando è necessario solo VARCHAR.
- Quando possibile, usare NVARCHAR(4000) o VARCHAR(8000) invece di NVARCHAR(MAX) o VARCHAR(MAX).
Se si usano tabelle esterne PolyBase per caricare le tabelle, la lunghezza definita della riga della tabella non può superare 1 MB. Quando una riga con dati di lunghezza variabile supera 1 MB, è possibile caricare la riga con BCP, ma non con PolyBase.
Identificare i tipi di dati non supportati
Se si esegue la migrazione del database da un altro database SQL, è possibile trovare tipi di dati non supportati nel pool SQL dedicato. Usare la query seguente per individuare tipi di dati non supportati nello schema SQL esistente:
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;
Alternative per i tipi di dati non supportati
L'elenco seguente mostra i tipi di dati che il pool SQL dedicato (in precedenza SQL DW) non supporta e offre alternative utili per i tipi di dati non supportati.
Tipo di dati non supportati | Soluzione alternativa |
---|---|
geometry | varbinary |
geography | varbinary |
hierarchyid | nvarchar(4000) |
image | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Dividere la colonna in più colonne fortemente tipizzate. |
tabella | Convertire in tabelle temporanee. |
timestamp | Rielaborare il codice per usare datetime2 e la funzione di CURRENT_TIMESTAMP . Solo le costanti sono supportate come valori predefiniti, quindi non è possibile definire current_timestamp come vincolo predefinito. Se è necessario eseguire la migrazione dei valori di versione della riga da una colonna tipizzata timestamp, usare BINARY(8) o VARBINARY(8) per i valori di versione di riga NOT NULL o NULL. |
xml | varchar |
tipo definito dall'utente | Riconvertire nel tipo di dati nativo, se possibile. |
valori predefiniti | I valori predefiniti supportano solo valori letterali e costanti. |
Passaggi successivi
Per altre informazioni sullo sviluppo di tabelle, vedere Cenni preliminari sulle tabelle.