Питання 1: Як 8000 персонажів вступають у гру і де мені це слід знати?
Якщо встановити n до 8000, 8000 символів можуть прийти в гру. Потрібно бути в курсі посилань на точність, масштаб та довжину (Transact-SQL) про char, nchar, nvarchar та varchar. Навпаки, встановлення n до max (без лапок) змушує SQL Server зберігати (і повертати) максимальну кількість байтів (як зазначено у вашій цитаті).
Питання 2: чи завжди запит .net для читання даних до цього стовпця завжди повертає повний результат із 100 000+ символами?
Це запитання .Net (не для SQL Server), але читач даних .Net отримує потік байтів. Байт не є символом, і SQL Server повертає байти (не символи). Якщо n встановлено у 8000, а тип даних - nvarchar, SQL Server повертає до 8000 байт, що зчитувач даних .Net може інтерпретувати 4000 символів Unicode. Якщо n встановлено на 8000, а тип даних - varchar, SQL Server повертає до 8000 байт, які .Net читач даних може інтерпретувати до 8000 символів ANSI. Якщо n встановлено на max, а тип даних - nvarchar, SQL Server повертає до 2 ^ 31-1 байт, які читач даних .Net може інтерпретувати як до (2 ^ 31-1) / 2 символів. Якщо n встановлено на max, а тип даних - varchar, SQL Server повертає до 2 ^ 31-1 байт, які читач даних .Net може інтерпретувати до 2 ^ 31-1 символів ANSI.
Якщо ви вирішите використовувати char або varchar (замість nchar або nvarchar), оскільки вони можуть зберігати більше "символів" (точніше: байти), вам потрібно знати, що багато символів Unicode не мають еквівалентного символу ANSI (таким чином, значна частина нашого користувачі світу не зможуть бачити своїх локалізованих / рідних символів у вашому додатку).
varchar(max)
колись викликалиtext
і трактувались як інший тип даних.