Відповіді:
Макс. ємність - 2 гігабайти місця, тому ви переглядаєте трохи більше 1 мільярда 2-байтних символів, які вмістяться в NVARCHAR(MAX)
поле.
Використовуючи більш детальні номери інших відповідей, ви повинні мати можливість зберігати
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
у вашому NVARCHAR(MAX)
стовпці (на жаль, цей останній половинний символ витрачений даремно ...)
Оновлення: як зазначав @MartinMulder: будь-який стовпець символів змінної довжини також має 2-х байтові накладні дані для зберігання фактичної довжини - тому мені потрібно було відняти ще два байти від 2 ^ 31 - 1
попередньо визначеної довжини - таким чином ви можете зберігати на 1 символ Unicode менше, ніж Я раніше заявляв.
VARCHAR(MAX)
, якщо вам не потрібна двобайтова підтримка для азіатських, арабських чи кирилицьких мов. Використовуйте, (N)VARCHAR(x)
якщо ви знаєте, що рядок ніколи не буде довше x символів (не використовуйте NVARCHAR(MAX)
для прізвища - використовуйте NVARCHAR(50)
або будь-який сенс для вас)
Від char та varchar (Transact-SQL)
варчар [(n | max)]
Дані символів без змін Unicode. n може бути значенням від 1 до 8000. max вказує, що максимальний розмір пам’яті становить 2 ^ 31-1 байт. Розмір пам’яті - це фактична довжина введених даних + 2 байти. Введені дані можуть мати довжину 0 символів. Синоніми ISO для varchar відрізняються знаками або знаками.
2 ^ 31-1 байт. Отже, трохи менше 2 ^ 31-1 символів для varchar (max) і наполовину для nvarchar (max).