[Body] というテーブルに nvarchar(MAX) フィールドがあります。そのフィールドを(かなり)長い文字列に設定しようとしています。文字列が 42531 文字を超える場合、update ステートメントが実行され、他のフィールドが更新されますが、[Body] フィールドは空の文字列に設定されることがわかりました。文字列の任意の場所から 1 文字を削除すると、[Body] フィールドに設定したテキストが含まれます。追加/削除する文字もその位置もこれに影響しません。奇妙な文字やエスケープの問題ではありません。
DECLARE @p1 nvarchar(MAX)
SET @p1 = 'a string longer
than 42531 chars...
with line breaks etc'
UPDATE [dbo].[MyTable] SET [Body] = @p1, CreatedOn = GETDATE() WHERE Id = 15597
どうすればいいの?!nvarchar(MAX) が最大 2GB のデータを保存できることは明らかですが、私はそれに近づくことはできません。