我正在努力在MS SQL 2008R2中实现加密。从CVS文件加载数据,我将这些数据放在临时表中,现在我想将一些数据移到加密的信用卡表中。但是,我不断收到以下错误。插入代码如下,表格defs如下。
客户端ID低于10 - 导致溢出的数字是第一行数据,CC编号。
错误:
Msg 248,Level 16,State 1,Line 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
TempTbl:
ClientID int
。First
,Last
,CC
,Expiration
- 所有varchar(50)
。所有数据似乎都已正确导入。
CreditCard:(目的地表)
Hash varbinary(200)
Encrypted varbinary(400)
plaintext char(16)
lastfour int
servicecode int
expirationdate Date
ClientID int
答案 0 :(得分:0)
语法问题导致溢出: 我对RIGHT函数的使用颠倒了字符和int偏移量,溢出了函数的整数表达式。
正确使用:
RIGHT ( character_expression , integer_expression )