理論上varchar(max)
、varbinary(max)
列には最大 2 GB のデータを格納できるはずですが、5000 文字の Unicode 文字列を格納することはできません。
このトピックに関する他の質問に目を通しましたが、すべて列のサイズを確認することを提案しています。これを行ったところ、関連するすべての列が最大サイズで宣言されていることがわかりました。
同様の質問との主な違いは、保存するときに使用してデータを暗号化しEncryptByKey
ていることであり、それが私が探しているボトルネックだと思います。MSDN から、戻り値の型のEncryptByKey
最大サイズが 8000 バイトであることは わかっていますが、@cleartext
引数の最大サイズは明確ではありませんが、同じであると思われます。
次のコードでエラーが発生します。
OPEN SYMMETRIC KEY SK1 DECRYPTION BY CERTIFICATE Cert1;
DECLARE @tmp5k AS NVARCHAR(max);
SET @tmp5k = N'...5000 characters...';
SELECT EncryptByKey(Key_GUID('SK1'), @tmp5k);
GO
[22001][8152] 文字列またはバイナリデータが切り捨てられます。
大きな文字列 (約 5k の unicode 文字) を暗号化して保存するにはどうすればよいですか?