Почему во всей этой дискуссии не упоминалось о UTF-8? Возможность хранить полный диапазон символов Юникода не означает, что нужно всегда выделять два байта на символ (или «кодовую точку», чтобы использовать термин UNICODE). Все ASCII - это UTF-8. Проверяет ли SQL Server для полей VARCHAR (), что текст является строгим ASCII (то есть бит нулевого верхнего байта)? Я надеюсь, что нет.
Если вы хотите хранить Unicode и хотите совместимости со старыми ASCII-приложениями, я бы подумал, что использование VARCHAR () и UTF-8 было бы волшебной пулей: он использует больше места только тогда, когда нужно.
Для тех из вас, кто не знаком с UTF-8, могу я порекомендовать учебник для начинающих .