2009-09-01 1 views
1

В SSMS, когда я пытаюсь выполнить:ВСС и Sqlcmd отображаются только первые 8000 символов

SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))  

Я вижу только первые 8000 символов отображаются. Настройки Tool >> Результаты Параметры >> Запрос >> Sql Server >> Результаты на сетке установлен на 65534 и Результаты в текст установлен в 8192.

Кроме того, когда я пытаюсь запустить это из SQLCMD

sqlcmd -S Server -E -y 0 -Q "SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))" -o out.txt 

Я вижу только 8000 charecters.

Флаг -y 0 Предполагается установить его до 1 МБ. Но я не более 8000 символов.

В чем может быть проблема?

спасибо,
_UB

ответ

3

REPLICATE выход основан на вводе типа данных. Таким образом, это объясняет sqlcmd.

Если выражение строка не типа VARCHAR (макс) или NVARCHAR (макс), REPLICATE обрезает возвращаемое значение в 8000 байт. Для возврата значений более 8000 байт, Строковое выражение должно быть явно , присвоенное соответствующему большому значению типа данных .

Таким образом, использовать этот SELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)

И SSMS никогда не проявляла все текстовые данные (и не делал Query Analyzer)

+0

ahh ... REPLICATE. Я знал это. Просто не думал об этом до публикации. Виноват. Спасибо за ответ. –

0

VARCHAR (MAX) способен только удерживать 8000 символов

see here

Из MSDN:

VarChar [(п | макс)] - Знак переменной длины, не-Юникод данные. n может быть значением от 1 до 8000. макс означает, что максимальная размер хранения 2^31-1 байт

Как говорит Джозеф (ниже), чтобы держать больше, использовать текст или NTEXT тип данных, но если вы хотите, чтобы быть в состоянии найти, что , то вам понадобится некоторая форма полнотекстового индексирования.

Better Link

+0

VARCHAR (макс) тип LOB! Ваша цитата на самом деле говорит, что «max указывает, что максимальный размер хранилища составляет 2^31-1 байта» – gbn

+0

моих приложений на плохой ссылке, см. Здесь http: // doc.ddart.net/mssql/sql70/da-db_1.htm для полного макета. Кроме того, это размер хранилища, а не максимальные символы. – CodeMonkey1313

+0

Еще хуже: новая ссылка для SQL 7, которая не имеет varchar (max), которая * заменяет текстовый тип данных * – gbn

Смежные вопросы