2017-07-14 41 views
1

我想將字符串數據存儲到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的尺寸,並繼續但會有一些空間浪費。

回答

1

不,不會有任何浪費。你甚至可以使用VARBINARY(MAX)。這就是「VAR」的含義:變量。只有必要的空間將被分配。

此外,擔心字節是毫無意義的:現代機器有足夠的存儲空間可用。

+0

好的,謝謝,但應該有一些計算來決定這個varbinary列的大小,因爲我有其他數據列的不同大小,我也需要加密這些,所以只是保持varbinary(一些數字)爲任何大小我的意思是小於varbinary列的大小)的數據,這可以嗎? – vishwajeetrkale

+0

好的,確實應該有某種程度上的某種計算。但我不知道提供它的任何功能。我的回答是說,通過定義最大尺寸的二進制列,您不必擔心它需要的精確尺寸。 –

相關問題