Я подал ошибку против этого во время бета-тестирования SQL Server 2008. Они закрыли его как «исправленный», но затем прокомментировали, что это было дубликатом проблемы Vista. Что меня удивило, потому что оно встречается и в нескольких других комбинациях SSMS / операционной системы, включая Denali CTP1 в Windows 7.
http://connect.microsoft.com/SQLServer/feedback/details/344150/ssms-grid-will-not-display-43-679-characters-from-varchar-max
Итак, я не уверен, почему они назвали это исправленным, потому что это, безусловно, все еще реальное ограничение.
Если у вас <64 КБ, вы можете конвертировать в XML, а затем нажать на результат в режиме сетки. К сожалению, притом, что вы довольно ограничены тем, что SSMS сможет получить для вас. Вам нужно будет экспортировать в плоский файл, как предлагали другие, использовать другую программу для полного извлечения данных или вручную вставить куски по 40000 символов. В вашем примере вы можете сделать что-то вроде этого: </p>
DECLARE @foo TABLE (a VARCHAR(MAX));
INSERT @foo(a) SELECT REPLICATE('A', 8000);
DECLARE @i INT = 1;
WHILE @i < 36
BEGIN
UPDATE @foo SET a += REPLICATE(CHAR(@i+64), 8000);
SET @i += 1;
END
SELECT DATALENGTH(a), a FROM @foo;
SELECT SUBSTRING(a, 1, 40000),
SUBSTRING(a, 40001, 40000),
SUBSTRING(a, 80001, 40000),
SUBSTRING(a, 120001, 40000),
SUBSTRING(a, 160001, 40000),
SUBSTRING(a, 200001, 40000),
SUBSTRING(a, 240001, 40000),
SUBSTRING(a, 280001, 40000)
FROM @foo;
Но вам нужно будет настроить, добавив больше операций для столбцов со значениями> 320K.