回答:
オプション(クエリ結果/ SQLサーバー/グリッドページへの結果)
現在のクエリのオプションを変更するには、[クエリ]メニューの[クエリオプション]をクリックするか、[SQL Serverクエリ]ウィンドウを右クリックして[クエリオプション]を選択します。
...
取得
する最大文字数各セルに表示される最大文字数を指定するには、1〜65535の数値を入力します。
ご覧のとおり、最大は64kです。デフォルトははるかに小さいです。
BTW Results to Textにはさらに大きな制限があります:
各列に表示される最大文字数
この値のデフォルトは256です。この値を大きくすると、切り捨てられずにより大きな結果セットが表示されます。最大値は8,192です。
NVARCHAR(MAX)列から(Results To Grid)を選択して右クリックし、結果をCSVファイルとして保存することで、フルテキスト(99,208文字)を取得できました。結果を表示するには、テキストエディター(Excelではありません)でCSVファイルを開きます。面白いことに、同じクエリを実行しようとしたが、Results to Fileを有効にすると、Results to Text制限を使用して出力が切り捨てられました。
@MartinSmithが(現在)受け入れられた回答へのコメントとして記述した回避策は私にとってはうまくいきませんでした(「 '['文字、16進値0x5B、名前に含まれる」)。
クイックトリック
SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
SSMSのアドインを作成しましたが、この問題はそこで修正されています。次の2つの方法のいずれかを使用できます。
「現在のセルを1:1でコピー」を使用して、元のセルデータをクリップボードにコピーできます。
http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks
または、代わりに、「セルビジュアライザ」機能を使用して外部テキストエディタ(notepad ++またはnotepad)でセルのコンテンツを開くことができます。http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers
(機能により、任意の外部アプリケーションでフィールドのコンテンツを開くことができるため、テキストであることがわかっている場合は、テキストエディターを使用して開きます。コンテンツが画像付きのバイナリデータの場合は、画像として表示を選択します。以下のサンプルでは、画像を開いています。 ):
データをXMLとして返す
SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'
期待する結果に応じて、SSMSオプションウィンドウで適切な制限を設定してください。
あなたが戻っているテキストのようなエンコードされていない文字が含まれていない場合、これは動作します&
代わりの&
XML変換が失敗する原因になりますことを。
PowerShellを使用してデータを返す
これには、コマンドを実行するマシンにPowerShell SQL Serverモジュールをインストールする必要があります。
すべての設定が完了したら、次のスクリプトを構成して実行します。
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
パラメータをニーズに合った値に設定してください。
表示するだけの場合は、これを使用しました。
print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)
最終的に、SMSSのメッセージウィンドウにラインフィードとすべてのコンテンツが表示されます。もちろん、これは単一のセルのみを許可します-複数の行から単一のセルを実行したい場合は、これを行うことができます:
declare @T varchar(max)=''
select @T=@T
+ isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
+ replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T
これを使用して、SQLコードによって生成されたJSON文字列を検証します。そうでなければ読みにくい!
大きなvarchar / text列をすばやく表示する最も簡単な方法:
declare @t varchar(max)
select @t = long_column from table
print @t