SSMSは、XMLデータに対して無制限のデータのみを許可します。これはデフォルトではなく、オプションで設定する必要があります。
非常に限られた状況で機能する可能性のあるトリックの1つは、以下のように特別な方法で列に名前を付けて、XMLデータとして扱われるようにすることです。
DECLARE @S varchar(max) = 'A'
SET @S = REPLICATE(@S,100000) + 'B'
SELECT @S as [XML_F52E2B61-18A1-11d1-B105-00805F49916B]
SSMS(少なくともバージョン2012から現在の18.3)では、結果は次のように表示されます
それをクリックすると、XMLビューアで完全な結果が開きます。右にスクロールすると、Bの最後の文字が保持されていることがわかります
ただし、これにはいくつかの重大な問題があります。クエリに列を追加すると効果が失われ、余分な行はすべて最初の行と連結されます。最後に、文字列に<
などの文字が含まれている場合 XMLビューアを開くと、解析エラーで失敗します。
<
を変換するSQLServerの問題を回避する、これを行うためのより堅牢な方法 <
へ など、またはこれらのキャラクターが原因で失敗するのは以下のとおりです(ここでAdam Machanicのクレジットを参照してください)。
DECLARE @S varchar(max)
SELECT @S = ''
SELECT @S = @S + '
' + OBJECT_DEFINITION(OBJECT_ID) FROM SYS.PROCEDURES
SELECT @S AS [processing-instruction(x)] FOR XML PATH('')