2009-09-01 12 views
1

が表示されます。SSMSとSQLCMDは、SSMSでのみ最初の8000文字

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

私は最初の8000の文字が表示され参照してください。グリッドに設定ツール>>オプション>>クエリ結果>> >> SQL Serverの結果はをテキストに65534と結果に設定されている私はSQLCMDからこれを実行しようとすると、また8192

に設定されています

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

私はわずか8000人のチャレーターしか見ません。

フラグ-y 0は1 MBに設定されています。しかし、私は8000文字以上ではありません。

何が問題なのですか?

おかげで、
_UB

答えて

3

REPLICATE出力は、データ型の入力に基づいています。ここではsqlcmdについて説明します。

文字列式は、タイプVARCHAR(MAX)またはNVARCHAR(MAX)でない場合、 REPLICATEは8,000バイトに戻り値 を切り捨て。 が8,000バイトを超える場合は、 文字列式を明示的に の適切な大きい値の データ型にキャストする必要があります。

だから、

、このSELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)

とSSMSを使用するには、すべてのテキストデータを示したことはない(もクエリアナライザがした)

+0

ああ...返信。私はそれを知っていた。投稿する前にそれを考えなかっただけです。私の悪い。 お返事ありがとうございます。 –

0

VARCHAR(MAX)は、MSDNから8000文字

see here

を保持することができるだけである:

のvarchar [(N |最大)] - 可変長の非Unicode文字 データ。 nは1〜 8000の値にすることができます。最大は、ヨセフが(下記)テキストまたはntextのデータ型を使用し、より多くを保持するために、言うように最大 ストレージサイズが2^31-1バイト

ですが、あなたはそれを検索できるようにする場合ことを示しています、フルテキストインデックスのいくつかの形式を有効にする必要があります。

Better Link

+0

varchar型(max)はLOBタイプです!あなたの見積もりは実際には "最大値は最大記憶容量が2^31-1バイトであることを示しています" – gbn

+0

私の貧困層に関するコメントはこちらhttp:// docを参照してください。完全なレイアウトについては、ddart.net/mssql/sql70/da-db_1.htmを参照してください。また、最大サイズではなくストレージサイズです。 – CodeMonkey1313

+0

さらに悪いことに、新しいリンクは、varchar(max)*がテキストデータ型* – gbn

関連する問題