理论上varchar(max)
,varbinary(max)
列应该能够存储多达 2GB 的数据,但我不能存储 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 字符)?