Condividi tramite


Tipi di dati di tabella per il pool SQL dedicato (in precedenza SQL Data Warehouse) in Azure Synapse Analytics

Incluso in questo articolo sono raccomandazioni per la definizione dei tipi di dati di tabella nel pool SQL dedicato.

Tipi di dati supportati

Il pool SQL dedicato (in precedenza SQL Data Warehouse) supporta i tipi di dati usati più di frequente. Per un elenco dei tipi di dati supportati, vedere tipi di dati nell'istruzione CREATE TABLE.

Ridurre al minimo la lunghezza della riga

Ridurre al minimo le dimensioni dei tipi di dati riduce la lunghezza della riga, con un miglioramento delle prestazioni delle query. Usare il tipo di dati più piccolo che funziona per i tuoi dati.

  • Evitare di definire colonne di caratteri con una lunghezza predefinita elevata. Ad esempio, se il valore più lungo è di 25 caratteri, definire la colonna come VARCHAR(25).
  • Evitare di usare NVARCHAR quando è necessario solo VARCHAR.
  • Quando possibile, usare NVARCHAR(4000) o VARCHAR(8000) anziché 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 a 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 i 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;

Soluzioni alternative per i tipi di dati non supportati

L'elenco seguente mostra i tipi di dati non supportati dal pool SQL dedicato (in precedenza SQL Data Warehouse) e offre alternative utili per i tipi di dati non supportati.

Tipo di dati non supportato Soluzione
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
Immagine varbinary
text varchar
ntext nvarchar
sql_variant Suddividere la colonna in più colonne fortemente tipizzate.
table Convertire in tabelle temporanee.
timestamp Rielaborare il codice per usare datetime2 e la funzione CURRENT_TIMESTAMP . Solo le costanti sono supportate come impostazioni predefinite, quindi current_timestamp non può essere definita come vincolo predefinito. Se è necessario eseguire la migrazione dei valori di versione delle righe da una colonna di tipo timestamp, usare BINARY(8) o VARBINARY(8) per i valori di versione di riga NOT NULL o NULL.
xml varchar
tipo definito dall'utente Quando possibile, eseguire la conversione nel tipo di dati nativo.
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.