В SQL Server 2000 и SQL Server 7 размер строки не может превышать 8000 байт. Это означает, что столбец VARBINARY может хранить только 8000 байт (при условии, что он является единственным столбцом в таблице), столбец VARCHAR может хранить до 8000 символов, а столбец NVARCHAR может содержать до 4000 символов (2 байта на символ юникода). Это ограничение связано с объемом внутренней страницы 8 КБ, который использует SQL Server для сохранения данных на диск.
Чтобы сохранить больше данных в одном столбце, вам необходимо использовать типы данных TEXT, NTEXT или IMAGE, которые хранятся в коллекции страниц данных объемом 8 КБ, которые отделены от страниц данных, которые хранят другие данные в одной таблице. Эти страницы данных расположены в структуре B-дерева. С BLOB трудно работать и манипулировать. Они не могут использоваться как переменные в процедуре или функции, и они не могут использоваться внутри строковых функций, таких как REPLACE, CHARINDEX или SUBSTRING. В большинстве случаев вам нужно использовать команды READTEXT, WRITETEXT и UPDATETEXT для управления BLOB.
Для решения этой проблемы Microsoft представила типы данных VARCHAR (MAX), NVARCHAR (MAX) и VARBINARY (MAX) в SQL Server 2005. Эти типы данных могут содержать один и тот же объем данных, которые могут храниться в BLOB (2 ГБ), и они хранятся на страницах данных того же типа, которые используются для других типов данных. Когда данные в типе данных MAX превышают 8 КБ, используется страница с превышением потока. SQL Server 2005 автоматически назначает индикатор перетока на страницу и знает, как управлять строками данных так же, как он манипулирует другими типами данных. Вы можете объявлять переменные типов данных MAX внутри хранимой процедуры или функции и даже передавать их как переменные. Вы также можете использовать их внутри строковых функций.
Корпорация Майкрософт рекомендует использовать типы данных MAX вместо BLOB в SQL Server 2005. На самом деле BLOB-версии устаревают в будущих выпусках SQL Server.
Кредит: http://www.teratrax.com/articles/varchar_max.html
В SQL Server 2005 и SQL Server 2008 , максимальный размер для хранения VARCHAR (MAX) составляет 2^31-1 байт (2,147,483,647 байт или 2 Гб - 1 байт). Размер хранилища - фактическая длина введенных данных + 2 байта. Введенные данные могут содержать 0 символов. Поскольку каждый символ в типе данных VARCHAR использует один байт, максимальная длина для типа данных VARCHAR (MAX) составляет 2 147 483 645.
Полное Интересное чтение для вас: http://www.sql-server-helper.com/faq/sql-server-2005-varchar-max-p01.aspx
Ссылка: http://msdn.microsoft.com/en-us/library/ms143432.aspx
[См. Мой ответ здесь для другой разницы] (http://stackoverflow.com/questions/2009694/is-there-an-advantage-to-varchar500-over-varchar8000/5654947#5654947) и этот пост в блоге [ Ремусом Русану] (http: // rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn /) –
Посмотрите на ссылку: http://stackoverflow.com/q/28980502/1805776 – vicky