Risposte:
Max. la capacità è di 2 gigabyte di spazio, quindi stai guardando poco più di 1 miliardo di caratteri a 2 byte che si inseriscono in un NVARCHAR(MAX)
campo.
Utilizzando i numeri più dettagliati dell'altra risposta, dovresti essere in grado di memorizzare
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
nella tua NVARCHAR(MAX)
colonna (sfortunatamente, l'ultimo mezzo carattere è sprecato ...)
Aggiornamento: come ha sottolineato @MartinMulder: qualsiasi colonna di caratteri di lunghezza variabile ha anche un overhead di 2 byte per la memorizzazione della lunghezza effettiva - quindi dovevo sottrarre altri due byte dalla 2 ^ 31 - 1
lunghezza che avevo stabilito in precedenza - quindi puoi memorizzare 1 carattere Unicode in meno di Avevo affermato prima.
VARCHAR(MAX)
, se non hai bisogno del supporto a 2 byte per le lingue asiatiche, arabe o cirilliche. Usa (N)VARCHAR(x)
se sai che una stringa non sarà mai più lunga di x caratteri (non usare NVARCHAR(MAX)
per un nome - usa NVARCHAR(50)
o qualunque cosa abbia senso per te)
Da char e varchar (Transact-SQL)
varchar [(n | max)]
Dati carattere a lunghezza variabile, non Unicode. n può essere un valore compreso tra 1 e 8.000. max indica che la dimensione di archiviazione massima è 2 ^ 31-1 byte. La dimensione di archiviazione è la lunghezza effettiva dei dati immessi + 2 byte. I dati inseriti possono avere una lunghezza di 0 caratteri. I sinonimi ISO per varchar sono caratteri variabili o caratteri variabili.
2 ^ 31-1 byte. Quindi, un po 'meno di 2 ^ 31-1 caratteri per varchar (max) e metà di quello per nvarchar (max).