Per quanto io abbia promesso che mi sarei limitato con gli errata corrige dei testi Microsoft, ho appena trovato un errore nel Self-Paced Training Kit per l'esame 70-431 che merita di essere segnalato, data la sua gravità. A pagina 113 si dice che, quando si dichiara un tipo di dati char, varchar, nchar oppure nvarchar, il valore indicato tra parentesi rappresenta il numero di byte utilizzati: di conseguenza, nel caso dei tipi Unicode, il numero di caratteri effettivamente memorizzabili equivale alla metà del numero indicato, dato che in Unicode ogni carattere è rappresentato da due byte. In realtà non è così. Infatti, come si legge su MSDN (prendo il caso dei tipi di dato a lunghezza fissa):
char [ ( n ) ] Fixed-length, non-Unicode character data with a length of n bytes.
nchar [ ( n ) ] Fixed-length Unicode character data of n characters.
Dunque, quando si usa nchar (o, analogamente, nvarchar), quello che si specifica è il numero massimo di caratteri, non di byte. Forse l'errore è nato dal fatto che MSDN, per i tipi ANSI, parla di byte, mentre per quelli Unicode fa riferimento ai caratteri. Per essere più coerenti si potrebbe parlare di caratteri anche nel caso di char e varchar, dal momento che, in questi tipi di dato, ogni byte è espresso esattamente con un carattere.