如果我们必须存储nvarchar(10)值SQL Server,那么varbinary列的大小是多少?

问题描述:

我想将字符串数据存储到SQL服务器,但数据应以加密格式存储。所以对于这个我已经使用SQL服务器加密和存储这个值我已经使用varbinary列。但是我对列的大小感到困惑,因为当我加密数据时(字符串值),加密数据的大小增加了。 例如,如果我们必须存储nvarchar(10)值SQL Server,那么varbinary列的大小是多少?

OPEN SYMMETRIC KEY [mykey] DECRYPTION 
BY CERTIFICATE[MyCertificate] 
SELECT LEN(EncryptByKey (KEY_GUID('mykey'),CONVERT(nvarchar(8),'10/10/10'))) 

结果:68

OPEN SYMMETRIC KEY [mykey] DECRYPTION 
BY CERTIFICATE[MyCertificate] 
select CONVERT(nvarchar(8),DECRYPTBYKEY(EncryptByKey (KEY_GUID('mykey'),CONVERT(nvarchar(8),'10/10/10')))) 

Resuls:8

我可以设置varbinary列到100的尺寸,并继续但会有一些空间浪费。

不,不会有任何浪费。你甚至可以使用VARBINARY(MAX)。这就是“VAR”的含义:变量。只有必要的空间将被分配。

此外,担心字节是毫无意义的:现代机器有足够的存储空间可用。

+0

好的,谢谢,但应该有一些计算来决定这个varbinary列的大小,因为我有其他数据列的不同大小,我也需要加密这些,所以只是保持varbinary(一些数字)为任何大小我的意思是小于varbinary列的大小)的数据,这可以吗? – vishwajeetrkale

+0

好的,确实应该有某种程度上的某种计算。但我不知道提供它的任何功能。我的回答是说,通过定义最大尺寸的二进制列,您不必担心它需要的精确尺寸。 –