web-dev-qa-db-ja.com

SSMSでntextまたはnvarchar(max)のすべてのテキストを表示するにはどうすればよいですか?

SQL Server Management StudioでNTEXTまたはNVARCHAR(max)のすべてのテキストを表示するにはどうすればよいですか?デフォルトでは、最初の数百文字(255?)しか返されないようですが、プログラムを作成せずにフィールド全体をすばやく表示したい場合があります。 SSMS 2012でさえこの問題を抱えています:(

156
NickG

オプション(クエリ結果/ SQL Server /グリッドページへの結果)

現在のクエリのオプションを変更するには、[クエリ]メニューの[クエリオプション]をクリックするか、[SQL Serverクエリ]ウィンドウで右クリックして[クエリオプション]を選択します。

...

取得された最大文字数
1〜65535の数字を入力して、各セルに表示される最大文字数を指定します。

ご覧のとおり、最大値は64kです。デフォルトははるかに小さいです。

ところで テキストへの結果 にはさらに劇的な制限があります:

各列に表示される最大文字数
この値のデフォルトは256です。この値を大きくすると、切り捨てることなくより大きな結果セットが表示されます。最大値は8,192です。

79
Remus Rusanu

NVARCHAR(MAX)列からフルテキスト(99,208文字)を取得できました。その列だけを([グリッドへの結果])選択して右クリックし、結果をCSVファイルとして保存しました。おもしろいことに、同じクエリを実行しようとして、[ファイルへの結果]を有効にすると、[テキストへの結果]の制限を使用して出力が切り捨てられました。

@MartinSmithが(現在)受け入れられた回答へのコメントとして説明した回避策は、私にとってはうまくいきませんでした(「 '['文字、16進値0x5B、名前に含めてください」)。

176
Eric

クイックトリック

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
105
André Kops

SSMSのアドインを作成しましたが、この問題は修正されています。次の2つの方法のいずれかを使用できます。

「Copy current cell 1:1」を使用して、元のセルデータをクリップボードにコピーできます。

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaksCopy original cell contents

または、「セルビジュアライザー」機能を使用して、外部テキストエディター(notepad ++またはnotepad)でセルの内容を開くことができます。 http://www.ssmsboost.com/Features/ssms-add-in-results-grid -visualizers

(この機能により、任意の外部アプリケーションでフィールドのコンテンツを開くことができます。したがって、テキストであることがわかっている場合は、テキストエディターを使用して開きます。 ):SSMS Results grid visualizers

51

XMLとしてデータを返す

SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'

期待する結果に応じて、SSMSオプションウィンドウで適切な制限を設定してください。 enter image description here

これは、返されるテキストに&の代わりに&amp;のようなエンコードされていない文字が含まれており、XML変換が失敗する場合に機能します。

PowerShellを使用してデータを返す

そのためには、コマンドを実行するマシンに PowerShell SQL Server module がインストールされている必要があります。

すべて設定したら、次のスクリプトを構成して実行します。

Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"

-MaxCharLengthパラメーターを、ニーズに合った値に設定してください。

1
dvlsc

大きなvarchar/text列をすばやく表示する最も簡単な方法:

declare @t varchar(max)

select @t = long_column from table

print @t
0