我正在努力在 MS SQL 2008R2 中实现加密。从 CVS 文件加载数据,我将这些数据保存在临时表中,现在我想将其中的一些数据移动到加密的信用卡表中。但是,我不断收到以下错误。插入代码如下,表格定义如下。
客户端 ID 低于 10 - 导致溢出的数字是第一行数据,CC 编号。
错误:
消息 248,级别 16,状态 1,第 4 行 varchar 值“5105105105105100”的转换溢出了一个 int 列。该语句已终止。
插入语句:
OPEN SYMMETRIC KEY CreditCardKey
DECRYPTION BY CERTIFICATE CreditCardCert;
insert into CreditCard
Select
HASHBYTES('SHA1', t.CreditCard),
EncryptByKey(key_guid('CreditCardKey'), t.CreditCard),
'',
RIGHT(4, t.CreditCard),
'1',
t.Expiration,
convert(int, t.ClientID)
From TempTbl t
临时表:
ClientID int
.First
,Last
,CC
,Expiration
-- 全部varchar(50)
。
所有数据似乎已正确导入。
信用卡:(目的地表)
Hash varbinary(200)
Encrypted varbinary(400)
plaintext char(16)
lastfour int
servicecode int
expirationdate Date
ClientID int